Posts
Can someone help me get Pygame working? [Workaround Found]
No idea where else to ask this.
I'm trying to get PyGame working on my machine. Installed using sudo apt install python3-pygame and it installs fine, but when I try to run a file that imports pygame, I get a module error telling me there's no module named pygame that exists. Nothing I've looked into online seems to help. I thought, maybe since the file is being run out of my Documents folder and pygame is installed in my root folder, that I'd import pygame directly from the root. I used sys.path.insert(1, '/lib/python3/dist-packages') to insert the folder and then imported pygame, which changed the error to from pygame.base import * # pylint: disable=wildcard-import; lgtm[py/polluting-import]. I have no idea what's going on or how to fix this. Most threads online I see are for Windows, so I'm not sure how much the advice applies to Linux, and the ones that do specify for Linux have conflicting advice or don't make sense to me. I'm just trying to get the damn thing to work.
::: spoiler System Specs: System: Kernel: 6.14.0-37-generic arch: x86_64 bits: 64 compiler: gcc v: 13.3.0 Desktop: Cinnamon v: 6.4.8 tk: GTK v: 3.24.41 wm: Muffin dm: LightDM Distro: Linux Mint 22.1 Xia base: Ubuntu 24.04 noble Machine: Type: Laptop System: HP product: HP Laptop 15-fc0xxx v: N/A serial: Chassis: type: 10 serial: Mobo: HP model: 8B2F v: 52.42 serial: part-nu: 9Q1E9UA#ABA UEFI: AMI v: F.10 date: 12/21/2023 Battery: ID-1: BAT0 charge: 34.3 Wh (100.0%) condition: 34.3/34.3 Wh (100.0%) volts: 12.7 min: 11.2 model: HP Primary serial: status: full CPU: Info: quad core model: AMD Ryzen 5 7520U with Radeon Graphics bits: 64 type: MT MCP arch: Zen 2 rev: 0 cache: L1: 256 KiB L2: 2 MiB L3: 4 MiB Speed (MHz): avg: 3515 high: 4003 min/max: 400/4386 boost: enabled cores: 1: 3987 2: 3988 3: 2457 4: 1831 5: 3973 6: 3902 7: 4003 8: 3985 bogomips: 44717 Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm Graphics: Device-1: AMD Mendocino vendor: Hewlett-Packard driver: amdgpu v: kernel arch: RDNA-2 pcie: speed: 16 GT/s lanes: 16 ports: active: eDP-1 empty: DP-1, DP-2, HDMI-A-1, Writeback-1 bus-ID: 03:00.0 chip-ID: 1002:1506 temp: 60.0 C Device-2: Chicony HP True Vision HD Camera driver: uvcvideo type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 bus-ID: 5-1:2 chip-ID: 04f2:b78f Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.6 driver: X: loaded: amdgpu unloaded: fbdev,modesetting,vesa dri: radeonsi gpu: amdgpu display-ID: :0 screens: 1 Screen-1: 0 s-res: 1366x768 s-dpi: 96 Monitor-1: eDP-1 mapped: eDP model: BOE Display 0x0949 res: 1366x768 dpi: 101 diag: 395mm (15.5") API: EGL v: 1.5 platforms: device: 0 drv: radeonsi device: 1 drv: swrast gbm: drv: kms_swrast surfaceless: drv: radeonsi x11: drv: radeonsi inactive: wayland API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 25.2.8-0ubuntu0.24.04.2 glx-v: 1.4 direct-render: yes renderer: AMD Radeon 610M (radeonsi raphael_mendocino LLVM 20.1.2 DRM 3.61 6.14.0-37-generic) device-ID: 1002:1506 Audio: Device-1: AMD Rembrandt Radeon High Definition Audio vendor: Hewlett-Packard driver: snd_hda_intel v: kernel pcie: speed: 16 GT/s lanes: 16 bus-ID: 03:00.1 chip-ID: 1002:1640 Device-2: AMD ACP/ACP3X/ACP6x Audio Coprocessor vendor: Hewlett-Packard driver: snd_pci_acp6x v: kernel pcie: speed: 16 GT/s lanes: 16 bus-ID: 03:00.5 chip-ID: 1022:15e2 Device-3: AMD Family 17h/19h HD Audio vendor: Hewlett-Packard driver: snd_hda_intel v: kernel pcie: speed: 16 GT/s lanes: 16 bus-ID: 03:00.6 chip-ID: 1022:15e3 API: ALSA v: k6.14.0-37-generic status: kernel-api Server-1: PipeWire v: 1.0.5 status: active with: 1: pipewire-pulse status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin Network: Device-1: Realtek RTL8852BE PCIe 802.11ax Wireless Network [1T1R] vendor: Hewlett-Packard driver: rtw89_8852be v: kernel pcie: speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 02:00.0 chip-ID: 10ec:b85b IF: wlp2s0 state: up mac: Bluetooth: Device-1: Realtek Bluetooth Radio driver: btusb v: 0.8 type: USB rev: 1.0 speed: 12 Mb/s lanes: 1 bus-ID: 1-2:2 chip-ID: 0bda:b85d Report: hciconfig ID: hci0 rfk-id: 4 state: down bt-service: enabled,running rfk-block: hardware: no software: yes address: Drives: Local Storage: total: 476.94 GiB used: 400.83 GiB (84.0%) ID-1: /dev/nvme0n1 vendor: Samsung model: MZVL4512HBLU-00BH1 size: 476.94 GiB speed: 63.2 Gb/s lanes: 4 serial: temp: 40.9 C Partition: ID-1: / size: 467.89 GiB used: 400.82 GiB (85.7%) fs: ext4 dev: /dev/nvme0n1p2 ID-2: /boot/efi size: 511 MiB used: 6.1 MiB (1.2%) fs: vfat dev: /dev/nvme0n1p1 Swap: ID-1: swap-1 type: file size: 2 GiB used: 1.59 GiB (79.4%) priority: -2 file: /swapfile Sensors: System Temperatures: cpu: 69.9 C mobo: N/A gpu: amdgpu temp: 59.0 C Fan Speeds (rpm): fan-1: 4170 fan-2: 0 Repos: Packages: 3627 pm: dpkg pkgs: 3601 pm: flatpak pkgs: 26 No active apt repos in: /etc/apt/sources.list No active apt repos in: /etc/apt/sources.list.d/amdgpu-proprietary.list Active apt repos in: /etc/apt/sources.list.d/amdgpu.list 1: deb https: //repo.radeon.com/amdgpu/6.2/ubuntu noble main Active apt repos in: /etc/apt/sources.list.d/cappelikan-ppa-jammy.list 1: deb [signed-by=/etc/apt/keyrings/cappelikan-ppa-jammy.gpg] https: //ppa.launchpadcontent.net/cappelikan/ppa/ubuntu jammy main Active apt repos in: /etc/apt/sources.list.d/github-cli.list 1: deb [arch=amd64 signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https: //cli.github.com/packages stable main Active apt repos in: /etc/apt/sources.list.d/google-chrome.list 1: deb [arch=amd64] https: //dl.google.com/linux/chrome/deb/ stable main Active apt repos in: /etc/apt/sources.list.d/mullvad.list 1: deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=amd64] https: //repository.mullvad.net/deb/stable noble main Active apt repos in: /etc/apt/sources.list.d/official-package-repositories.list 1: deb http: //packages.linuxmint.com xia main upstream import backport 2: deb http: //archive.ubuntu.com/ubuntu noble main restricted universe multiverse 3: deb http: //archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse 4: deb http: //archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse 5: deb http: //security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse Active apt repos in: /etc/apt/sources.list.d/rocm.list 1: deb [arch=amd64] https: //repo.radeon.com/rocm/apt/6.2 noble main Active apt repos in: /etc/apt/sources.list.d/unit193-encryption-noble.list 1: deb [signed-by=/etc/apt/keyrings/unit193-encryption-noble.gpg] https: //ppa.launchpadcontent.net/unit193/encryption/ubuntu noble main Active apt repos in: /etc/apt/sources.list.d/google-chrome.sources 1: deb [arch=amd64] https: //dl.google.com/linux/chrome-stable/deb/ stable main Active apt repos in: /etc/apt/sources.list.d/megaio.sources 1: deb https: //mega.nz/linux/repo/xUbuntu_24.04/ ./ Info: Memory: total: 8 GiB note: est. available: 7.01 GiB used: 5 GiB (71.4%) Processes: 368 Power: uptime: 16h 43m wakeups: 3 Init: systemd v: 255 target: graphical (5) default: graphical Compilers: gcc: 13.3.0 alt: 11/12 Client: Unknown python3.12 client inxi: 3.3.34 :::
Also, as I was typing my system specs, a random website called https://termbin.com/jdpt opened with all my system specs on it. I don't know what this is or how it opened or why, and I'm lowkey scared but it's nifty ig. Anyone know how that opened?
Edit: Oh, also, I have an IDE and I know I can get it to run in the IDE because I had to for a project last semester, but I'm trying to avoid it and work on everything in text editor and from the terminal as a challenge to myself. Also pygame runs like shit through my IDE (Pycharm)
EDIT: Got one solution from a classmate in discord. I installed a virtual environment following this link (provided by lokalhorst below). After, I had to run source venv/bin/activate in the home folder of the project, where venv is the name of the virtual environment I created. This turned my terminal into a... something, I think a virtual environment. Anyways there's now a (venv) at the very start of the terminal entries now, and pygame works fine.
Ideally, I would still like to be able to run it without actually using a virtual environment. Again according to lokalhorst (huge thanks to you btw), running a virtual environment is best practice instead of modifying the OS python install, but I'm not sure if I want to have to run a venv every time I make a project. I'll figure that out later though, maybe at some point make an executable that doesn't require a venv or something. idk, still figuring things out.
Github Command Line Setup and Flow
Whoo boy, this is probably going to get a lot of attention.
::: spoiler Background and Purpose I'm not an expert at Github or using git from the terminal. As a matter of fact, I've found it very confusing. So, I've written my own guide to sort of implant the process in my head and help out other dumb dumbs like me. Feel free to leave your commentary and suggestions in the comments. Most of the process of this guide can be found online, but Reddit sucks now and the guides on Github aren't all in one synthesized, cohesive guide for set up, at least not that I could find. Relevant links are listed in most steps.
::: spoiler Changelog Version 1.01 of this guide. V1.0: initial post V1.1: made more explicit the fact that you can change the SSH key name in step 1. Added additional commentary in step 3. Provided a general, brief overview of the process. Added additional instructions in step 3. :::
Usage guide: Each "step" is a stage in the process. Spoilers labelled "Commentary" contain additional information and author commentary. Spoilers labelled "Instructions" contain the instructions relevant to the step.
Overview: Create an SSH key on the machine you're using, then add it to your machine's agent. Following that, paste the .pub key into your github account, and then log into gh cli from the terminal to authorize git pushes to the registered account.
Step -1: Create a github account.
- Navigate to Github.com and create an account with an email of your choice.
Step 0: Install Github CLI.
::: spoiler Commentary
-
Github's CLI software allows you to make a Github repo from the terminal. This link takes you to the installation page for Debian/Ubunutu linux distrubutions. The page has a sidebar with other OS installation instructions. There's a bunch of terminal code there to copy and paste into your own terminal, all that's needed is sudo permissions. :::
-
Follow this link for detailed installation instructions.
Step 1: Generating an SSH key
::: spoiler Commentary SSH stands for Secure Shell and, in brief, is what computers use to talk to each other. It relies on keys to work. In order to push to Github from the terminal/create repositories, you'll need an SSH key to connect your local machine to Github's servers and your github account. :::
- Following is a summary of this link: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.
::: spoiler Instructions
-
First, paste the following command into your terminal and replace the example email to whatever email you signed up with Github.
ssh-keygen -t ed25519 -C "[email protected]". The second argument in the command (ed25519) is the encryption algorithm. If you have a different one you want to use, replace that with the algorithm you want (not advised). NOTE: DO NOT JUST HIT ENTER, if you wish to change the name see the next bullet point. -
The followup prompt asks where you'd like to save the key. The stuff inside the parenthesis is the default location AND the default name. Hit enter to save it XOR type in a directory and file name to save the key under/in. You can use the same default directory and just change the name if you'd like.
-
The next followup prompt asks for a password. Give it one. On terminal, you won't see anything when you start typing the password; this is normal. If you mess up, just hold backspace for a while and then start typing again.
-
Next step is add the SSH key to your SSH agent. Prime the ssh agent in the background by putting
eval "$(ssh-agent -s)"into the terminal. Then, just typessh-add ~/.ssh/name-of-your-keyinto your terminal, replacing name-of-your-key with the name of your key established in the previous steps. At this point, your key is generated and ready for use. There is another step on the website, but I don't know if it's needed or useful; I didn't use it so whatever. :::
Step 2: Add your SSH key to your github account.
- Following is a summary of this link: https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
::: spoiler Instructions
-
Open the .pub document in the folder you saved your key to, and copy the text. For CLI: type
cat ~/.ssh/name-of-your-key.pubinto your terminal, replacing name-of-your-key with the name of your key. This will output a bunch of text into your terminal, copy that text. If you saved the key to a different folder, replace~/.sshwith the folder's directory. -
On github, navigate to your account's settings page, and find the section titled "SSH and GPG keys." Under the section titled SSH keys, click "New SSH key," give it a title, and paste your key into the textbox.
-
Note: This process can be done via the terminal. The instructions will not be detailed here, but use
gh auth loginand follow the SSH path. :::
Step 3: Authorize your account and make primary email
::: spoiler Commentary
- You'll want to authenticate git with your github credentials. I'm not sure if this is strictly necessary, but if you want to create a repo on github from your terminal, I imagine this is required. I also imagine this is required anyways but I'm not an expert.
- After this stage, you should be good to go for anything else. For example, if you're doing this process to get a new machine connected to your github, I think here is generally up to what you need :::
::: spoiler Instructions
- In terminal, type
gh auth login, and follow the command prompts. When it asks for SSH versus HTTPS, select HTTPS, use ctrl-shift-c to copy the code given, then hit enter to open a link to github's login page in your browser. Select the account you want to use, then paste the code. If you get the terminal output "Logged in as account-name" where account-name is your account name, then it worked. - If git doesn't have an email/user name to associate with you, it'll throw an error telling you what to do. Basically, run
git config --global user.email "[email protected]"replacing [email protected] with your email, and then run 'git config --global user.name "Your Name"' replacing Your Name with whatever name you'd like. :::
Step 4: Make a repository.
::: spoiler Commentary
-
Now, you can make Github repositories from your terminal. Use the command
gh repo createwith no arguments to start the process. From here, you can manually create a new repo on Github, either from scratch or from a template repository. However, if you've started a project on your machine locally, and want to push it as a repo to Github, you'll have to turn it into a repo. This entire step follows that process. The directions though, are more or less straight from thegh repo createline following the "Push an existing local repository to github.com" path. You just need to do an extra step is all. ::: -
Following is (sort of) a summary of this link: https://cli.github.com/manual/gh_repo_create, as well as the directions from
gh repo create.
::: spoiler Instructions
- Before you can take a folder from your machine and turn it into a repo on github, you'll need to turn it into a repo. Open the folder in your terminal, or navigate there manually from the terminal using
cd. Then, typegit initand press enter. - Once repo-ified, use
gh repo create. The followup asks for the path; if you're not already in the current directory in your terminal for the repo, paste the file address for the repo. Otherwise, type a period and proceed from there. Give the repo a name, possibly a description, make it public or private, and add a remote. - Add a remote. Do it. Otherwise, you'll have trouble later actually pushing to the dang thing from your terminal. Learn from my mistakes. :::
Step 5: Git flow.
::: spoiler Commentary
-
"Pushing" means taking all the changes to a repo made on your machine (local changes) and putting them in a remote repository. Essentially, it's syncing the remote location of the repository with the local repository, with the remote repository inheriting changes from the local. The git program lets you push files and changes to files to github. Very nifty program, but very confusing, especially when merge conflicts start to crop up. This guide does not deal with merge conflicts because I do not know how to handle merge conflicts properly and they scare me. This step is more or less an overview of the flow to pushing changes to github. :::
-
Following is a self-written guide with no references to the internet, just what I've been taught previously. Guides for this process surely exist.
::: spoiler Instructions
-
First, all the changes to the local repository need to be staged, essentially gathered together. From the repo's local directory, use
git add .to stage all changes made to the repository. If there's specific files you want to stage, replace the period with the name of the file. -
Once added, the changes will need to be committed. This essentially is just preparing the changes made to be sent to the remote repo. Use the command
git commit -mfollowed by a message to tag the commit with. The commit must have a message. If you don't include -m in the command, you'll be sent to the terminal file editor; I don't know how to use it because it scares me. If your message uses spaces, enclose the message in quotation marks. -
Once committed, you're ready to push. Use
git pushto send the changes up. For the first push, you'll need to set up the upstream branch first, which can be done in the first push to the repository. What's an upstream branch you ask? I have no idea. Use the commandgit push --set-upstream origin masterto push the changes. If you try togit pushwithout doing this first, it'll tell you to do it first. -
Now, if you make changes to the local repo, you can follow this entire step to add, commit, and then push the changes. If someone else makes changes to the remote repo, you can sync your local machine with those changes by doing
git pullin the repo. -
If you want to copy an entire repo from Github to your machine without already having it on there, use
git clone https://github.com/repo-name-goes-herewhere repo-name-goes-here is the name of the repo. I don't believe you need to set up git authentication for this, but for pushing changes you likely will. :::
Step i: No set remote.
- If you made the same mistake as me and did not give a remote, you will have troubles. I did. This link helps you out with fixing it.
Saline Nasal Rinse Experimentation
My ENT a few years back gave me explicit instructions to use a nasal rinse morning and night. I've been using those little packets you can buy from various stores, but since the contents are literally baking soda and salt, I've decided to try my hand at making my own saline rinse solutions. Getting the ratios right is a touch difficult, so what follows are my notes so far.
TL;DR: Current least irritating solution is 1/2 teaspoon each of baking soda and salt with 8 ounces of water.
Kosher Salt and Baking Soda: Suggested recipe from the internet, 3 teaspoons salt to 1 teaspoon baking soda. Mix ingredients, then 1 teaspoon of the solution to 8 ounces of boiled (water that has been boiled).
Results: very irritating, uncomfortable. unsure whether kosher salt, baking soda, or solution not properly dissolved.
Sea Salt vs Kosher salt, no baking soda. 1/2 teaspoon to 8 ounces of boiling water each, waiting for each to cool. test results: sea salt produced no irritation, only a strange sensation mildly akin getting sea water up my nose. kosher salt produced a very minor irritation. Only 1 trial performed.
Sea salt vs Kosher salt, baking soda added. 1/2 teaspoon of either salt and 1/2 teaspoon of baking soda, 8 ounces of boiling water each, waited for solutions to cool. Mixing procedure notes: water fizzed up when poured over the solutions. used small white ceramic bowls, both solutions appeared milky white, sea salt solution to a greater degree. unsure if lighting issue, reflecting of the ceramic bowl on the liquid issue, or some other unknown variable. Test results: sea salt + baking soda solution produced very minor irritation, slightly greater than the irritation produced from kosher salt alone. Kosher salt + baking soda solution produced a greater amount of irritation, less than the suggested formula from the internet.
More trials on each needed. More types of salts needed. Salts used: sea salt from the sea salt grinder sold by Aldi's, kosher salt walmart brand. baking soda used: walmart brand baking soda. Salts to experiment with: canning salt, other brands of sea salt.
Wikihow suggests 1/4 teaspoon or 1/2 teaspoon of salt and equal amount baking soda. 1/2 teaspoon was tested, possibly do additional tests for 1/4 teaspoon. Internet recipe performed with Kosher salt and produced significant irritation, however, previous experiments showed Kosher salt on its own was noticeably more irritating than sea salt, possibly test internet recipe with sea salt to compare.
Prior to these tests, I created 8 cups of saline solution following 2.5 grams of sea salt to 8 ounces (1 cup) of water, as per I believe wikihow's instructions. Accidentally added more salt than called for due to scale powering off after a brief period of neglect. Stored solution in a large glass mason jar in my bathroom's... uh, pantry section I guess. My bathroom has a pantry without a door. Don't ask me, I rent this place. Anyways I used the solution to refill my nasal bottle, but after some days I noticed feeling slightly ill after using the solution. Unsure if infection caught from external circumstances or if solution became contaminated while use. Did not record time it was present in my bathroom for, or precisely when the solution began to produce strange symptoms after use. Upon preparing to use the last amount of the solution, noticed white particles floating in the liquid, unsure if undissolved salt or some other matter. Either way storage in this manner is likely not ideal but very convenient. Unsure how to proceed with storage. Store dry solution possibly, and partition out with boiled water as needed? Less convenient, especially since I go through 8 ounces of saline solution in about 2-3 days (4-7 uses). Attempt the large mason jar strategy, but store elsewhere? Humidity and heat from showers may have accelerated bacterial growth, perhaps storing in a drier, colder place may help. Storing in fridge is ideal but consumes a lot of space, maybe smaller reserves are ideal (2 cup mason jars are plentiful, replenish the nasal rinse device and store maybe 2 jar reserves in fridge for later use).
Nasal rinse device: Niel Med's squeeze bottle. Been using it for a while, directions instruct disposal of bottle after a month of use but that's dumb and wasteful, just clean the bottle with soap and water every once in a while, or bleach it if concerned about bacterial growth.
Good cloud alternatives for Google Docs?
First, I am unable to host. My apartment wifi forbids it and I'm too poor to afford my own wifi.
Is there a good alternative to google docs? Preferably on the cloud, if not then that's fine. I know LibreOffice writer exists but to my knowledge it lacks Doc's document tab thing, which I make extensive use of, and cloud services. I'm trying to get off Google as much as I can, but the cloud hosted aspect of Docs is very useful, both for sharing links to documents quickly and for opening up a document on any of my 3 devices without having to sync or update the documents manually.
Music should never be censored for any reason.
I'm so fucking tired of clicking on a song and finding out it's the fucking censored version halfway through. It genuinely pisses me off, even if the censors are well done, it still fucks up the flow of the music. Songs should never be censored regardless of the amount of swears and innuendos; they're a form of expression by artists and creators. Oh, what about the kids? Yeah fuck right off. Parent your children better. They're eventually going to learn what curses are anyways.
HYJR or HYJK for a team name?
HYJR for hydrangea and HYJK for hijack.
Context: Two of my friends have OCs born from a different franchise. They once paid me to write a fanfic of their characters and after that those OCs more or less became muses in a way. All 3 of us are RWBY fans to some degree and a conversation came around to a RWBY fan fic of the OCs. All this just to say the character names absolutely do not follow RWBY naming conventions lol. Including my own character, the possible initials are (h,g), (y,b), and (j,m), since last name initials can be used as well. After a lot of thought I came to these two names. Well, I came up with a lot more but these two are the final contenders.
HYJR would reference hydrangeas and match the colors of the team leader, but it's a bit of a stretch to get hydrangea from HYJR.
HYJK sounds very much like hijack and so the connection is obvious, plus it sounds cool, but the word doesn't really call to mind any colors. Then again, 3 of 4 team members don't have colors for names, and the fourth one will have whatever name fits the team name.
Help with Morphe for YouTube?
Noticed a thing happening lately with my YouTube app (patched by Morphe) where after a video plays for a bit, it'll stop on a frame while the audio continues, then resume playing, leaving audio and video desynced. Not sure what's causing it, and no idea where else to ask this since there's no Morphe community and Morphe isn't revanced.
Edit: Pausing and then unpausing the video fixes it temporarily by rushing the video forward, until it happens again shortly after. Length of the pause does not matter. Its technically a workaround but leaves me pausing every like 30 seconds or less.
Restarting the app doesn't work and re-patching the app didn't work. Haven't tested uninstalling and reinstalling from scratch.
Edit 2: Restarting my device seems to have fixed it, can't be 100% the issue won't crop up again since I don't actually know what the issue even was.
Recommendations for a dark, noir Jazz album or playlist?
Apologies if this doesn't belong in this community. I'm looking for something reminiscent of 40's detective dramas. You know, the black and white feature films with the gritty detective crawling through the grimy undercity chasing down a serial killer sort of vibe, or maybe the grizzled taxi driver smoking a cigarette waiting out the rain in a New York alleyway kind of vibe. Perhaps a steel worker walking the lonely way home from a long day at the factory type of vibe. Any time I look on Youtube I get tons of hits, most of which I'm certain are AI, and I'm just looking for something real in a sense. Closest I found was a playlist called doomer jazz.
Edit: Hey thanks to everyone for responding! Def gonna check these out the next time it's raining at night
Anyone want to play Peak with me?
I played it once with a couple but they're more interested in other games, and no one else in my friend group wants to play it.
My limited experience with the exo warriors bond against the bugs. Just the guns.
So far have only used the armor, the primary, the secondary, and the support weapon, against the bugs. Oddly enough I have not used any of the exosuits in the exosuit pack
Gallant: One handed smg with medium pen and insanely high rate of fire. Practically useless. The most prominent enemy with medium pen (hive guard) got buffed to heavy armor. Also, the vertical recoil is so high on the base gun, you have to aim at the floor to hit your sprays, or aim at things right in front of you. Almost impossible to aim. Also also, it deals almost no damage. One whole default clip to take down one of the new warrior strains. Might be good with extended mag and vertical grip, but I can't say. You chew through ammo like no one's business, kill 1 enemy while missing half your shots, and then get overrun and die. Maybe skill diff, idk, but there are better guns.
Bullet Storm: S-tier strategem and probably first on the nerfing block. It's 2 disposable stalwarts with 1 mag 300 bullets each on a 90ish second cooldown. Very high rate of fire but very reasonable recoil and great accuracy. It's light pen but that doesn't matter at all because of how effective it is against everything smaller than a charger. Literally my new primary. Since you get two each drop and the cooldown is so short, it can literally supply the support weapon for a whole squad, opening slots for other things. This thing is godlike against the bugs, especially against the new strain.
Missile Pistol: Literally useless. You get 4 lock on medium pen missiles. Best you can do is kill a brood commander with one hit, maybe. No reason to bring this over the grenade pistol since the splash is non existent. You can't even crack armor plates with it. Might be better against bots if it can break the bunker turrets or take out fabricators from a distance. IMO though this should be heavy pen.
Armor perk: It's good, I suppose. I felt the extra speed occasionally with the light armor and the slide distance once or twice, but I'm not sure how much a difference it made
Opinions and thoughts on the Red Rising trilogy, by Pierce Brown
Red Rising is a sci-fi trilogy. I dropped it towards the end of the third book, out of spite. Rest of this post is spoilers.
The first book felt somewhat predictable nearer the start, almost formulaic in a sense. Also, the main character read like a full grown adult, until you find out he's actually a teenager, because of course it's a YA dystopian series. His age isn't mentioned until later, but he has a whole ass wife and feels like a gruff adult. Nah, he's 16. With a wife. Yippee dystopia. She's gonna die and be his reason for rebelling against the system, right? Yep. Because of course. Like I said, formulaic.
Formulaic or not, though, the journey through it was well written. While I thought the wife was also a rebel, she's just got that rebellious spirit, and the MC's uncle is the one who's a rebel. It gets pretty brutal at times, with the mc's hanging and subsequent burial and then rescue, because the uncle gave him a drink that fakes his death. Where the story diverges from the standard formula is after the MC leaving his home, where he's introduced to the rebels and then told he's gonna be biologically modified until he's indistinguishable from one of the oppressing class, then sent to their schools to blend in and betray them from the inside.
Then it goes back to tropes by having the MC and all the students run a war game in the wilderness where they're forced to survive on their own and fight against each other. Get this, hunger games, but sci-fi.
I say that, because I'm a very pessimistic and cynical person by nature, not because I didn't like it. Red Rising's approach to the hunger games style war game was very well executed, along with the MC's development throughout. He himself is one of the oppressed, so he's constantly at risk of getting caught. Despite that, he does make friends there. Most important of which is Cassius and Sevro (my goat). They call each other brothers. Except, before the actual war game, the arbiters of the academy paired off each student and forced them to fight to the death in the nude, and the person the MC fought was Cassius's actual brother. This is very important for the rest of the trilogy.
My biggest gripe about the whole thing is the author wrote these kids as basically gods. I mean, I get it takes place on Mars with reduced gravity and these kids are the pinnacle of human GMO, but still... clearing hundreds of kilometers in a few hours?
I won't spoil the latter half of the war game and the end of the book, because it's quite well written and a very good plotline. Suffice it to say, despite following tropes and formulas, so far the book has a lot it does differently within those confines, and all of it hits pretty hard.
The sequel to Red Rising is Golden Son. It follows the MC at the very end of his school period. After the first war game (which also doubled as the kids' first academy), they went to an actual naval academy to learn to lead space ships and sci-fi battles. Which also had the whole war game setup, but the book starts with the end of that whole period. Anyway the MC loses, then enters the darkest hour where his life as one of the oppressor class is falling apart and he's questioning his place, goals, and own capabilities, as well as what he's actually supposed to do as the imposter among them. Anyways he figures it out and starts a civil war in the most dramatic way possible; starting a duel at a banquet and winning via plot convenience. Apparently, before the events of the book, he was trained by the best swordsman and duelist of all time. Something that I'm 90% sure was never actually mentioned or hinted at throughout the book. Yay plot convenience.
Queue a bunch of different battles and fights, character development, and more plot points. Really, I don't remember too much of the entire middle section of the novel. Probably because I spent literally an entire day reading the novel in (nearly) one sitting. Either way, it had me hooked for the most part, and I can't recall at the moment anything specific I had problems with.
The end of the book slaps the reader with an enormous plot twist though. The MC gets betrayed by some of the people he worked with in the oppressor civil war, mainly because they found out he's an imposter and actually one of the oppressed class. Characters important to the MC get slaughtered in front of him, and then he gets knocked out, ending the novel with a fade to black.
Wait, so what was the point of everything else in the novel? All those battles, all those wars, was it just to say "yeah a bunch of the oppressor class died because of the MC?" I honestly could not tell you. It was cool though.
The third book pissed me off a lot. I've already written a whole bunch so I won't dwell on it too much. For the most part, it was solid. More plot points happening, building up the story, the rebellion formally starts, lots of great character moments. Oh, yeah, here's a spot of capitalist propaganda for you.
There were a number of questionable decisions made by the characters throughout the novel that resulted in other characters dying, even though it probably could have been avoided. The MC is struggling a lot with the war costing the lives of his closest friends on both sides, struggling to bear the weight of all the lives lost in the name of revolution, even having to sacrifice some of them himself for the future of the rebellion. Lies and deception abound, double crossing, questioning loyalties and more. Very emotionally heavy novel, mixed in with action and the like.
Now for the reason I made this post in the first place. See, remember way back in the first novel, when I said the MC had to kill Cassius's brother? I hadn't brought it up again since, but that was a major plot point in the first book and what the MC used to spark the civil war in the second book. Cassius and the MC were close, and in the third book, they're on opposing sides, but still respect each other. Both are worn down by the cost of war. To keep it brief, there's a lot going between them, but eventually the MC and his crew defeat Cass and take him prisoner.
On the way back to Mars and the main battle, the MC gets the brilliant idea to... release Cassius? Keep in mind, this guy is the deuteragonist. Cassius is to the oppressors what the MC is to the rebellion (more or less). He is one of their ace in the holes, one of their best fighters, one of their strongest champions and leaders. You're just going to set him free? Why again? Because civilization needs honorable people like him? What the fuck are you on about?? This literally makes no sense. I know what the author is trying to assert, I know where it's coming from, I know there's been a lot of emotional buildup towards this by the author, I know how the MC feels, especially since he had to kill someone else he called brother during the war games of the first book (not sevro, don't worry it's coming). I understand how the idea came to him, but why the fuck is all his lieutenants and closest confidants going along with this?? This is literally the stupidest decision I've ever seen in my life, with the dumbest reasoning behind it. "We can't be civilized if we kill him" ok I get it, "So let's let him go" what the fuck???
Cassius vows to leave the war behind. Ok, sure, whatever, affirmations and such. Hey, remember lies and deception?
Frame 1 those handcuffs are off, Cassius breaks his vow and kills the MC's last remaining adopted brother, Sevro. I fucking immediately stopped reading. This whole scene was stupid. It literally made no sense and ruined the rest of the novel for me.
According to the wiki's synopsis, this meant nothing; Sevro is actually alive, and Cassius betrays the oppressors near the end and saves the MC. I don't care. I literally do not care. This was total bullshit and I refuse to read the rest of the book over this. I almost dropped the entire series in the beginning because I thought it was predicable, but my friend called out my lack of patience so I pushed through it and stuck with it, but enough is enough. I only have so much time and energy to deal with bullshit plot "twists" built up to with the most mental gymnastic shit I've ever seen in my life.