Thats friggin bananas. Do you live somewhere with lots of hydro power? Your cost is less than 1/3 mine…
Reddit refuge, escentric engineer and serial hobbyist.
Thats friggin bananas. Do you live somewhere with lots of hydro power? Your cost is less than 1/3 mine…
My SSDs use negligible power at idle, I only noticed a 1w increase when I installed two. Almost ‘free’. Also your 0.14kwh is almost certainly just the cost to generate the power minus the delivery fees. Where I live the delivery fees double my true per kWh cost. Double check your bill and divide your monthly consumption by your monthly payment to find the real cost.
Any quality brand SSD (Samsung, Kingston, WD, etc) is going to be more reliable in every way compared to mechanical disks, they just cost a lot more right now. Do NOT buy off brand, random Chinese SSD, you will regret it.
When I bought them 2 years ago power in MA was $0.46 per kWh, this included transmission costs and all the other fees. 15W cost me $4.80 a month, so $57.6 a year and $230 over 4 years. At the time 14TB mechanical disks were about $300 so it was about a $270 ‘premium’ for solid state over mechanical so I exaggerated the ROI, but to me the 2x price premium was worth it for silence and no latency on retrieving my data. So in summary the ROI for me was more like 8 years, ignoring the many advantages of SSD.
Does no one care about power consumption? Mechanical disks use, in my experience, 7-15w all day all the time just idling. If you live in a high energy cost area the ROI on going SSD can be as low as 3-4 years. If you can afford it, splurge for SSD. I spent ~$800 on two 8tb SSDs and I’m very happy with the choice.
This post scares the hell out of me. My daughter is 5 and sheltered but I know this is coming, I see it in other friends and families. Even the parents get sucked in and tell me about these addictive and fun empty headed music videos and it becomes a family event of consuming YouTube which makes me really question our Idiocracy future…
They also make wonderful axes and mauls I use to abuse trees and let all my anger out. A by product of this behavior is I also get to heat my home in the cold months.
I’m sorry but wireguard is not easy for beginners and the quick QR code generator in the command line was fantastic and light years ahead of fumbling around with getting config files securely to a mobile device.
Early centrino laptops had a 16-32gig solid state drive in addition to mechanical disks purely to speed boost time. It was part of the spec in order to advertise Intel Centrino. SSD was too expensive to do the whole disk so just a simple operating system essentials raid type setup made booting incredibly fast for 2010 standards.
My company had a badge in/badge out procedure, badge out was new after covid. No one actually badged out. They have since installed security guards at all exits and they will chase you out the door if you forget to badge out.
I think a full resync then re-index will go fine. My setup is different in that I sync everything through Nextcloud and run a script that looks for changes and triggers an indexing scan in photoprism. That being said I’ve absolutely mutilated some photo prism databases (migrating servers, different folder names with the same content) and run full indexing and never ended up with duplicates. It’s very good at stacking and cleaning up the same files in the DB so long as there aren’t actual duplicates in the original storage. But again it might take 3 or more full scans to find and purge duplicates.
I am far from a photo prism expert but I can safely say the indexing algorithm is weird and takes multiple runs to finish. Logically I would expect to run it once and it would do everything in one scan but I’ve found it takes sometimes 3 to 5 full scans to update and properly catch up to major changes. It’s almost like it acknowledges big changes and documents it but waits for multiple passes before committing it. Also it does a really good job when scanning to look or duplicate images and stacking/repointing to the valid file. I would advise running the indexing another 2 or 3 times if you are confident the 31k files are actually on storage and just not showing up on the database.
Exactly by design. It’s a lot cheaper to make people quit than to lay them off and pay a severance package.
Sorry, I forgot to post the scripts. I’m a meathead electrical engineer so I don’t use GIT or anything so here is the code dump. To summarize the setup’s software:
The backup script is fairly boring, just runs rsync and pushes the rsync log files back to the primary server. If it fails it sends me an email before turning the ethernet back off and going black.
#So here is my python code that runs the button press:
#!/usr/bin/env python
import RPi.GPIO as GPIO
import subprocess
import time
from multiprocessing import Process
#when this script first runs, at boot, disable ethernet
time.sleep(5) #wait 5 seconds for system to boot, then try and disable ethernet.
subprocess.call(['/home/pi/ethernet_updown.sh'], shell=False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(22, GPIO.OUT) #controls TFT display backlight
GPIO.setup(23, GPIO.IN) #pull up or down is optional, the TFT display buttons have a hardware 10k pull up. Measure low tranisitions
GPIO.setup(24, GPIO.IN)
#watches the button mounted above the USB port, in the Pi's case.
def case_button_watch():
while True:
GPIO.wait_for_edge(3, GPIO.FALLING)
#wait 100ms then check if its still low, debounce timer
time.sleep(.100)
if GPIO.input(3) == GPIO.LOW:
#do something as it's a button press
print('Button is pressed!')
time.sleep(.900)
if GPIO.input(3) == GPIO.LOW:
#if the button is pressed for over 1 second its a long press. Run the backup script
print('Button long press (greater than 1 second), running an unscheduled backup')
subprocess.call(['/home/pi/backup.sh'], shell=False)
else:
#the press was greater than 100mS but less than 1000mS, just toggle the ethernet
print('Button short press (less than 1 second), toggling the ethernet')
subprocess.call(['/home/pi/ethernet_updown.sh'], shell=False)
else:
#do nothing as its interference
print('GPIO3 debounce failed, it was noise')
#watches the buttons in the TFT display
def TFT_display_button1():
while True:
GPIO.wait_for_edge(23, GPIO.FALLING)
#wait 100ms then check if its still low, debounce timer
time.sleep(.100)
if GPIO.input(23) == GPIO.LOW:
#do something as it's a button press
print('Button GPIO23 is pressed!')
GPIO.output(22, GPIO.HIGH) #turn the backlight ON
else:
#do nothing as its interference
print('GPIO23 debounce failed, it was noise')
#watches the buttons in the TFT display
def TFT_display_button2():
while True:
GPIO.wait_for_edge(24, GPIO.FALLING)
#wait 100ms then check if its still low, debounce timer
time.sleep(.100)
if GPIO.input(24) == GPIO.LOW:
#do something as it's a button press
print('Button GPIO24 is pressed!')
GPIO.output(22, GPIO.LOW) #turn the backlight OFF
else:
#do nothing as its interference
print('GPIO24 debounce failed, it was noise')
if __name__ == '__main__':
#run three parallel processes to watch all three buttons with software debounce
proc1 = Process(target=case_button_watch)
proc1.start()
proc2 = Process(target=TFT_display_button1)
proc2.start()
proc3 = Process(target=TFT_display_button2)
proc3.start()
#bash script that toggles the ethernet - if its on, it turns it off. if its off, it turns it on:
#!/bin/bash
if sudo ifconfig | grep 'eth0' | grep 'RUNNING' > /dev/null;
then
wall -n "$(date +"%Y%m%d_%H%M%S"):Ethernet going down"
sudo ifconfig eth0 down
else
wall -n "$(date +"%Y%m%d_%H%M%S"):Ethernet going up"
sudo ifconfig eth0 up
fi
That was the first thing I thought of, all the asymmetric yellowing from exposing the plastic flame retardants to UV light.