1. 8

    This is getting more and more common since GDPR. A way to “bypass” these kind of tactics is to enable GDPR / cookie consent blocking with an ad blocker (at least this is possible with uBlock Origin). It automatically hides these annoying banners/popups without forcing you to opt-in.

    1.  

      It’s even more fun when you consider how many of these websites then set the cookies that you’d actually have to opt in…

      1.  

        How do you do this with uBlock Origin? I didn’t see a setting about GDPR or cookie/consent blocking.

        1. 5

          If you go in uBlock Origin preferences → Filter lists, under “Annoyances” there’s “Fanboy’s Cookiemonster List” which hides “we use cookies” banners (and apparently will also hide GDPR banners).

      1. 1

        Is there a graph showing how well it holds up?

        1. 1

          No, but I can tell you right now it doesn’t.

          1. 1

            Not the specifics, but the over-arching ideas pretty much hold up I’d say.

            • Open Systems: Sure Oracle hasn’t died yet, but even MS is even getting on the Open bandwagon to some degree.
            • Software Distribution Channels: well OK the Internet ate the CDROM up, but retail software in a store is 99% dead, he called that.
            • Kernel/base source code explosion: Drivers def. take up way too much room in the kernel :)
            • Multiprocessor: def. true
            • Networking: well OK 3 directions, Internet/WAN, Wireless(LAN) and high-speed LAN(fiber and friends)
            • Java: pretty much true, minus the systems programming part.
            • Nomadic devices: smartphones totally made this true.
            1. 1

              I was mainly referring to the title claim of “2^(Year-1984) Million Instructions per Second” because OP was asking for a graph.

        1. 3

          I like the truly p2p aspect here, but it’s a big red flag that SSB seems to refer to a specific node.js implementation and not to a wider protocol with multiple implementations. I did a bit of digging and couldn’t find anything, but maybe I missed something?

          1. 4

            The protocol is defined: https://ssbc.github.io/scuttlebutt-protocol-guide/

            rust client: https://crates.io/crates/ssb-client

            Other versions(go, c, etc) are being worked on as well.

            1. 3

              A pity the signing / marshalling algorithm is such a PITA to implement (the signature must be the last key/value pair in the JSON document, and it signs the bytes of the document up to that point).

              1. 2

                and order has to be maintained. Indeed. Not sure why they designed it that way.

                1. 1

                  At least being able to produce a known canonical order is important for signing. And the signature cannot be part of that which it signs.

                  1. 1

                    Oh yeah - the canonical form is nonexistent, you just sign whatever bytes you’ve written so far.

                    If you were signing a message body (eg a json string value) it would be different - but as it stands relays have to implement white space compatible json marshalling with the sender.

                    1. 1

                      duh! sorry, you are right! asleep at the wheel apparently when I wrote that :)

                2. 2

                  Having alternate clients is a good start, but is it still true that there’s only one server implementation?

                  1. 1

                    I believe someone is working on a go implementation, but I don’t know where the code may be, and I’m not on my SSB machine to try and find it. But there is definitely only one that’s usable at the moment, that I’m aware of…

                    and I agree, it’s a good start. It’s also not smartphone/mobile ready yet either, but work is happening on that front as well.

              1. 3

                This link may be an easier one to understand for people not familiar with SSB https://git.scuttlebot.io/%25RPKzL382v2fAia5HuDNHD5kkFdlP7bGvXQApSXqOBwc%3D.sha256

                It talks about how to move your code from Github into a decentralized SSB. Even if you don’t want to actually do the conversion, it explains how it all works.

                1. 7

                  There is satellite based SMS, one such product: https://www.findmespot.com/en/index.php?cid=666. Important events you can almost certainly shrink into an SMS. something like: location 45 ebola +1

                  Another option is to use a gossip protocol, something like https://www.scuttlebutt.nz/. It’s not really there for Mobile yet, but there are some Android implementations. Basically it lets any scuttlebutt user bring the data back, not just the one who entered it into their device, but securely knowing which user input the data. So the local staff will input the data into their device, and sync with the people that travel across the region(s). As travelers wander into better connectivity, they could then sync to your pub server, getting the data to you, while the local staff are still local doing their thing, and never had to leave. I’d recommend trying to get transport people that travel regularly through the region to be your traveling scuttlebutt nodes (bus drivers, water carriers, etc).

                  The protocol is described here: https://ssbc.github.io/scuttlebutt-protocol-guide/

                  The protocol is sufficiently general enough that you can run the git VCS across it.

                  I run a public scuttlebutt pub here: https://www.zie.one/ if you want to try it out.

                  1. 2

                    In a lot of cases we need a bit more information than what a single SMS can provide.

                    We’re already working on a sort of gossip protocol using the C zyre libraries on top of 0mq as well as bluetooth, it’s in development still but about 90% done, it’s a good idea, but it’s predicated on coming into contact with someone who is running our apps/systems in a timely manner, which may not be the case in a lot of instances. By the time they come into contact with another person they would probably be in a place that has internet or a connection of some sort.

                    1. 3

                      I don’t know your specific use-case, but at the very least you could easily get, “send someone out to collect more information” out of an SMS. Also, if you encode data, you can pack a fair bit of data into an SMS, given the constraints. But iridium and other satellite communications providers are not limited to SMS, the spot I showed is just the consumer level version of this, but if you are large enough you can reach out to the providers themselves and possibly work out some deal with them.

                      Cool on the gossip protocol. The upside to doing something like SSB(scuttlebutt) is you get use-cases outside of just your domain, so the chances of people, such as transportation drivers, wanting to use it much higher. The more people you can get running a gossip protocol the faster you can sync your data across large swaths of unconnected/sporadically connected populations.

                      Anyways, good luck!

                  1. 1

                    We use Jenkins, but all it does for us is accept webhooks from our central VCS repo on each commit and run make(or other build system) against the new revisions. And to properly yell when things go wrong.

                    Pushing all this stuff into your CI doesn’t seem to make a lot of sense, as then you get locked in, for little to no gain as I can see.

                    We treat Jenkins as a distributed task queue, with nice VCS features. Really if Nomad’s task queue or celery or what have you added support for webhooks and a nice way to yell and scream when something went wrong, it would 100% replace Jenkins for us in no time.

                    1. 1

                      At $PREV_JOB we used Jenkinsfiles extensively until some people complained that they couldn’t replicate it on their machine. We were building more and more complex tests scenarios and people wanted to run some parts of them on their laptops before pushing. Some complained that they had to read Groovy code to wrap they head around how tests were launched, but the worse for people were when doing offline remote… So some people started to write bash scripts to launch stuff (make was another candidate that people found too weird).

                      1. 1

                        Make isn’t that weird, but, it’s not well understood, sadly. But I do agree with your $PREV_JOB, that all of your tests should be runnable , pretty much anywhere. That’s certainly our philosophy.

                        I’ve been playing with tmuxp using tmux, and running dependencies for testing that way, so that it can all be interactive very easily. Not sure it works out very well for very complex testing scenarios, but it seems to work out for low to medium complexity so far.

                    1. 18

                      Definitely way complicated. Nomad(https://nomadproject.io/) is what we chose, because it is so operationally simple. You can wrap your head around it easily.

                      1. 7

                        I haven’t used either in production yet, but isn’t the use case of nomad much more restricted then kubernetes? It’s only the scheduling part and leaves it to the use define, for example, ingress through a load balancer and so on?

                        1. 10

                          Yes, Load balancing is your problem. Nomad is ONLY a task scheduler across a cluster of machines. Which is why it’s not rocket science.

                          You say I need X cpu and X memory and I need these files out on disk(or this docker image) and run this command.

                          It will enforce your task gets exactly X memory, X cpu and X disk, so you can’t over-provision at the task level.

                          It handles batch(i.e. cron) and spark workloads, system jobs(run on every node) and services (any long-running task). For instance with nomad batch jobs you can almost entirely replace Celery and other distributed task queues, in a platform and language agnostic way!

                          I’m not sure I’d say the use-case is much more restricted, since you can do load balancing and all the other things k8s does, but you use specialized tools for these things:

                          • For HTTPS traffic you can use Fabio, Traefik, HAProxy, Nginx, etc.
                          • For TCP traffic you can use Fabio, Relayd, etc.

                          These are outside of Nomad’s scope, except that you can run those jobs inside of Nomad just fine.

                          edit: and it’s all declarative, a total win.

                          1. 1

                            Why not haproxy for tcp too?

                            1. 1

                              I don’t actually use HAProxy, so I can’t really comment on if it does TCP as well, if it does, AWESOME. I was definitely not trying to be limiting, hence the etc. at the end of both of those.

                              We use Nginx and Relayd.

                              1. 2

                                It does TCP. See the reliability and security sections of the web site to see why you might want it.

                                1. 2

                                  Thanks!

                        2. 4

                          Oooh, the fact that it’s by HashiCorp is a good sign. I’ll have to read up on this. Thanks!

                        1. 2

                          Ah, yes it is. If it is on GitHub for example, anyone can use it, modify it, contribute to it. They can even add some of the stuff the author talks about, readmes, documentation and comments. They can submit bugs and suggestions, they can work on features or fixes. “Just” putting it up is often good enough.

                          1. 3

                            Agreed, I regularly send patches against README and docs for things that I use, as I’m learning how to use them. It’s just good manners to take your newly acquired knowledge and help others with it. Doubly so if you find something in the documentation that doesn’t exist in the executable.

                          1. 20

                            Bitwarden is my tool of choice for this. I haven’t been a fan of other more CLI-centric password managers as they usually don’t have browser integration. The usability of using an in-browser UI to generate a random password and the prompts to save it when I submit forms are very important IMO. Nothing has come close to that while also being open source.

                            1. 3

                              One thing that irks me about Bitwarden is having to provide an email address and getting an installation id & key if I’d like to self host it for myself. Please correct me if I’m wrong but from what I understand, even for using it without the “premium” features one still needs to perform this step.

                              If so, I think I’ll stick with my pass + rofi-pass + Password Store for Android combo for now.

                              1. 4

                                This is true, there are ways around it, if you work a little, since it is OSS. However, there are a few 3rd party tools, 2 of which are server implementations: bitwarden-go(https://github.com/VictorNine/bitwarden-go) and bitwarden-ruby(https://github.com/jcs/bitwarden-ruby).

                                There is also a CLI tool (https://fossil.birl.ca/bitwarden-cli/doc/trunk/docs/build/html/index.html)

                              2. 2

                                Are you self-hosting it or using the hosted version? I’m somehow always sceptical of having hosted password storage, even if it’s encrypted and everything.

                                1. 1

                                  If it’s not encrypted, they see your secrets. If it is encrypted, they’re in control of your secrets. In self-hosted setup, you are in control of your secrets. If encrypted, you might loose them. If sync’d to third party (preferably multiple), you still might loose key. If on scattered paper copies, each in safe place, you probably won’t. For some failures, write-once (i.e. CD-R) or append-only storage can help where a clean copy can be reproduced from the pieces.

                                  That’s pretty much my style of doing this. It’s not as easy as 1Password or something, though. There’s the real tradeoff.

                                  1. 2

                                    It is encrypted, here is a link on how the crypto works in english: https://fossil.birl.ca/bitwarden-cli/doc/trunk/docs/build/html/crypto.html

                                    I agree Bitwarden is not quite as user friendly(or as secure if using local vaults) as 1Password, but for an OSS app, it’s definitely at the top of the list on user friendliness of password managers.

                                    I run a server locally on my LAN, and my phone/etc sync to it. I definitely don’t want my secrets out in the cloud somewhere, no matter how encrypted they might be.

                              1. 7

                                I jumped on the K8s train moderately early, and have since jumped right back off owing to the rapidly accelerating unnecessary extra complexity.

                                I’m sympathetic to the idea that enterprise requires a sometimes bewildering array of configuration options, and that the usual array of systems-screwer-uppers (e.g., Red Hat, IBM) were naturally going to show up to the party to try to increase consultant billing time, but man did that thing get messy and confused in a hurry. It almost makes you sympathize with the go development philosophy.

                                1. 3

                                  It feels like the K8s train replaced the OpenStack train.

                                  1. 2

                                    Now consider that there are organization that deploy OpenStack on a hypervisor, then kubernetes on that openstack :)

                                  2. 2

                                    LOL I couldn’t agree more. “systems-screwer-uppers” I hadn’t heard that before. beautiful turn of phrase!

                                  1. 15

                                    I’m using 1Password with local sync over the built-in web server. 1Passwords also supports syncing via Dropbox, iCloud and, most recently, 1Passwords’s own servers. I want nothing of that but it means that I can’t use 1Password on Linux. What’s great about 1Password is that it is highly polished - using it adds very little friction. I understand that I could manage all passwords encrypted in Git but the integration would never be as good and there is a lot of risk that this would somehow not be as secure as it sounds.

                                    1. 5

                                      I recently switched to Enpass, which is a conceptual clone of 1Password. Reason for switching was Linux support.

                                      1. 7

                                        This is a closed-source app that has not yet received a lot of scrutiny. Using it for truly sensitive information requires quite a bit of trust. They claim to use sqlite with encryption – which I would trust but of course, there is a lot of code around it that would have to be trusted as well.

                                        1. 2

                                          The first thing it tried to do when I ran it was reach out to Google Analytics. I said enough of that, and promptly uninstalled it.

                                        2. 2

                                          1Password (at least the hosted version) has linux support via both 1password-x and 1password-cli. I quite enjoy the CLI and generally find that it has a better user experience than LastPass.

                                      1. 2

                                        I wonder what the throughput on this is, I’m betting it’s nowhere close to what’s needed to actively run an internet facing HTTPS server that regularly interacts with the public. Still a totally cool hack though!

                                        YubiHSM is the Yubico answer to this, but it’s quite expensive(but almost free compared to most HSM devices).

                                        1. 2

                                          Yeah I’m wondering how many signing requests per second it can do and how that compares to HSMs. HSMs are still really slow though…

                                        1. 2

                                          We offload all of our date/time processing into PG. so many languages SUCK at it, or have 100 libraries that all do different things, sometimes in non-sane ways. We just decided it’s not worth it, and just let PG handle it for us. PG’s date/time handling is very sane compared to most language implementations, in our experience.

                                          1. 4

                                            The same way I monitor prod. For us that’s Prometheus (https://prometheus.io/), but there are many, many OSS options.

                                            1. 1

                                              This looks pretty interesting. I’ll check it out tomorrow. Thanks!

                                            1. 6

                                              Just putting in a plug for Bitwarden. I’m not affiliated with them in any way, but I switched from lastpass and have been very happy. It’s lastpass-like functionality with (IMO) a better interface, and built-in 2FA for the premium version. Compatible with Android autofill. Plus it’s open source!

                                              1. 2
                                              1. 6

                                                I use Fossil for all of my personal projects anymore. I don’t like that Github has a near-monopoly, and @ work we use mercurial not git, so I never learned the insanity that is the git model. I understand there are reasons for the insanity, but still.

                                                1. 6

                                                  Last year I switched our studio’s VCS from git to mercurial because of how Hg manages “changeset evolution”. It seems to me that Hg has the upper hand in terms of innovation and advancing the conceptual model for VCS. One year later I’m quite happy: Hg feels easier to use, especially in unusual situations. The only thing I miss from git is automatic merge+commit on pull, while Hg still asks you to review and commit the merge.

                                                  1. 2

                                                    How big is your team at work?

                                                    We’re only about 10 at mine, and we used to use Mercurial, but little by little hg usage eroded until it’s just me now yelling at (Amazon) clouds.

                                                    1. 4

                                                      Facebook uses it and Google is starting to as well. Both orgs have thousands of engineers.

                                                      1. 1

                                                        Only 2 of us now :( Government budgets hurt. We still love it tho.

                                                        I keep thinking about moving to fossil @ work too, but HG works so well for us, no sense in messing with it.

                                                      2. 2

                                                        cgit + bugseverywhere + moinmoin would get you there too if you did prefer git.

                                                        1. 3

                                                          Yes, there are loads of options available, none of which is as easy as fossil ui

                                                          1. 0

                                                            That’s an extremely subjective statement. Also good luck using anything more robust with fossil, you’re locked in.

                                                            1. 3

                                                              Locked in? Import and export from git: http://fossil-scm.org/index.html/doc/trunk/www/inout.wiki

                                                              Plus it’s BSD-2 clause licensed, which is the exact opposite of lock-in.

                                                              Subjective? Maybe….. But this is why. think no:

                                                              • Having to learn 3(+?) different tools, vs. 1 tool.
                                                              • 3+ different processes and configuration to get right, and to make it all interoperate well together.
                                                              • The internal structures are well documented.
                                                              • Fossil is a statically linked executable, available compiled for mac,win,linux from their site.

                                                              Installation of git + friends will be at best an apt-get or yum install away, but Windows is probably a mess to install all of it (granted git itself isn’t so bad anymore on windows)

                                                              That said, We can just agree to disagree and call it a day. I recognize Git + friends is perfectly fine if you want to live that way.

                                                              1. 1

                                                                I mean if you want to run fossil with a different web client, or a different issue tracker.

                                                      1. 1

                                                        There’s a lot of conflation between ‘git’ and ‘github’ here.

                                                        Point 3 is utterly bogus. If your needs are so specific, use git, not github.

                                                        ‘Setting up a website for a project to use Git requires a lot more software, and a lot more work, than setting up a similar site with an integrated package like Fossil.’

                                                        I run a git server at home. All I need is ssh. What’s ‘a lot of software’ about that?

                                                        1. 4

                                                          The part you quoted talks about providing a whole website for the project, not just repository access.

                                                          Fossil seems to have a built-in web server, which provides access to the repository, tickets and wiki. The closest thing distributed with Git is GitWeb, which requires Perl and a web server speaking CGI. It only allows you to browse the repository. For anything else you need even more third-party software like Gitea for example.

                                                          So setting up a whole website for a project using Git indeed…

                                                          requires a lot more software, and a lot more work, than setting up a similar site with an integrated package like Fossil.

                                                          1. 1

                                                            Fair enough, but adding JIRA or something is simple enough. What the author is saying is: ‘I want fossil’, which is fine, but isn’t a good reason not to use git.

                                                            1. 1

                                                              cgit works fine. Often things aren’t packaged together on purpose within linux. This doesn’t mean you can only use gitweb. Also you can send patches over email if you choose. It’s not really fair to call it third party software since literally all of it including git is third party software.

                                                            2. 1

                                                              I agree with you about the conflation between git and Github. Github doesn’t play very well with cmd line git. you can’t send/receive patches for example. For lots of people git == Github, they are interchangeable, you and I know differently.

                                                              like @seschwar said, you seem to have missed the first part of the sentence, “website for a project”. This requires more than ssh and git. Fossil is a statically linked binary that includes it all. And with the fossil ui command you get the entire website and all functionality locally as well, and it will all seamlessly sync with as many other copies of the repo as you want, the server is not special in any way, except that it exists at a safe, well-known address and becomes the main published repo.

                                                            1. 6

                                                              Started on a cross-platform CLI for the bitwarden password manager: https://fossil.birl.ca/bitwarden-cli/doc/trunk/README.txt

                                                              1. 4

                                                                Disallowing tabs seems rather silly. As far as I can tell, zig syntax does not depend on indentation (like, for example haskell or perhaps python), so there seems to be no technical reason for this. Appeals to simplicity seem unfounded, since tooling can just as easily ignore two characters as one.

                                                                1. 4

                                                                  I really don’t understand why tabs are so disliked: Guido allegedly said it was one of the mistakes he did in Python (tabs for indentation), so Nim did that. And now I sadly realise Zig too (but not for the same reasons). Tabs are used to align to columns, have a width that can be adjusted in most editors, and prevent errors of adding extra spaces. What’s not to like there?

                                                                  1. 2

                                                                    I personally like the ASCII tab character in my file(s) but I take a pragmatic approach anymore, as long as the file is consistent, I could care less. But let’s face it, the ASCII tab character people have basically lost the war, and we should move on and embrace our new ASCII 9 free world.

                                                                    see: https://www.jwz.org/doc/tabs-vs-spaces.html

                                                                    1. 3

                                                                      But let’s face it, the ASCII tab character people have basically lost the war

                                                                      Apparently not. At the very least there is a substantial portion of developers who use tabs.

                                                                      1. 3

                                                                        Yeah, for example, pretty much everyone when writing in Go. All Go style guides use tabs and Gofmt always formats as tabs.

                                                                        I was actually convinced by this post back in 2012 :)

                                                                        1. 1

                                                                          AWESOME, but mostly, I just want the stupid war to be over. This is why I support tools like gofmt, yapf and friends, who make it a non-issue.

                                                                          1. 1

                                                                            Gofmt uses tabs, so I don’t see how it helps ending any “war.”

                                                                            1. 1

                                                                              Because it’s the defacto standard for the language. You run gofmt on your code, and move along with your life. basically ALL Go code is formatted with gofmt and if it isn’t you are very much in the minority. So it’s ended the war in Go-lang before it ever started, for the most part. I’m sure there are a few wacky places that refuse to use gofmt for one reason or another. I’ve never bothered to check, but I’d bet well over 90% use gofmt, making it a non-issue in Go lang. There is no war in Golang, you use gofmt, and you forget about the problem and spend energy on other things.

                                                                              Other languages with formatters , if they get built early enough get the same benefits.

                                                                        2. 1

                                                                          Not according to Silicon Valley (the show ;). I complain but I did the exact opposite in languages I’ve written: tabs are mandatory for indentation. Writing the grammars, I liked the fact that there was only one way to indent, and as a user that this would let me adjusted the indentation at will without changing the contents of the file.

                                                                          1. 1

                                                                            “could care less” should be “couldn’t care less” . The expression means you care so little that caring more is impossible.

                                                                            1. 1

                                                                              Logically you are absolutely 100% correct, however English is not very logical in many, many ways: http://www.slate.com/blogs/lexicon_valley/2016/04/05/the_real_reason_people_say_i_could_care_less.html

                                                                              Should I have used couldn’t care less in writing here; arguably yes, since it works much better in written form, and definitely in formal settings, however I tend to type as I speak, especially in non-formal places like here; hence my use of the phrase “I could care less”.

                                                                              Anyways, this is pretty much WAY off topic. If you still feel very, very strongly that I’m wrong, you can message/email me privately, or you can call into: https://www.waywordradio.org/ who may put your complaint on the air and say a few things about it’s history, usage, and if they agree with you or not. I’ll happily bow to their wisdom.

                                                                        3. 4

                                                                          The rationale given in that issue,

                                                                          Minimize energy spent on coding style,

                                                                          is reasonable, IMO. The one thing I like about Go is gofmt; I don’t want to argue about style, waste time on it in code review, or think about it really.

                                                                          1. 3

                                                                            Then why does Zig have a sort of half-way approach to this sort of thing? The official style guide says they are “are not enforced by the compiler, but… [are] a point of reference.” I think it’s strange to leave most of your style up for interpretation and and enforce the most controversial element in the compiler.

                                                                            1. 1

                                                                              Then why does Zig have a sort of half-way approach to this sort of thing?

                                                                              I can’t answer that. 🙂 I was merely commenting on what I saw in the issue. It does talk about a zig fmt tool in future tense, though.

                                                                              I agree it’s strange to enforce a few bits in the compiler.

                                                                          2. 3

                                                                            Its about making column numbers in compiler errors consistent.

                                                                            1. 3

                                                                              Pretend tabs are only 1 character then. The only thing the compiler has to do is be consistent with the editor (so the programmer can find the error). Vim shows the number of columns by both logical and visual characters, and presumably other editors do as well.

                                                                              1. 1

                                                                                “presumably” and “pretend” are not serious solutions.

                                                                                1. 1

                                                                                  Sure they are. Operating systems pretend they have infinite memory. Presumably most editors can convert line endings.

                                                                                  And in this specific case all you have to do is always treat a tab as one character.

                                                                                  1. 1

                                                                                    The whole Zig mantra and philosophy is that edge cases matter and to be explicit about handling them - It can work, I’m just explaining why it is not what Zig does.

                                                                                    1. 1

                                                                                      I mean, in this case I think ignoring CRLF is a pretty big edge case.

                                                                                      1. 1

                                                                                        Explicitly requiring formatting and ignoring are two different things, and that sort of “well what about” reasoning seems like a weak argument without the bug tracker where I saw it was under discussion.

                                                                              2. 2

                                                                                This is a real problem. Rust “solves” this by always replacing tabs with 4 spaces in compiler errors, which is kind of silly.

                                                                            1. 6

                                                                              Have a camera pointed at the door, use new machine learning hotness to decide if a person is approaching the door, and warn. Bonus if it also learns the state of the door (open, opening, closing, closed) via images…

                                                                              1. 1

                                                                                “use new machine learning hotness to decide if a person is approaching the door”

                                                                                Old: a company In-Q-Tel funded did stuff like that. I recall brochure talking about potentially spotting people jumping over fences. Maybe it was 3VR. They kind of people they funded could probably have designed something better for this, though, given some of their stuff was tamper-resistant. ;)

                                                                                1. 2

                                                                                  cool! I hadn’t heard of 3VR before. I wasn’t trying to imply that machine learning was a new technique, only that it’s the new IT fad :) But mostly I was just trying to have fun with and continue in style with the OP’s list.

                                                                                  • Hire a child (for ice cream) to watch the door for you, and push a key on the keyboard attached to an openBSD machine when they see someone @ the door.
                                                                                  • Train a dog to watch the door and turn on an openBSD machine when the door opens.
                                                                                  • Have a solar panel attached to the door that’s in darkness when the door is closed, but in light when open, have it power a small openBSD machine.

                                                                                  That’s all I have in me for now :)