And IIRC, license plates only need to be censored if bad behavior is demonstrated. Notice that the car to the left which was correctly parked has an exposed license plate.
What baffles me is that the plate number is only meaningful to law enforcement. The public does not get access to the records associated with a plate number. I see no reason to hide the info from law enforcement. The evidence may be too low of a standard to be usable, but so be it.
A jealous partner seeing the car where it shouldn’t had been is enough, isn’t it? Or the boss where the worker should had been elsewhere, or… Inhabitants of small districts also don’t need a license plate database to know.
The onus is not on social media to make sure your jealous partner didn’t see your license plate. Is Lemmy subject to european privacy laws? Is this instance hosted in the country in question? Serious questions.
It really depends which billionaires. Believe it or not, some billionaires aren’t bad people (probably). Billionaires are just people with a ton of money and power at the end of the day, and we should judge them on their actions, not their bank balance, regardless of our suspicions of how they got so rich.
However, if we could stick (for example) the Sacklers, Kochs and Murdochs in a sub and send it to Challenger Deep with just enough oxygen to get there and plenty of ballast, we’d definitely be doing the world a favour. These scumbags have a huge amount of blood on their hands, and while it would be better to see them in jail, we never will, so fantasising about their horrible demise is the most we can really do.
Don’t carry water for people who would let you die to increase their mountain of gold a little. What you’ve described might be true of millionaires, even multi millionaires; but no one gets to a billion dollars without stepping on those below them in the pursuit of more money than one person could ever spend in their lifetime.
Being a billionaire is pathological, if the human race was a biological organism and one part of it started hoarding that many resources, we would call it cancer and cut it out.
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:
cron to run the script that turns the ethernet on and runs rsync to pull data from the server. I have 12 cron entries for the various months/dates/times to run.
python script to monitor the button presses for manually running a backup or turning the ethernet port back on
bash script that runs the rsync job to pull data from the primary server
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:
<pre style="background-color:#ffffff;">
<span style="color:#323232;">#!/usr/bin/env python
</span><span style="color:#323232;">
</span><span style="color:#323232;">import RPi.GPIO as GPIO
</span><span style="color:#323232;">import subprocess
</span><span style="color:#323232;">import time
</span><span style="color:#323232;">from multiprocessing import Process
</span><span style="color:#323232;">
</span><span style="color:#323232;">
</span><span style="color:#323232;">#when this script first runs, at boot, disable ethernet
</span><span style="color:#323232;">time.sleep(5) #wait 5 seconds for system to boot, then try and disable ethernet.
</span><span style="color:#323232;">subprocess.call(['/home/pi/ethernet_updown.sh'], shell=False)
</span><span style="color:#323232;">
</span><span style="color:#323232;">GPIO.setmode(GPIO.BCM)
</span><span style="color:#323232;">GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
</span><span style="color:#323232;">GPIO.setup(22, GPIO.OUT) #controls TFT display backlight
</span><span style="color:#323232;">GPIO.setup(23, GPIO.IN) #pull up or down is optional, the TFT display buttons have a hardware 10k pull up. Measure low tranisitions
</span><span style="color:#323232;">GPIO.setup(24, GPIO.IN)
</span><span style="color:#323232;">
</span><span style="color:#323232;">
</span><span style="color:#323232;">#watches the button mounted above the USB port, in the Pi's case.
</span><span style="color:#323232;">def case_button_watch():
</span><span style="color:#323232;"> while True:
</span><span style="color:#323232;"> GPIO.wait_for_edge(3, GPIO.FALLING)
</span><span style="color:#323232;"> #wait 100ms then check if its still low, debounce timer
</span><span style="color:#323232;"> time.sleep(.100)
</span><span style="color:#323232;"> if GPIO.input(3) == GPIO.LOW:
</span><span style="color:#323232;"> #do something as it's a button press
</span><span style="color:#323232;"> print('Button is pressed!')
</span><span style="color:#323232;"> time.sleep(.900)
</span><span style="color:#323232;"> if GPIO.input(3) == GPIO.LOW:
</span><span style="color:#323232;"> #if the button is pressed for over 1 second its a long press. Run the backup script
</span><span style="color:#323232;"> print('Button long press (greater than 1 second), running an unscheduled backup')
</span><span style="color:#323232;"> subprocess.call(['/home/pi/backup.sh'], shell=False)
</span><span style="color:#323232;"> else:
</span><span style="color:#323232;"> #the press was greater than 100mS but less than 1000mS, just toggle the ethernet
</span><span style="color:#323232;"> print('Button short press (less than 1 second), toggling the ethernet')
</span><span style="color:#323232;"> subprocess.call(['/home/pi/ethernet_updown.sh'], shell=False)
</span><span style="color:#323232;"> else:
</span><span style="color:#323232;"> #do nothing as its interference
</span><span style="color:#323232;"> print('GPIO3 debounce failed, it was noise')
</span><span style="color:#323232;">
</span><span style="color:#323232;">#watches the buttons in the TFT display
</span><span style="color:#323232;">def TFT_display_button1():
</span><span style="color:#323232;"> while True:
</span><span style="color:#323232;"> GPIO.wait_for_edge(23, GPIO.FALLING)
</span><span style="color:#323232;"> #wait 100ms then check if its still low, debounce timer
</span><span style="color:#323232;"> time.sleep(.100)
</span><span style="color:#323232;"> if GPIO.input(23) == GPIO.LOW:
</span><span style="color:#323232;"> #do something as it's a button press
</span><span style="color:#323232;"> print('Button GPIO23 is pressed!')
</span><span style="color:#323232;"> GPIO.output(22, GPIO.HIGH) #turn the backlight ON
</span><span style="color:#323232;"> else:
</span><span style="color:#323232;"> #do nothing as its interference
</span><span style="color:#323232;"> print('GPIO23 debounce failed, it was noise')
</span><span style="color:#323232;">
</span><span style="color:#323232;">#watches the buttons in the TFT display
</span><span style="color:#323232;">def TFT_display_button2():
</span><span style="color:#323232;"> while True:
</span><span style="color:#323232;"> GPIO.wait_for_edge(24, GPIO.FALLING)
</span><span style="color:#323232;"> #wait 100ms then check if its still low, debounce timer
</span><span style="color:#323232;"> time.sleep(.100)
</span><span style="color:#323232;"> if GPIO.input(24) == GPIO.LOW:
</span><span style="color:#323232;"> #do something as it's a button press
</span><span style="color:#323232;"> print('Button GPIO24 is pressed!')
</span><span style="color:#323232;"> GPIO.output(22, GPIO.LOW) #turn the backlight OFF
</span><span style="color:#323232;"> else:
</span><span style="color:#323232;"> #do nothing as its interference
</span><span style="color:#323232;"> print('GPIO24 debounce failed, it was noise')
</span><span style="color:#323232;">
</span><span style="color:#323232;">if __name__ == '__main__':
</span><span style="color:#323232;">
</span><span style="color:#323232;"> #run three parallel processes to watch all three buttons with software debounce
</span><span style="color:#323232;"> proc1 = Process(target=case_button_watch)
</span><span style="color:#323232;"> proc1.start()
</span><span style="color:#323232;">
</span><span style="color:#323232;"> proc2 = Process(target=TFT_display_button1)
</span><span style="color:#323232;"> proc2.start()
</span><span style="color:#323232;">
</span><span style="color:#323232;"> proc3 = Process(target=TFT_display_button2)
</span><span style="color:#323232;"> proc3.start()
</span>
#bash script that toggles the ethernet - if its on, it turns it off. if its off, it turns it on:
I very much feel the desire to stay away from Git repos for singular scripts like this. Maybe consider making it a gist though. Easier to keep track of by starring it in GitHub and perhaps even iterate on it in the future. :)
I use Joplin notes to track my code revisions. It’s incredibly crude but it works and keeps my documention private and is also my wiki for each server so I know what the heck I setup and did.
[An image taken of a pristine mountain view and a lake in the foreground. The lake is shimmering in a deep green hue, with teal and blue colours blending into the water’s surface with the shadows. The mountain slopes along the edges of the lake display patches of white snow with clusters of thin evergreen trees in varying shades of green. Further in the distance, the rocky faces of the mountain slopes are interspersed with patterns of white snow that line some of the rocky edges. The sky above is a vibrant blue, with puffy white clouds covering sections of it. Ths sun is shining over the entire scene as it rests just above the jagged edges of the mountain tops, slightly to the right of the image centre.]
^I’m a human volunteer transcribing posts in a format compatible with screen readers, for blind and visually impaired users!^
I have inherited a US$4 / 3.6€ toaster from a previous housemate. I told myself I'll replace it when it dies, but it's been nearly 12 years. That Sunbeam is much prettier than my plastic sweatshop junk and I'm a little jealous of it.
I think I'm so used to planned obsolescence in tech that I greatly underestimated how hard it is to fuck up building a toaster. Mine doesn't toast evenly, sure. But how perfectly even do I really need my toast to be?
I make toast in a skillet because I don’t have a toaster but it works ok because then I can use the good butter so my jam and toast is much tastier and probably way less healthy, weirdly enough I think it’s more even on a skillet and a bit more crisp one side soft on the other like I like.
I'm too much of a fan of timed power cut-off devices to go that route, and my doctors would probably also not be a fan. I can totally believe it makes for excellent and delicious toast though. Especially with the good butter.
lemmy.world
Active