u/Krispcrap

▲ 1

When to do something and suggestions for dealing with possibly delusional parent?

Things have progressed to a point where I would like to see if I'm overthinking and if there are any suggestions for next steps if needed.

SOME BACKGROUND

My mom has always been a little chaotic and untrusting of democrats, maybe some undiagnosed bipolar. About 5 years ago she got a job in the church that required her to move, and I feel like during the week, because she works from home, she spends most of her time by herself.

Over the years she has gotten more and more into healing prayer and she often talks about how witches are casting hexes at her church. At one point, she said if she didn't walk around the chapel before service and cast out the demonic presences out loud, some people would sing off key. She also picked up a hate for yoga and had to do a healing prayer for herself after leaving the senior center because they do yoga in there (this only started after she found out my dad was dating a yoga therapist, absolutely had no issues with yoga before this).

All of this has been increasingly strange, but I just let her be and try to keep my contact with her minimal for my own mental health.

TWO INCIDENTS THAT BROUGHT ME HERE TODAY

The church was moved to operate out of a retirement home. For some reason, someone in management removed her cross (which was a rude thing to do) and either threw it out or gave it away (not sure why this is unknown). I voiced my support because that was rude, but also said hopefully the manager was just not very competent or there was a miscommunication. She spent a long time making a case that the manager was not only smart, but VERY good at her job, even though she said she didn't know this woman and hadn't met her yet (the manager sounded new which is why I thought maybe it was a miscommunication). Her building this case for the manager took away every explanation for what happened except for one: that the manager maliciously did it on purpose. And it keeps making her very upset that the manager would do that, and she's really upset at the possibility that witches might be using her crosses in spells.

The other thing that is the most concerning to me is her reaction to a new resident of the retirement home. This new old lady came to the service and my mom felt a disturbance. She said the old lady had black eyes (NOT dark brown) and had an unsettling presence. She prayed that if the old lady had ill-intent for being there, that the holy spirit would make her uncomfortable and leave. RIGHT after she said the prayer, the old lady left. And at lunch she looked my mom directly in the eye and gave an unnerving smile. My mom is convinced this woman is a witch. Also why is it always a witch??? Does she not think there's wizards out there. IDK I'm curious but idk if I should ask her.

MY QUESTION FOR YALL

There are no diagnoses as the only time she went to therapy she lied to her therapist, and she thinks this is all normal (with some positive reinforcement from the healing prayer community). She is working overtime to reason that she is the victim of all these attacks, taking away the possibility for other explanations. And being convinced this old lady is a witch. And that's why I really want to know

  1. Is this becoming problematic/worrisome behavior
  2. Is there something I should be doing and if so where do I start.

There is no aggressive behavior in her history. I think the only thing she'd do is pray for protection from the witch.

reddit.com
u/Krispcrap — 1 day ago
▲ 8

In-game stickynote

I made an in-game stickynote! Since the update came out I thought I'd share as it helped me a bit when referring to documentation/update notes and updating my scripts. It's nice to have if you use multiple devices because no matter what, it's right there in your game!

https://github.com/kipcap/Bitburner/blob/main/StickyNote.js

u/Krispcrap — 3 days ago
▲ 1

I wrote one script to crawl the darknet (dnet/exploreScript.js) to update the server databases >!and crack passcodes, copy itself to the new server, and run itself on the new server. !<

>!Because I didn't know how best to handle servers I had already cracked, I used hasSession. If hasSession = true, I didn't want to go through the whole database update and code cracking. Instead I would copy and execute dnet/second-passExplore.js. This script will see if the neighbors are in the database, and keep crawling until it finds a neighbor with hasSession = false, and then will run the first script on the current server to continue the database update. !<

>!Originally, instead of copying and running the second-pass script, I just had //TBD. exploreScript was running and propagating just fine. !<

