@czardestructo@lemmy.world avatar

czardestructo

@[email protected]

Reddit refuge, escentric engineer and serial hobbyist.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

czardestructo,
@czardestructo@lemmy.world avatar

I had a guy in a pickup drive right into my 8ft long trailer when I as stopped at a light. He pulled up to me while I was stopped fine, but then he couldn’t see my trailer and 30 seconds later started rolling forward while the light was still red and hit it. I was very annoyed and when I talked to him he said he forgot it was there and couldn’t see it. I was speechless.

czardestructo,
@czardestructo@lemmy.world avatar

It’s the same in the US. They offer you a total deal expecting to make money on selling the loan. If you pay cash they charge you more for the same deal so they make their money. Car dealerships in general offer no real value and just make things cost more.

czardestructo,
@czardestructo@lemmy.world avatar

You can use log2ram to keep the log files in ram and only writing to the sdcard infrequently.

czardestructo,
@czardestructo@lemmy.world avatar

Until you have to fix a leak. Just pack up and move.

czardestructo,
@czardestructo@lemmy.world avatar

I’m not wondering that, I’m cheering you on. I’m wondering why we don’t do his ourselves. Safety in numbers, use the collective empathy to motivate that which has no empathy. I love it.

czardestructo,
@czardestructo@lemmy.world avatar

For what it’s worth my 2015 Toyota will allow me to connect over Bluetooth but in android I wouldn’t give it permissions to my text message, just audio. It works fine except for the fact that every damn time I turn the car on it asks again for text message access and I have to click no on the infotainment screen.

czardestructo,
@czardestructo@lemmy.world avatar

I noticed I couldn’t shake hang overs after 25. They ruined my whole following day so I just cut out that nonsense.

czardestructo,
@czardestructo@lemmy.world avatar

How about a different angle; enjoy the veggies as they are and forget the emulated meat puck. This isn’t a dig at you, just a general statement of how I always found it weird there are so many vegetarian and vegan food tring to emulate a meat stick or patty. Veggies are wonderful all by themselves why not enjoy them for what they are instead of competing with something it’s not. My 2 cents.

czardestructo,
@czardestructo@lemmy.world avatar

Most air intake for the heat and air comes into the cabin from the vents below the windshield.

Best external SSD for high-uptime use?

I was wondering if anyone could point me in the direction of an external SSD that’d last me a while being plugged into my incredibly simple SBC home server. I’ve done a bit of research but haven’t found much information about USB-connected SSDs and their longevity in terms of 24/7 use....

czardestructo,
@czardestructo@lemmy.world avatar

We are almost to the point where its the same cost for SSD. You can get an 8tb drive for $370 now and it won’t always be spinning and wasting 4-7W forever. For me, with high electricity costs, it was a no brainer to get a few of these and they will pay the difference within a year or two. I got them on sale for $320 each.

czardestructo,
@czardestructo@lemmy.world avatar

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.

czardestructo,
@czardestructo@lemmy.world avatar

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.

czardestructo,
@czardestructo@lemmy.world avatar

It’s great if you don’t abuse it, it’s not intended for anything big. Little bits of stuff in the bottom of your sink? Rinse and turn the motor on.

Metal roof issue

Our old house in New England has a steep pitched metal roof and no gutters. Our front door is right under a roof valley, so it is unusable on rainy days and all of winter. The water running down the valley has rotted out our building sill, and we have to get it replaced. I don’t want the same thing to happen to the new sill!...

czardestructo,
@czardestructo@lemmy.world avatar

Is it possible to install a small covered entry where the peak sheds water to the sides of the front door? Just a short 4x4 roof over your front door. Regarding the valley, that could be a prime spot to quasi gutter the water; catch it and guide it down and away from the house.

czardestructo,
@czardestructo@lemmy.world avatar

I did all Samsung in my current kitchen. Microwave died in 3 years, I’ve repaired the dish washer 3 times now it and doesn’t even clean that well and the bi metal switch that cools the stove electronics got stuck so I had to take the whole thing apart to replace a $5 part. Never buying Samsung again.

anybody have a solution for a legitimate caller ID and spam blocking service for android phones?

