With the fail-fast approach, yes - unless we introduce an option to collect all errors. In my own applications, I have found this to be a better default because the 'average' requests is valid and paying a constant overhead just to be thorough on rare invalid cases can be wasteful.
My overall takeaway has mostly been to not optimize for the worst case by default. Keep fail-fast as baseline for boundaries and hot paths, and selectively enable “collect all” where it demonstrably saves human time.
A useful counterexample, where one wants to see all errors, is validating form input. But it's very much ok to say your library is not meant for that use case!
That is a good point! How do you feel about fail-fast by default but being able to configure a validator to collect all errors (like Zod does by default)? Something like array(number(), { failFast: false });
We currently expose error as a tree structure so that it's easy to map an error to a value or build custom error messages (we only provide debug error message) and I haven't been able to come up with a satisfactory error API that accommodates multiple error paths, but you raise an excellent point. Thanks for pointing out.
> The only real justification here is that it probably makes lives easier for Apple developers since they can now manage a single codebase for settings vs. separate ones.
While this is probably a large factor in their decision to do this, I wouldn't say that "no one expects a computer to work exactly the same way as a phone or tablet". My parents would definitely say otherwise. In fact, there's been some discussion on HN before about today's kids & teens not knowing how computer file systems work [0].
Obviously the majority of folks on this orange site have a strong understanding of how computers and filesystems work. However, there are more and more people that will grow up fully on tablet and mobile devices that will have a completely different mental model of what a "computer" is.
It's probably a bit counter-intuitive for the "if its not broke don't fix it" crowd. But lifting the rug and revisiting ideas is pretty central to how they operate over there.
The logic probably follows that if they were developing these settings panels anew, would they be different from one another, or should they be the same. Somewhere along the line they've realised keeping things consistent inside their ecosystem is simpler for their users, and the reasons for keeping them different are outweighed by the advantages of having them operated similarly.
This might be hard to believe, but I find some people are confused merely by the iOS app being called "Settings" and the macOS app being called "System Preferences". One is a hang over from earlier mac days and the other is a simple one word title that describes the app succinctly. It's not a surprise that they're both named Settings now, similar to how macOS and iOS apps have been slowly getting renamed for consistency (e.g. Address Book becoming Contacts.)
I think people also forget that it takes quite a bit of work to rejig apps, especially ones this central to the OS - so it's not exactly something I would describe as a lazy effort, even if it does produce more manageable code in the long term, which of course has invisible user benefits such as less bugs and faster deployment of security fixes.
> there's been some discussion on HN before about today's kids & teens not knowing how computer file systems work
I don't think normal people ever cared about file systems. Windows users from previous generations apparently only know three locations: Documents, Downloads and the Desktop. Save a file in any other location and it might as well be gone.
- Backups are stored in file system snapshots, that look like folders in Finder, but are invisible when using ls on the command line.
- Applications that come with macOS in /Applications are stored in a separate partition than user installed applications.
- iCloud Drive looks like single folder in the Finder, but it's the contents of several directories merged together, with some magic to automatically download files when you try to open them. On the command line, remote files are invisible until you download them.
So I think the problem is that modern UIs try to hide where data is stored, and therefore people have a hard time learning how the file systems look under the hood.
The difference is that Windows to some degree were "file first" you go to "My Files" and from there pick a file, double click and the correct application opens. Especially Win95 pushed the "file as entry point"
That was the difference to DOS, where you'd start the program and load a file from within.
Nowadays we have circled back to phone and apps, where often you don't really deal with files anymore, but data stored in some service remote and there isn't even a save button anymore (and where it remains it is a legacy thing with a floppy icon, with the file as archaic as the floppy)
Sounds like you had a great director who was willing to shield their org from bs top-down demands.
I didn't appreciate this skill until I had a manager who did the same for me. Having a manager who can ruthlessly prioritize, set expectations, and help navigate all of the corporate bureaucracy is a godsend.
Having once been that manager, let me just add that there is a price to pay: all the corporate BS normally reserved for a whole team now lands on one person's shoulders. Combined with some personal stuff, this broke me.
When you come across a clear occasion of crap having been deflected from landing on you, do the right thing: show some appreciation for it to your manager. It goes a long way.
It sounds like you were a fantastic manager who cared about their team, I'm very sorry to hear that. Seems like it can be a very thankless job a lot of the time.
Hopefully we can normalize showing appreciation from all directions (direct reports, sr mgrs, directors, etc.) for those who deserve it.
While the corporate world is strange and toxic on many levels, being on a solid team where everyone has each other's backs (necessary because of the warring-fractions-like relationships within the same company), is a bonding and exhilarating experience.
Not to mention a nicer peripherals like the screen and keyboard. Majority of people are not purchasing a MBA for pro-grade workloads. I think the MBA meets the requirements for its niche quite nicely.
Your comment reminded me of this article[1] that has probably been posted plenty of times on HN. You've described both the "hacker" and the "mathematician" tribes.
> That's what I love about engineering generally, the ability to roughly understand what is going on around me down to some first principles.
This! It's very empowering and one of the things that drew me to tech/computers. Being able to understand things helped me realize the potential of what is possible with computers/computing technology.
I majored in EE in undergrad and didn't really appreciate my EE education until I got older (I was more interested in software).
I think the person you responded to was referring to Discourse[1] forums, not Discord[2]. Although I agree with you and the gp, both Discourse and Discord have very different incentives than traditional social media FB, IG, etc.
"If you owe the bank $100, that's your problem. If you owe the bank $100 million, that's the bank's problem."
Technically you're correct. If only a handful of employees migrated, they could probably be let go pretty easily. No skin off Facebook's back.
Now if hundreds or thousands of employees migrated, Facebook needs to make a decision whether enforcing the RTO or not will hurt them more. Regardless of technicalities, demanding a non-significant percentage of your workforce to uproot their lives is not an easy ask (or great look).
My experience is pretty similar to yours but I think what you need to try to understand is that everyone has a different level of what is an acceptable "minimal" lifestyle. For a lot of people, these are habits/behaviors that they grew up with as well. It's complicated.
Lack of financial literacy is another problem that, I think, exacerbates the above.
I understand where you’re coming from but no one is forcing them to have the latest iPhone or make other unwise decisions. Living frugally and depriving yourself of pleasures that others take for granted (like I NEVER use doordash but for others it’s a way of life multiple times a week) is a choice as well. Having a high acceptable minimum lifestyle is their choice and choices have consequences.
would this mask any errors that would occur later in the validation?