• 1 Post
  • 58 Comments
Joined 2 years ago
cake
Cake day: July 4th, 2023

help-circle


  • I wanted to install an extra hard drive in my computer, but the power supply didn’t have enough connectors. I actually had a spare power supply unit, but upon testing, the 24 pin cable was too short to reach the motherboard.

    I ended up using both PSUs. Only one had a power switch on it, so that was connected to the hard drives. I had to use a paperclip in the unused 24 pin connector to make it output power. The 2 PSUs had a wire running between the ground pins of a random unused connector, and they were on the same phase circuit.

    The hard drive PSU had to be turned on first at the switch. Once that was on, I could press the power button to turn on the computer. I think I used it for about a year before buying enough upgrade parts to effectively replace the entire computer.





  • I decided to use NAND instead of NOR, but it’s effectively the same thing.

    Scala:

    //main
    @main
    def main(): Unit =
      var i = 15 //Choose any number here
      i = add(i, 1) //this increments i
      println(i)
    
    //Adds 2 numbers in the most intuitive way
    def add(a: Int, b: Int): Int =
      val pairs = split(a).zip(split(b))
      val sumCarry = pairs.scanLeft(false, false)((last, current) => fullAdder(current._1, current._2, last._2))
      return join(sumCarry.map(_._1).tail.reverse)
    
    //Converts an integer to a list of booleans
    def join(list: Seq[Boolean]): Int = Integer.parseInt(list.map(if (_) '1' else '0').mkString, 2)
    
    //Converts a list of booleans to an integer
    def split(num: Int): Seq[Boolean] = num.toBinaryString.reverse.padTo(32, '0').map(_ == '1')
    
    //Adds 2 booleans and a carry in, returns a sum and carry out
    def fullAdder (a: Boolean, b: Boolean, c: Boolean): (Boolean, Boolean) =
      (NAND(NAND(NAND(NAND(a, NAND(a, b)), NAND(NAND(a, b), b)), NAND(NAND(NAND(a, NAND(a, b)), NAND(NAND(a, b), b)), c)), NAND(NAND(NAND(NAND(a, NAND(a, b)), NAND(NAND(a, b), b)), c), c)), NAND(NAND(NAND(NAND(a, NAND(a, b)), NAND(NAND(a, b), b)), c), NAND(a, b)))
    
    //The basis for all operations
    def NAND(a: Boolean, b: Boolean): Boolean = !a || !b
    

    try it online here





  • Windows kept doing things I didn’t want it to.

    The last straw was when I had a 24 hours render running, and Windows decided to update and reboot 1 hour before it was done. I was using the computer at the time, RAM, CPU, and GPU were all at max, the mouse was being moved, I clicked “later” every time the update pop-up appeared, and it still rebooted.

    Linux does what I tell it to, and doesn’t do what I tell it not to do. I didn’t think that was a big ask until Windows.