Hi all, through my experience, the third party apps that are supposed to do this a pure trash. I mean true caller was pretty decent, but it was packed with ads and trackers of course and the overbearing permissions that constantly tries hijacking my set SMS and dialer apps… I don’t think using a third party app is the right...

czardestructo,
@czardestructo@lemmy.world avatar

Sonic Firestorm was their best album. Come at me.

czardestructo,
@czardestructo@lemmy.world avatar

There is nothing wrong with LED lights. There is just a big problem with cheap, poorly designed LEDs. You can use proper optics and control the light exceptionally well and put it exactly where its needed with very little spill over or reflections up. You can also chose whatever color and color rendering index (CRI) you like but all of this costs more money and municipal bean counters are drunk on the lowest bidder. So we get glare bomb blue light shows. I used to design this stuff so feel free to ask questions.

czardestructo,
@czardestructo@lemmy.world avatar

Buy Cree branded lights if you can find them. High quality and I’ve never had an issue.

czardestructo,
@czardestructo@lemmy.world avatar

So LEDs can either be strobed or powered consistently with no blinking at all. It’s a design choice and it depends on how you convert the power from AC to DC and how you want to control the brightness of the LED. It’s cheaper to feed an LED power that is modulated/strobes so all the cheap vendors do that. You can also get away with strobing the LED to achieve a brightness assuming you do it at a very high frequency so our eyes don’t perceive it. If you buy a quality LED light fixture there should be no strobing effect what so ever.

Best self hosted photo manager for multi user

My wife is using Google Photos, and I’ve been using Photoprism for a few months. I just had a baby, and I access to download the pictures that my wife takes. I’m not too sure of what I want. I guess I want two separate libraries, but I want to be able to view her pictures easily and add them into my library. I believe if I...

czardestructo,
@czardestructo@lemmy.world avatar

Multi user but without unique libraries for each user. Just one big photo library for every user.

czardestructo,
@czardestructo@lemmy.world avatar

This as my first thought. When running these commands in my pi1 or zero I go get a sandwich and come back an hour later

czardestructo,
@czardestructo@lemmy.world avatar

Pi zero is many times less powerful than the pi3 but still perfectly fine for lots of simple tasks. Just takes forever to update.

What are you using for photo storage and organization?

Hey, I’m wondering what everyone’s solution is for self hosted “cloud” storage of photos? I’ve been running a PhotoPrism server on my Synology for a while but it’s missing some features I’d like to have. While we’ve set up auto-uploading from different phones to the web server, I haven’t found an easy way to...

czardestructo,
@czardestructo@lemmy.world avatar

Not anymore it syncs up with their subscription server to enable features. If they don’t enable proper multi user support soon I’m going to bail.

Spotify privacy concerns (www.bleepingcomputer.com)

Spotify is facing a privacy controversy as users allege that their private playlists were made public without their consent. This situation, similar to a previous issue, has raised concerns about an ongoing privacy problem. Users took to Twitter and Spotify’s community forums to report the unexpected change, with one user...

czardestructo,
@czardestructo@lemmy.world avatar

I’m pissed. I just want to pay them money and use their service and now they blindside me. I spend a lot of time and effort on my playlists and like my privacy. Why can’t we have nice things anymore? I guess I will need to go back to old school mp3s and go offline again.

czardestructo,
@czardestructo@lemmy.world avatar

The playlists aren’t actually public they just added a third, ambiguous category with some updates they made: “Recently Spotify has made some changes to playlist Privacy adding and extra level of privacy control. So all playlists that were previously Private are now Not added to profile, as the wording goes. This is why you see the option to Make Private on every playlist. Which means that your playlists were not made Public, they just appear to be categorized differently, so those playlists are still not visible for anyone who views your profile on any platform.”

czardestructo,
@czardestructo@lemmy.world avatar

Original batteries are expensive due to the quality and certifications needed to make it. To buy a no-name battery you are literally rolling the dice in terms of safety and there is no guarantee of how long it will last. Will you save any money if you buy a cheap battery for half the price but have to replace it again in 6 months? I’m more of the mentality fix it once, fix it right, or just don’t bother.

