Readit News logoReadit News
oalae5niMiel7qu commented on Discord's face scanning age checks 'start of a bigger shift'   bbc.com/news/articles/cjr... · Posted by u/1659447091
stego-tech · a year ago
A long, long time ago (within the past ten years), I had to verify my age with a site. They didn't ask for my ID, or my facial scan, but instead asked for my credit card number. They issued a refund to the card of a few cents, and I had to tell them (within 24hr) how much the refund was for, after which point they'd issue a charge to claw it back. They made it clear that debit and gift cards would not be accepted, it must be a credit card. So I grabbed my Visa card, punched in the numbers, checked my banking app to see the +$0.24 refund, entered the value, got validated, and had another -$0.24 charge to claw it back.

Voila, I was verified as an adult, because I could prove I had a credit card.

The whole point of mandating facial recognition or ID checks isn't to make sure you're an adult, but to keep records of who is consuming those services and tie their identities back to specific profiles. Providers can swear up and down they don't retain that information, but they often use third-parties who may or may not abide by those same requests, especially if the Gov comes knocking with a secret warrant or subpoena.

Biometric validation is surveillance, plain and simple.

oalae5niMiel7qu · a year ago
Credit cards are trivially traceable to your legal identity, since anti-money-laundering and know-your-customer laws require that credit card companies keep this information. The government can subpoena this information just as easily as they could with pictures of your face or ID.
oalae5niMiel7qu commented on The subtle art of designing physical controls for cars   theturnsignalblog.com/the... · Posted by u/vsdlrd
schiffern · a year ago
That's the workaround I'm forced to use, but obviously the disadvantages are noise exposure and forgetting it's cracked resulting in rain entering the car. :-(

Yay for "progress" eh? I know the recirculate door servo can stop halfway, just let me control it...

oalae5niMiel7qu · a year ago
Putting the recirculation door on a servo was another dumb MoDeRn car idea. Bring back the mechanical control that never failed.
oalae5niMiel7qu commented on The subtle art of designing physical controls for cars   theturnsignalblog.com/the... · Posted by u/vsdlrd
oalae5niMiel7qu · a year ago
>I created an automated system controlled by a temperature dial. This, in turn, determines the fan speed and seat heating. If the cabin temperature deviates significantly from the set temperature, the system will increase the fan speed and seat heating or cooling accordingly.

Oh, god. It just keeps getting worse. I don't want a fake knob that simulates a real one except it ignores me and decides the fan speed, blend door position, and probably the recirculation door on its own (allowing only a temporary override). I want a fan dial that is electrically connected to the fan, such that the position of the dial directly controls the voltage being sent into the fan motor, with no computer or robotics in between. In other words, a step switch. And I want a slider that is mechanically connected to the blend door for controlling temperature, again, with no computer or robotics in between. And the same for the recirculation door.

oalae5niMiel7qu commented on Cognitive load is what matters   minds.md/zakirullin/cogni... · Posted by u/zdw
gleenn · a year ago
I'm optimizing for a large, complex corporate projects, not beginners on toy projects. And I would also add that if you search for "how do you do X in Y language", you'll probably find every combination of a lot of languages so I hardly think that is grounds to dismiss Clojure. More and more languages seem to be embracing immutability and static functions are everywhere. The two are just utilized well and believe me, if you need to refactor something then you are so much more at liberty which is certainly a high bar IMHO.
oalae5niMiel7qu · a year ago
>I'm optimizing for a large, complex corporate projects, not beginners on toy projects.

There's nothing about large, complex corporate projects that demands that languages impose arbitrary restrictions on code, except the fact that so many corporations insist on hiring incompetent fools as programmers, often to save money in the short run by expanding the potential labor pool. They call them "guardrails", but a better metaphor would be the playpen. If you hire only competent developers, then you don't need to put them in a playpen.

>And I would also add that if you search for "how do you do X in Y language", you'll probably find every combination of a lot of languages so I hardly think that is grounds to dismiss Clojure.

Well yeah, it's pretty much the norm in popular programming languages to make certain things impossible. And programming is driven by fads, so we're going to see more and more of this until it finally goes out of fashion one day and some other fad comes along.

oalae5niMiel7qu commented on That's not an abstraction, that's a layer of indirection   fhur.me/posts/2024/thats-... · Posted by u/fagnerbrack
voidhorse · a year ago
The best way to achieve a good abstraction is to recall what the word meant before computer science: namely, something closer to generalization.

In computing, we emphasize the communicational (i.e. interface) aspects of our code, and, in this respect, tend to focus on an "abstraction"'s role in hiding information. But a good abstraction does more than simply hide detail, it generalizes particulars into a new kind of "object" that is easier to reason about.

If you keep this in mind, you'll realize that having a lot of particulars to identify shared properties that you can abstract away is a prerequisite. The best abstractions I've seen have always come into being only after a significant amount of particularized code had already been written. It is only then that you can identify the actual common properties and patterns of use. Contrarily, abstractions that are built upfront to try and do little more than hide details or to account for potential similarities or complexity, instead of actual already existent complexity are typically far more confusing and poorly designed.