>!After I got the scripts into the shape they are below, when I ran either script, the log for exploreScript.js started popping up everywhere. I had //ns.ui.openTail() at the top of the script leftover from when I started, so I removed that just in case it was triggering the tail to open still? It is crashing my game so I added a sleep before executing a new script so I had time to kill the script as logs popped up.!<

>!Please help, I have no idea what to do. I don't think I'm using the right words to google to find the right forum with the answer. !<

Please ignore my very rough script, it's not ready for public viewing but I am too annoyed by this problem to not ask for help.

dnet/exploreScript.js:

/** u/param {NS} ns */
export async function main(ns) {


  //First we want to read the database file
  const database = "dnet/database/dnetDB.json"
  //make an empty object in case the file doesn't exist yet/is empty
  let db = {};
  //read the file as a string
  const rawRead = ns.read(database);
  //Only parse the file if it contains something 
  //If it was empty then we would continue with db being an empty object
  if (rawRead &amp;&amp; rawRead.trim() !== "") {
    db = JSON.parse(rawRead);
  }


  //Probe the dark net
  //by getting the servers that are immediate neighbors to the 
  //currently connected server
  //MUST BE RUN ON THE SERVER YOU WANT THE NEIGHBORS OF
  const nearbyDarknetServers = ns.dnet.probe();
  for (const darkServ of nearbyDarknetServers) {
    //Check if we already have the server in the database
    //We are looking at an object type
    //Prototype has the methods for objects
    //HasOwnProperty is a mehtod that checks if a property key exists in the object
    //Call runs that method on the object db to see if the server name 
    //(property key) is present
    if (!Object.prototype.hasOwnProperty.call(db, darkServ)) {
      //Get data about the server
      const details = ns.dnet.getServerAuthDetails(darkServ);


      //Add server into the database, 
      //Append the object "details"
      //And make a "subproperty" in the darkServ object
      //(nested object)
      db[darkServ] = {
        hostname: darkServ,
        ...details,
        password: ""
      };
      ns.print(`INFO: Added ${darkServ} to database.`);
      //Grab and print new info to log
      const det = JSON.stringify(details, null, 2);
      ns.print(`Server Name: ${darkServ}`);
      ns.print(`${det}`);
    } else {
      ns.print(`${darkServ} is already in database.`);
    }


    //We use "w" here because we are reading the JSON, 
    //updating it if needed
    //so we can overwrite whatever is in the file. 
    ns.write(database, JSON.stringify(db, null, 2), "w")
  }


  //Once we update the database, go back through neighbors and propogate
  //Because we have a list of neighbors, we don't have to reconnect to 
  //the "seed" server before continuing. 
  for (const darkServ of nearbyDarknetServers) {
    const entry = db[darkServ];


    //If the server is not online and is not a neighbor, skip server
    if (!entry.isOnline || !entry.isConnectedToCurrentServer) {
      continue;
    }


    //If we already cracked the code (and thus continued to propogate)
    //do not recrack and reproppogate
    //but connect and continue to look for neighbors
    if (entry.hasSession) {
      //connect
      //copy and execute a propogator that continues until it finds
      //something with !entry.hasSession and runs this script again
      ns.print("FUTURE WORK")
      
      const result = await ns.dnet.authenticate(darkServ, "");
      //If it fails, move on to the next server
      if (!result) {
        //ERROR
        continue;
      } else {
        //Run secondPass crawl script script
        const script = "dnet/second-passExplore.js"
        ns.scp(script, darkServ);
        ns.exec(script, darkServ, {
          preventDuplicates: true, //This prevents running multiple copies of this script
        });
      }
      continue;
    };



    //If the password length is 0, no password is needed
    //Connect to the server, propogate, and reconnect to the initial server
    if (entry.passwordLength === 0) {
      const result = await ns.dnet.authenticate(darkServ, "");
      //If it fails, move on to the next server
      if (!result) {
        //ERROR
        continue;
      } else {
        //If we have successfully authenticated, 
        //we can now propogate
        ns.scp(ns.getScriptName(), darkServ);
        ns.exec(ns.getScriptName(), darkServ, {
          preventDuplicates: true, //This prevents running multiple copies of this script
        });


        continue;
      }


      //If the password is not straightforward, then use the solver
      //then copy and paste the propogation step above. 
    } else {
      //TBD


      //RECONNECT TO THE ORIGINAL SERVER SEED
      //IDK IF THIS IS RIGHT
      //BC YOU CANT CONNECT TO SESSION (HOME)
      //BUT IDK HOW TO GET THE CURRENT HOSTNAME
      //FUTURE WORK
      continue;
    }
  }
}