Billion $ net worth company creating kickstarter...

Philips has a net worth in the billions, $20.67 billion as of July 12, 2023. (Source link) Yet they decided to create a kickstarter, charging “early bird” buyers these earphones that’s designed for wearing while sleeping, basically the same as any other earphones, just slimmed down and cables running around your head....

czardestructo,
@czardestructo@lemmy.world avatar

Bose made this but wireless 4+ years ago.

czardestructo,
@czardestructo@lemmy.world avatar

Tplink Kasa WiFi AC plugs have the ability to turn the led off. I suspect the switches do too?

czardestructo,
@czardestructo@lemmy.world avatar

I have a folder that all my docker services are in. Inside the folder is a folder for each discrete service and within that folder is a unique compose file necessary to run the service. Also in the folder is all the storage folders for that service so it’s completely portable, move the folder to any server and run it and you’re golden. I shut down all the services with a script then I can just tar the whole docker folder and every service and its data is backed up and portable.

czardestructo,
@czardestructo@lemmy.world avatar

In case anyone cares here is my script, I use this for backups or shutting down the server.

<pre style="background-color:#ffffff;">
<span style="color:#323232;">#!/bin/bash
</span><span style="color:#323232;">
</span><span style="color:#323232;">logger "Stopping Docker compose services"
</span><span style="color:#323232;">
</span><span style="color:#323232;">services=(/home/user/docker/*)    # This creates an array of the full paths to all subdirs
</span><span style="color:#323232;">#the last entry in this array is always blank line, hence the minus 1 in the for loop count below
</span><span style="color:#323232;">
</span><span style="color:#323232;">for ((i=0; i<=(${#services[@]}-1); i++))
</span><span style="color:#323232;">do
</span><span style="color:#323232;">    docker compose -f ${services[i]}/docker-compose.yml down &
</span><span style="color:#323232;">done
</span><span style="color:#323232;">
</span><span style="color:#323232;">#wait for all the background commands to finish
</span><span style="color:#323232;">wait 
</span>
czardestructo,
@czardestructo@lemmy.world avatar
czardestructo,
@czardestructo@lemmy.world avatar

55W idle for 3 servers, network gear and UPS. I live in the US but electricity is still expensive and I try to keep everything efficient. My primary/most powerful server with 20TB of SSD only uses 22W idle.

Ghost Pi - an unconventional backup solution (lemmy.world)

I call this nonsense host ‘Ghost’, for me it’s similar to a tape backup solution. Fairly simple concept, it’s an old Pi1 + external mechanical drive that sits dormant with its ethernet off. Once a month, at a random time and random date it enables the ethernet, spins up the drive and pulls data from the main server to...

czardestructo,
@czardestructo@lemmy.world avatar

Does anyone see the attatched mp4 video? If not here is an imgur link.

czardestructo,
@czardestructo@lemmy.world avatar

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:

<pre style="background-color:#ffffff;">
<span style="color:#323232;">#!/bin/bash
</span><span style="color:#323232;">
</span><span style="color:#323232;">if sudo ifconfig | grep 'eth0' | grep 'RUNNING' > /dev/null; 
</span><span style="color:#323232;">then 
</span><span style="color:#323232;">    wall -n "$(date +"%Y%m%d_%H%M%S"):Ethernet going down"
</span><span style="color:#323232;">    sudo ifconfig eth0 down	
</span><span style="color:#323232;">else 
</span><span style="color:#323232;">    wall -n "$(date +"%Y%m%d_%H%M%S"):Ethernet going up"
</span><span style="color:#323232;">    sudo ifconfig eth0 up
</span><span style="color:#323232;">fi
</span>
czardestructo,
@czardestructo@lemmy.world avatar

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.

czardestructo,
@czardestructo@lemmy.world avatar

It’s probably just one pump/motor per physical stand and if both sides of the stand are used at the same time you get half the flow rate since you’re sharing it with your neighbor.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • KamenRider
  • TheResearchGuardian
  • KbinCafe
  • Socialism
  • oklahoma
  • SuperSentai
  • feritale
  • All magazines