• 2 Posts
  • 116 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 = BigInt(list.map(if (_) '1' else '0').mkString, 2).toInt
    
    //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
    

    EDIT: replaced Integer.parseInt with BigInt(...).toInt to fix NumberFormatException with negative numbers.

    try it online here



  • LocalSend. File transfer between any devices with (almost) any OS over LAN. No account required. The best file transfer app I’ve ever encountered by far.

    StreetComplete. Get motivated to go outside with quests to help complete OpenStreetMaps. Surprisingly addictive. Requires an OpenStreetMaps account.

    f.lux. Remove the blue light from your computer monitor in the evening to help you fall asleep more easily. Redshift. As above. Not quite as good, but works on some OS/System configurations that f.lux can’t handle.

    Pulsar. A community version of the discontinued Atom text editor. Highly extendable and configurable. Great for small programming tasks or opening text files with an obscure syntax. Has most of the packages built for Atom.

    Home Assistant. For automating your house and more (controlling smart lights and appliances, monitoring solar panel output, weather forecasts, printer diagnostics, delivery tracking…). A dedicated device (Raspberry Pi, old laptop) is highly recommended. A bit of a learning curve, but hard to live without after using it.










  • Prey gives you the choices up front, tells you they don’t matter, then gives you a really good game to play.

    plot twist

    The way you play is entirely up to you, but that’s the point. Are you who you say you are? It’s easy to say whether you’ll flip a switch or push a person when you’re answering questions at a desk, but it’s suddenly much harder when you’re actually faced with the problem. What will you choose?