oalae5niMiel7qu · a year ago
I saw this in my codebase firsthand. At first, we had to communicate with one device. Then two. For that second device, I subclassed the class that handled the communication with the first thing, and changed 3 methods in the subclass. Now it was possible to substitute that second device for the first, allowing a different product configuration. After a few years, we had to support a third device type, and now they wanted it to be possible to have more than one of them, and to mix and match them.

Supporting the third device was handed off to a junior dev. I pointed him at my subclass and said to just do that, we'd figure out the mixing and matching later. But he looked at my subclass like it was written in Greek. He ended up writing his own class that re-imagined the functionality of the superclass and supported the new device (but not the old ones). Integrating this new class into the rest of the codebase would've been nigh impossible, since he also re-implemented some message-handling code, but with only a subset of the original functionality, and what was there was incorrect.

His work came back to me, and I refactored that entire section of the code, and this is when the generalization occurred: Instead of a superclass, I took the stuff that had to be inherited and made that its own thing, having the same interface as before. The device communication part would be modeled as drivers, with a few simple functions that would perform the essential functions of the devices, implemented once per device type. I kept the junior dev's communication code for the new device, but deleted his attempt to re-imagine that superclass. Doing it this way also made it easy to mix and match the devices.

oalae5niMiel7qu commented on That's not an abstraction, that's a layer of indirection   fhur.me/posts/2024/thats-... · Posted by u/fagnerbrack
oalae5niMiel7qu · a year ago
> When was the last time you had to debug TCP at the level of packets? For most of us, the answer is never.

Who are you people who never have to debug TCP problems? I've had to do it on multiple occasions.

oalae5niMiel7qu commented on Cognitive load is what matters   minds.md/zakirullin/cogni... · Posted by u/zdw
nradov · a year ago
Improvement is always the product of submitting a JEP or JSR.

https://openjdk.org/jeps/0

https://jcp.org/en/jsr/overview

oalae5niMiel7qu · a year ago
The more you contribute to Java, the bigger the problem gets. Java will never die if people keep feeding it, and it'll never be a good language, because that's impossible.
oalae5niMiel7qu commented on Cognitive load is what matters   minds.md/zakirullin/cogni... · Posted by u/zdw
lisper · a year ago
> you cannot ever marshal an army of cheap Lisp programmers

That may be, but since Lisp programmers are easily 10x as productive as ordinary mortals you can pay them, say, 5x as much and still get a pretty good ROI.

> you can't just hire any idiot

Yeah, well, if you think hiring any idiot is a winning strategy, far be it for me to stand in your way.

oalae5niMiel7qu · a year ago
I don't think it's a winning strategy, but I'm in no position to make hiring or programming-language decisions, and I don't have the market insight that would be required to start my own company.
oalae5niMiel7qu commented on Cognitive load is what matters   minds.md/zakirullin/cogni... · Posted by u/zdw
lisper · a year ago
If the world put even a tenth of the effort into training Lisp programmers as it does into training Java programmers you would have no trouble marshaling an army of Lisp programmers.
oalae5niMiel7qu · a year ago
The real problem is you cannot ever marshal an army of cheap Lisp programmers, because Lisp programming requires not only learning but raw ability. The big companies are searching for a language that any idiot can learn in a week, with the hope that they can hire thousands of them now, and fire them all next year when LLMs are slightly smarter.

They run into the problem that programming is inherently hard, and no amount of finagling with the language can change that, so you have to have someone on every team with actual talent. But the team can be made of mostly idiots, and some of them can be fired next year if LLMs keep improving.

If you use Lisp for everything, you can't just hire any idiot. You have to be selective, and that costs money. And you won't be able to fire them unless AGI is achieved.

oalae5niMiel7qu commented on Cognitive load is what matters   minds.md/zakirullin/cogni... · Posted by u/zdw
gleenn · a year ago
Totally agree. I think the biggest and most important things a language designer chooses is what to disallow. For instance, private/package/public etc is one small example of an imposed restriction which makes it easier to reason about changing a large project because if e.g. something is private then you know it's okay and probably easy to refactor. The self-imposed restrictions save you mental effort later. I also love lisps but am a Clojure fan. This is because in Clojure, 90+% of the code is static functions operating on immutable data. That makes it extremely easy to reason about in the large. Those two restrictions are big and impose a lot of structure, but man I can tear around the codebase with a machete because there are so many things that code /can't do/. Also, testing is boneheaded simple because everything is just parameters in to those static functions and assert on the values coming out. I don't have to do some arduous object construction with all these factories if I need to mock anything, I can use "with-redefs" to statically swap function definitions too, which is clean and very easy to reason about. Choosing the things you mr language disallows is one of the most important things you can do to reduce cognitive load.
oalae5niMiel7qu · a year ago
When the code needs to do something that it can't do, there is a massive cognitive load associated with figuring out how to do something approximating it. When the language or a framework is associated with lots of "how do I X" questions, the answers to which are all "completely rethink your program", that is evidence that the language/framework is not reducing cognitive load.

u/oalae5niMiel7qu

KarmaCake day81March 11, 2016View Original