It doesn’t have to be a big baroque thing. When there’s a dotfile I configure regularly, I move it to a Git repo and use stow to put it “back” into place with a symlink. On new machines, it isn’t long before I try something that doesn’t work or see the default shell prompt and go “oh yeah, I want my dotfiles”, check out the repo, run a script that initializes a few things (some stuff is machine-specific so the script makes files for that stuff with helpful comments for me to remember the differences between login shells or whatever) and then I’m off to the races.
- 0 Posts
- 3 Comments
Joined 3 years ago
Cake day: June 9th, 2023
You are not logged in. If you use a Fediverse account that is able to follow users, you can follow this user.
In Haskell, that’s “unit” or the empty tuple. It’s basically an object with no contents, behavior, or particular meaning, useful for representing “nothing”. It’s a solid thing that is never a surprise, unlike undefined or other languages’ nulls, which are holes in the language or errors waiting to happen.
You might argue that it’s a value and not a function, but Haskell doesn’t really differentiate the two anyway:
value :: String value = "I'm always this string!" funkyFunc :: String -> String funkyFunc name = "Rock on, "++name++", rock on!"Is
valuea value, or is it a function that takes no arguments? There’s not really a difference, Haskell handles them both the same way: by lazily replacing anything matching the pattern on the left side of the equation with the right side of the equation at runtime.



Apple proposed something a few years ago, when governments were making similar threats, that attempted to strike a middle ground. The idea was that upon uploading an image to iCloud Photos, a on-device scan would be run on that image and an encrypted report generated to be sent up along with the photo. There was differential privacy involved, the report would also sometimes be generated for entirely normal photos, so seeing a report didn’t necessarily indicate anything, and they had set it up such that the server would only be able to decrypt the reports if it had a sufficiently large number of photos that had been actually found to be CSAM by the local scan, so there would have to be many false positives to incorrectly get flagged.
It was incredibly controversial, and they ended up not doing it after all. In my opinion, it’s probably the lightest touch and most responsible way to do something like this, and obviously they always pick the most worthy cause for invading privacy… but I still viscerally dislike the idea that my computer would have code designed to try to get me sent to prison under certain circumstances (not that I’d ever be triggering that code with anything but a false positive of course). Somehow it’s worse than just saying “in the cloud you have no privacy, your photos aren’t encrypted on our servers, and if you upload CSAM we’ll drop a train on you.”