I know fellow millenials that use their work computers for personal reasons. And thats some of the stupidest things you can do. Dont use work or school hardware for personal reasons.
I'd also say, if you're running Windows you're also surveilled to hell and back as well. Linux is basically the only platform thats not.
And as to larger surveillance, its pervading everywhere. Work. School. Driving (Flock). Commercial web. "Free" services.
I'm glad I grew up in one of the last generations that wasn't habitually online. I did loads of "troublesome behavior", that never followed me. Now, some thing will be captured with a smartphone and memorialized forever. And that... Alas. (Old man yelling at cloud, I guess?)
When my kids start bringing school-owned hardware home that's getting the same treatment.
Got a link to what you meant? This is pretty hard to search for.
> - Emacs
One thing in common with emacs, jupyter, vscode.. these are all capable platforms but not solutions, and if you want to replace your terminal emulator by building on top of them it's doable but doesn't feel very portable.
I'd challenge people that are making cool stuff to show it, and then ship it. Not a pile of config + a constellation of plugins at undeclared versions + a "simple" 12-step process that would-be adopters must copy/paste. That's platform customization, not something that feels like an application. Actually try bundling your cool hack as a docker container or a self-extracting executable of some kind so that it's low-effort reproducible.
It's part of plan9:
IANAL, but I believe in at least some scenarios, officer(s) of U.S. corporations can go to jail if they are responsible for the directing the corporation to commit certain offending actions (despite not physically doing it themselves). To be clear, I'm not just talking about personal liability for fraud, insider trading, etc they may have committed themselves.
A recent example might be when Adobe was fucking around repeatedly making it virtually impossible for users to cancel Creative Cloud subscriptions - despite having already agreed to do so. IIRC the Justice Department issued a warning if it wasn't fixed immediately, they'd prosecute the Executive Vice President responsible for the business unit. Their press release named the guy and emphasized the consequences for continued non-compliance could include that guy going to jail.
https://www.raspberrypi.com/news/piolib-a-userspace-library-...
Plenty of use cases in embedded!
Except Ruby doesn't? cue `method_missing`. If you take only trivial examples you're not going to see much difference, this starts to show when you involve more advanced situations e.g with inheritance, and then you're drilling into singleton classes.
> Ruby immediately calls the method once it's found, whereas Python (generally) doesn't - instead it returns a binding to be called later
Again incorrect, `foo.bar` in Ruby and Python are two very fundamentally different things.
Python returns a binding to a method because it's an attribute accessor; when you throw inheritance into the mix it ends up that that attribute is inherited from the parent class, bound to the instance (which really in python means pass `self` as first argument), and - schematically - adding `()` after that ends up calling that bound method. If there's no attribute that's a no method error. It's all very C-ish and make believe, barely a notch above Go structs and their functions. The closest parallel in Ruby would be `foo.method(:bar).call()`
By contrast Ruby is going to send the :bar message along the inheritance chain, and if someone can respond it's going to invoke the responder's code, and surprise surprise method_missing happens only if it has exhausted inheritance but it's itself a method-slash-message; Oh and by the way the message passing is naturally so lazy that you can actually modify the inheritance chain -in flight- and inject a parent responder right before calling `super`. The whole notion of `binding` is a very concrete construct, way more rich that simply "hey I'm passing self as first argument". It becomes even more strange to "C&al. folks" when you start to involve singleton classes and start to realise weird things like Ruby classes are merely instances of the class Class and it's all instance turtles all the way down and all stupidly simple but you gotta have to wrap your head around it.
I surmise that so many differences and surprises have with Ruby are because most languages have some ALGOL legacy and Ruby is a conceptual heir to Smalltalk (and LISP†); the whole concept of open classes being another one: nothing is ever "finished" in Ruby!
Most of the time you don't have to care about these differences, until you do.
† While code isn't quite S-expr data in Ruby, there are more than enough first-class facilities that you can create and inject code entirely dynamically without resorting to `eval`ing strings.