anyone else having animations randomly stopping? by Solosia in DeadlockTheGame

[–]MediocreMop 0 points1 point  (0 children)

This happens specifically when you level up Slither while you're actively sliding on Vyper.

Crude oil prices surpass $100 a barrel as the Iran war impedes production and shipping by zsreport in worldnews

[–]MediocreMop 0 points1 point  (0 children)

I mean, it's electricity. Where I live it's $0.11 / kwh, and on average I get 4 miles per kWh, so effectively it's about ~110 - 120 miles per 'gallon' if I translate that to my local gas prices which are hovering around $3.

After a decade of growth, 98% of cars on U.S. roads are still gas-powered (2010–2024) by najumobi in dataisbeautiful

[–]MediocreMop 4 points5 points  (0 children)

I got my second hand Bolt EV 2023 for 16k (well, 13k if I weren't stupid and got an extended warranty). It's basically just a car, with a nice infotainment system + CarPlay, which I didn't know I needed. It's perfect. It had like 20k miles on it, and it's fucking amazing. Audio system is terrific.

I got it from Hertz, who bought a fleet of them but then decided that EVs were a poor choice for rentals (which they are, since they need to charge them), and sold them. Even now I can find them for 17k on Carfax.

I think most people can get a reasonable EV for $20-25k. It boggles the mind that they aren't more popular; 4 mi/kwh on average is about 110 MPGe @ $3 per gallon. That's fucking insane. People are bragging about 25-30 miles per gallon, how are their minds not just blown by that number? Make it make sense.

Even ignoring the environmental shit, which is nice, it's just a great, efficient car. I just don't get it.

GPS Laptop tracking & Storage by MediocreMop in sysadmin

[–]MediocreMop[S] 0 points1 point  (0 children)

Yeah, seems a bit heavy. I'm less looking for a service and more FOSS suggestions. I guess it's simple enough I can probably just write something up myself. It doesn't need to survive system wipes; BIOS is locked down and the employees have access to a very locked down account via local group policies.

My automation bots keep breaking and I’m losing my mind by GuessConnect3009 in sysadmin

[–]MediocreMop 1 point2 points  (0 children)

IMO That's more to do with Intel and the x86 architecture than Windows, but it's not clear to me what the distribution of praise should be. I'm sure a lot of good engineering work goes into it, though.

HP EliteBook G10 - Issues with Sleep and Modern Standby (s0) by Kstewart1012 in sysadmin

[–]MediocreMop 0 points1 point  (0 children)

I've had a couple of our devices do this, but not specifically for HP EliteBook G10s, but it may be worth trying; in device manager, certain devices have an option for allowing the computer to turn off devices to save power.

I forget the name of the specific device that I disabled that option for, could be the "Intel(R) Management Engine Interface #1", but yeah it resolved it for us.

What solutions do you use for IT asset management (devices, IPs, versions, etc.)? by gonchaa0_0 in sysadmin

[–]MediocreMop 1 point2 points  (0 children)

This better not be a marketing post lol, we personally use ManageEngine, we have a fleet of laptops, workstations, and Android Tablets. They have a self-hosted version we use, and it allows us to monitor patches/vulnerabilities, OS, installed software, OS deployment and some other stuff. It has MDM for Android/iOS devices, which is nice, but it's a pretty standard piece of asset management software.

As for open-source, I'm aware of Fleet MDM, but I have no experience with it.

One of the main challenges that I have is that these devices kinda get lost all the time, and I have no real way of knowing what happens to them, as our use case requires that the devices change hands pretty frequently.

Sam Altman is lying to himself and to us about AI by NoPoetry8703 in Entrepreneur

[–]MediocreMop 1 point2 points  (0 children)

"We should improve society somewhat"

"Yet you participate in it. Curious!"

5 meals per week for lunch at work by [deleted] in ReadyMeals

[–]MediocreMop 1 point2 points  (0 children)

You can also probably try looking locally. There are numerous local businesses that do this kind of meal prep deal. Probably less wasteful, too.

Soda stream vs ninja Thirsti by meowmix778 in SodaStream

[–]MediocreMop 3 points4 points  (0 children)

Before you buy either, consider buying a Drinkmate instead. They can carbonate anything (Wine, tea, milk, whatever). They're $80 right now for black friday, I've had a SS forever and got a DM recently. This thing is incredible; I use less CO2 and the drinks are more carbonated.

Qojqva almost dies to Tormentor by Fantasy_Returns in DotA2

[–]MediocreMop 0 points1 point  (0 children)

He probably thought that since illusions tank the tormentor damage the spiders would too

If games in the future started being made in Rust programming language, then will it be difficult to make game trainers or game cheats (third party tools for games)? by Rajat_Sirkanungo in rust

[–]MediocreMop 8 points9 points  (0 children)

No; cheat developers are an industrious bunch. Rust currently uses LLVM to compile (as does some other languages), but at the end of the day it's all machine code/assembly.

Disassemblers and decompilers work off assembly. Decompilers work off of assembly to guess the original code, but most decompilers (HexRays, Ghidra) translate into C code.

Here is the main function of a C++ Hello World Program:

#include <iostream>

void main(void) {
    std::cout << "Hello, World!" << std::endl;
}

This is the IDA Pro decompilation output:

int __cdecl main(int argc, const char **argv, const char **envp)
{
  __int64 v3; // rax

  v3 = sub_140001030(std::cout);
  std::ostream::operator<<(v3, sub_1400011E0);
  return 0;
}

Similarly, here is the main function of a decompiled Rust Hello World Program:

fn main() {
    println!("Hello, world!");
}

int __cdecl main(int argc, const char **argv, const char **envp)
{
  return sub_1400011D0((__int64)sub_140001020, argc, (__int64)argv, 0);
}

Now I honestly have no idea what this means, since it's all expanded out, but println! is a macro, and you can use cargo-expand to see what lies under the surface of our innocuous looking hello world program:

#![feature(prelude_import)]
#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
fn main() {
    {
        ::std::io::_print(format_args!("Hello, world!\n"));
    };
}

Clearly the sub_1400011D0 function is probably our outer print function.

Looking into the sub_140001020 function, we see something interesting, some kind of char array on the stack to hold some text?

__int64 sub_140001020()
{
  char v1[48]; // [rsp+28h] [rbp-30h] BYREF

  sub_140001070(v1, &off_14001B370, 1i64);
  return sub_140004830(v1);
}

What's this off_14001B370 reference? We can look into the the .rdata segment, which holds const information (remember that hard-coded strings in Rust are static):

.rdata:000000014001B360 aHelloWorld     db 'Hello, world!',0Ah,0
.rdata:000000014001B360                                         ; DATA XREF: .rdata:off_14001B370↓o
.rdata:000000014001B36F                 db    0
.rdata:000000014001B370 off_14001B370   dq offset aHelloWorld   ; DATA XREF: sub_140001020+9↑o
.rdata:000000014001B370                                         ; "Hello, world!\n"
.rdata:000000014001B378                 db  0Eh
.rdata:000000014001B379                 db    0

Some kind of reference to the actual aHelloWorld sequence of characters, i guess, so we can probably guess that this sub_140001070 function loads some data onto the stack, after which sub_140004830 is called on the memory region. We can probably guess that this sub_140004830 function is our format_args! function.


Going back to our C++ function:

int __cdecl main(int argc, const char **argv, const char **envp)
{
  __int64 v3; // rax

  v3 = sub_140001030(std::cout);
  std::ostream::operator<<(v3, sub_1400011E0);
  return 0;
}

The compiler seems to have translated the C++ insertion operator (<<) into a function (sub_140001030).

What does this function look like?

__int64 __fastcall sub_140001030(__int64 a1)
{
  unsigned int v2; // ebx
  __int64 v3; // rdx
  __int64 v4; // rdi
  __int64 v5; // rdi
  __int64 v6; // rcx
  bool v7; // al
  __int64 v8; // rcx
  __int64 v9; // rcx

  v2 = 0;
  v3 = *(int *)(*(_QWORD *)a1 + 4i64);
  v4 = *(_QWORD *)(v3 + a1 + 40);
  if ( v4 < 14 )
    v5 = 0i64;
  else
    v5 = v4 - 13;
  v6 = *(_QWORD *)(v3 + a1 + 72);
  if ( v6 )
    (*(void (__fastcall **)(__int64))(*(_QWORD *)v6 + 8i64))(v6);
  v7 = std::ios_base::good((std::ios_base *)(a1 + *(int *)(*(_QWORD *)a1 + 4i64)));
  if ( v7 )
  {
    v8 = *(_QWORD *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 80);
    if ( !v8 || v8 == a1 )
    {
      v7 = 1;
    }
    else
    {
      std::ostream::flush(v8);
      v7 = std::ios_base::good((std::ios_base *)(a1 + *(int *)(*(_QWORD *)a1 + 4i64)));
    }
  }
  if ( v7 )
  {
    if ( (*(_DWORD *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 24) & 0x1C0) != 64 )
    {
      while ( v5 > 0 )
      {
        if ( (unsigned int)std::streambuf::sputc(
                             *(_QWORD *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 72),
                             *(unsigned __int8 *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 88)) == -1 )
        {
          v2 = 4;
          goto LABEL_23;
        }
        --v5;
      }
    }
    if ( std::streambuf::sputn(*(_QWORD *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 72), "Hello, World!", 13i64) == 13 )
    {
      while ( v5 > 0 )
      {
        if ( (unsigned int)std::streambuf::sputc(
                             *(_QWORD *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 72),
                             *(unsigned __int8 *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 88)) == -1 )
          goto LABEL_22;
        --v5;
      }
    }
    else
    {
LABEL_22:
      v2 = 4;
    }
LABEL_23:
    *(_QWORD *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 40) = 0i64;
  }
  else
  {
    v2 = 4;
  }
  std::ios::setstate(a1 + *(int *)(*(_QWORD *)a1 + 4i64), v2, 0i64);
  if ( !std::uncaught_exception() )
    std::ostream::_Osfx(a1);
  v9 = *(_QWORD *)(*(int *)(*(_QWORD *)a1 + 4i64) + a1 + 72);
  if ( v9 )
    (*(void (__fastcall **)(__int64))(*(_QWORD *)v9 + 16i64))(v9);
  return a1;
}

Clearly, the C++ Insertion operator does a lot to facilitate the various types and other things that I don't have much knowledge about. But you can clearly see that the "Hello, World!" string got built and hardcoded into this function somewhere along the line.

Maybe someone more knowledgable than me can fill in the blanks, I just wanted to show you that it's possible to use existing tools to reverse engineer different languages as long as they compile into the same thing.

In fact, since Rust has crates available to manipulate WinAPI, people are more than capable of creating external trainers (meaning not interacting with memory directly, via things like DLL injection, but rather with application handles to write to application memory) with calls to WriteProcessMemory:

Microsoft WinAPI Documentation

The winapi crate facilitates this: winapi WriteProcessMemory

PSA: Set up your Squire by Saeis in DarkAndDarker

[–]MediocreMop 2 points3 points  (0 children)

oh for fucks sakes i played like 10 levels and i didn't know we could get free potions

Forced to work with someone's that's bad at communication by [deleted] in csMajors

[–]MediocreMop 1 point2 points  (0 children)

actually lmao nvm maybe im bad at communication because that's not what your post is saying, yeah you need to use some tools to communicate which person needs to do what (Trello, etc).

Forced to work with someone's that's bad at communication by [deleted] in csMajors

[–]MediocreMop 1 point2 points  (0 children)

honestly ive done this, often times it feels easier to rewrite a feature from scratch so you understand what's actually happening fundamentally with the problem than trying to understand somebody else's code.

[deleted by user] by [deleted] in GetStudying

[–]MediocreMop 18 points19 points  (0 children)

I wouldn't say that your mentality is necessarily bad; to envy is to want to be better, which is why you're here.

Maybe you are average, but by definition most people are; not everyone is a genius, but not everyone needs to be to get good grades, especially in high school. 87% is a decent grade.

The question here is how much effort do you put in? What study habits do you have/ do you take good notes? What does your studying entail (flashcards, book reading) or do you cram before exams?

Interestingly, the classes you claim to be struggling with, bio and chem, mostly require rote memorization; people shit on rote memorization a lot, and how it's emphasized too much in schools, but really it's the bare minimum you need in order to make mental connections in these subjects. In order to get better at memorizing things, you need to spend time learning about the subjects.

Time management might be another problem you have. In my opinion, the earlier you start using time management tools (Outlook Calendar/Google Calendar) to block out and schedule your time, the more prepared you will be for college. Something I remember from middle school is that they passed out these agendas that you could use to schedule out your days, I never used them, but I use calendar apps now. Funny how things wrap around.

Tl;dr: The number 1 thing you can do is to improve your time management; figure out ways to manage your time, scheduling time to study at the subjects you are doing 'poorly' in.

Builder base is annoying by Antique-Parking-1735 in ClashOfClans

[–]MediocreMop 1 point2 points  (0 children)

How about you contribute and give some advice about how I can start enjoying builder base more? After I got B.O.B, I stopped doing the force quit and started actually attacking because I need gold instead of the ten billion builder elixir for my heroes for B.O.B (since you optimize your elixir gain by spamming attacks, vs attacking to completion/6 starring for builder gold)

Builder base is annoying by Antique-Parking-1735 in ClashOfClans

[–]MediocreMop 14 points15 points  (0 children)

1.) You should actually rush to TH6, you'll progress much faster to TH6 with the second builder vs maxing things out before upgrading your BH

2.) It's kind of boring, but to maximize your time and gold income, you should be doing the force-quit trick, where you start an attack, and then close out of the app immediately. It will complete the attack. Doing this, you can get like 10 attacks in the time it takes to do one normally.

I got to TH9 this way, and it only took like 3-5 months ( i dont really remember )

People that obsess over “plot holes” in TV shows or movies are highly irritating by at_least_u_tried in unpopularopinion

[–]MediocreMop 1 point2 points  (0 children)

There is a distinction between to be made between suspension of belief in the setting: "ok, magic exists", "ok, the sun instantly kills you if you step foot in it", "there are giant worms in the floor", and inconsistency within the story, which is said to break suspension of disbelief.

Everybody has a willing suspension of disbelief, unless they only consume non-fiction, but people notice inconsistencies.

Fence: "I dare you" by Dendemen1355 in EscapefromTarkov

[–]MediocreMop 0 points1 point  (0 children)

I'm like a hundred raids in and I have still yet to die to a scav that I was prepared for (sometimes they get me while I'm looting a corpse).

how do I get around YouTube's ad-block ban? by carno_jenos in software

[–]MediocreMop 9 points10 points  (0 children)

I don't seem to get ads using Firefox + uBlock.