@codewithkhalil One thing to add to "retry with backoff": jitter. Without it, every client that failed at the same moment retries at the same moment too. It shows up most when a broker restarts and ten thousand IoT devices all reconnect in lockstep and knock it over again.
@codewithkhalil The one that surprises people: the mysql client treats localhost as "use the Unix socket", not TCP. So mysql -h localhost and mysql -h 127.0.0.1 can end up talking to different things, or one works and the other doesn't. That's why a lot of configs spell out 127.0.0.1.
@iximiuz The fstab one is where people lock themselves out. Use UUID=, not /dev/sdb1, since device names can change between boots. Add nofail to anything the system doesn't need to boot, or a missing disk drops you into emergency mode. And run findmnt --verify before you reboot.
@TheHackersNews Deleting the file isn't enough, and rewriting history isn't either. Rotate the keys first. Then git filter-repo --path .claude/settings.local.json --invert-paths, re-add origin (filter-repo removes it), force push, everyone re-clones. Forks and old clones still have the secret.
@iximiuz The OpenWrt version of this is sneakier. fw4 rebuilds its whole inet fw4 table on every firewall reload, so a rule you add there by hand with nft is gone after the next reload, no reboot needed. Extras that should stick go in /etc/nftables.d/*.nft, which fw4 includes.
@sysxplore csum_start and csum_offset tell the host where to finish a checksum the guest left partial, and with virtio-net they come straight from the guest. Trusting those offsets against an IPv4 header the kernel already parsed is the whole bug, there since 2.6.27. Patch the host.
@linuxiac The CODING_STYLE.md rules are the interesting part: meson only, no cargo, only the core and libc crates, all #![no_std]. Nothing comes from https://t.co/y78tHxlSHA at build time, which matters for offline Yocto and Buildroot builds. You'd still need rustc for the leaf tools.
@seeedstudio The MeshCore part matters here. Unlike Meshtastic, where every node rebroadcasts, MeshCore only lets dedicated repeaters relay, and direct messages switch to a learned path after the first flood. Curious which of the 7 radios ran as repeaters on that ridge.
@sysxplore The argument for autotools that never comes up on a desktop: cross-compiling. ./configure --host=mipsel-openwrt-linux-musl is the one interface every embedded build system already knows how to drive, and a lot of OpenWrt and Buildroot packages still lean on exactly that.
@home_assistant Worth reading the notice it shows on first open: nothing in it is tested or audited, and it runs inside your Home Assistant. For a custom integration that means Python in the same process as core, with access to everything HA can reach. Treat it like pip install from a stranger.
@hackaday Sv32 is what makes it proper. With an MMU you get real fork(), memory protection between processes and plain ELF binaries, so a stock musl and BusyBox userspace just works, no flat or FDPIC builds. The port's own matrix already lists SMP and Wi-Fi station as stable.
--preserve-root doesn't help either. It only refuses / itself, and /* expands to /bin, /etc, /home and so on.
Same problem with a stray space: rm -rf /tmp/build /* is two arguments.
If DIR is empty or unset, this deletes everything it's allowed to:
rm -rf "$DIR"/*
It expands to rm -rf /*. Steam for Linux shipped this bug in 2015.
Write it like this instead:
rm -rf "${DIR:?}"/*
With :? the shell stops with an error when DIR is empty or unset.
set -u alone doesn't cover this. It catches unset variables, not empty ones.
An alias like rm='trash' won't protect a script either. Non-interactive bash doesn't expand aliases, so the script runs the real rm.
@hackaday The IR break beam is the part that makes it a real dispenser. A stepper only knows how far it turned, not whether a candy dropped, so a jammed wheel looks like success. With the beam it can keep turning until something actually falls out.
@phoronix Worth opening the release notes. A few CVEs repeat across 30-odd packages each: kubernetes, coredns, docker-compose, telegraf and friends. Go compiles its dependencies into every binary, so one library bug means rebuilding every package that carries a copy.
@sysxplore Synchronous mounts are where this hurt most. Every small cluster allocation updated the FAT on the card before write() returned, so growing a file meant lots of tiny writes to the same few sectors. Devices that mount SD cards with -o sync so people can yank them should feel it.
@phoronix The neat part is how cheap the fix is. Arm64 sets page granularity in the TCR register, so Google's P3S tracks it per process and rewrites TCR on a context switch when it differs. x86 games get 4K pages on a 16K kernel, without the muvm VM and its roughly 20% hit.
@cnxsoft@waveshare00 The RGMII pins are the interesting bit. Espressif's own Thread border router design uses two chips, an S3 for Wi-Fi and an H2 for 802.15.4. With Ethernet as the uplink, one S31 could do both jobs, and the 2.4GHz radio wouldn't have to time-share between Wi-Fi and Thread.
@home_assistant From the people-you-live-with side it's usually one thing: a wall switch that does nothing when the server is down. Detached mode on smart relays is the usual cause. If the switch still toggles its own relay with HA offline, nobody else ever notices HA exists.