dnet/second-passExplore.js

/** u/param {NS} ns */
export async function main(ns) {
  //Purpose: passivley crawl through servers until you find a server
  //with a neighbor you haven't cracked the code and connected to already
  //(hasSession = false)


  //First we want to read the database file
  const database = "dnet/database/dnetDB.json"
  //make an empty object in case the file doesn't exist yet/is empty
  let db = {};
  //read the file as a string
  const rawRead = ns.read(database);
  //Only parse the file if it contains something 
  //If it was empty then we would continue with db being an empty object
  if (rawRead &amp;&amp; rawRead.trim() !== "") {
    db = JSON.parse(rawRead);
  }


  //Probe the dark net
  //by getting the servers that are immediate neighbors to the 
  //currently connected server
  //MUST BE RUN ON THE SERVER YOU WANT THE NEIGHBORS OF
  const nearbyDarknetServers = ns.dnet.probe();
  for (const darkServ of nearbyDarknetServers) {
    const exists = Object.prototype.hasOwnProperty.call(db, darkServ);


    //If the neighbor is not in the database
    //or if it has not been connected to,
    //run the explore script
    //that will continue to update the database and propogate password cracking
    if (!exists || db[darkServ].hasSession === false) {
      //Account for if the script is starting from home
      let hostName = ns.getHostname();
      if (hostName === "home") { hostName = "darkweb"}
      
      const scriptDB = "dnet/exploreScript.js"
      ns.scp(scriptDB, hostName);
      ns.exec(scriptDB, hostName, {
        preventDuplicates: true, //This prevents running multiple copies of this script
      });


      ns.print(`Running database update and code cracking script: ${scriptDB}`)


    } else {
      //If we have connected to the server previously, then we want to 
      //continue to more passively continue our journey until we find
      //something new
      const password = db[darkServ].password;
      ns.dnet.connectToSession(darkServ, password);
      ns.scp(ns.getScriptName(), darkServ);
      await ns.sleep(0. * 60 * 1000)
      ns.exec(ns.getScriptName(), darkServ, {
        preventDuplicates: true, //This prevents running multiple copies of this script
      });



    }
  }
}
reddit.com
u/Krispcrap — 9 days ago
▲ 52

I am experiencing some serious burnout right now and I am so taken aback by how self absorbed this girl in the neighboring lab is.

She will monolog about her life story and her voice projects. She's rude if you ask her if she could finish her story in the break room. She was rude to my PI asking her to not talk about disecting roadkill. Their PI claims they talked with her about it but nothing changed.

Today I had 2 zoom meetings and in both I had to increase the volume to the max, which was surprisingly not that loud, our computers must have some hearing protection admin control? So I had to use my computer speakers to be able to follow what was being discussed. Then my PI suggested I play classical music to try to cover her voice and she just talked over it no matter how loud I cranked it.

I went to the break room feeling mentally drained and it was understandably full of chatty people. I almost cried because I needed a moment of quiet so badly. It wouldn't be so bad if this girl wasn't monologing. Something about hearing the same sound almost nonstop drains me in a way I have never experienced before.

I don't know how I'm going to be able to write a review while fighting severe burnout and dealing with this.

reddit.com
u/Krispcrap — 16 days ago