We can, and we do. We already do this for not-digital stores. We've just gotten so greedy that we just throw our hands up and say "nope! Impossible!" when it comes to internet stores.
Guess what, I can go to Walmart and buy just about fucking anything and I can be very certain:
1. It won't kill me or seriously harm me if used in a manner consistent with it's instructions.
2. The product is what it says it is.
3. The product will do what it says it will do, to a reasonable expectation.
How did they do it? Did they burn the company to the ground with all this anti-fraud? No. And, I will give you this, they do get some help from consumer protection agencies like the FDA. But they put in effort, too. For example, the above does not apply to Amazon!
Right, you best believe people in the NBA are getting a nice 8 hours of sleep a night. You just can't compete at that level if you aren't 100%.
These people are working 7 days a week, sure, at like, 60%. They're making mistakes, they're forgetting things, they're approving PRs with obvious bugs.
Or, and I'm speaking from my experience in TF2 here... they're just good.
TF2 is an interesting case study because it's a very old game with a very high skill ceiling. I have 2,000 hours now. Players with 4,000 hand my ass to me.
The difference between an aimbot and a sweaty 4,000 hour sniper is close to none. You peak the corner and within 200ms you're dead. It's easy to think they're cheating, then you open up their steam profile and no, they just have even less of a life than me.
They'll even headshot you when you got invisible on spy. Yes, really. They have so much experience their hands have remembered the movement speed and trajectory of spy. So you go invis, and then they can predict where you're going to be and headshot you. Especially so if you go for a health pack or ammo. It's really crazy stuff, but not cheating.
> I could save $60,000 and do that online for free, probably more efficiently.
Not to burst yours or anyone else's bubble, but no, probably not.
The hard part of learning isn't access to content, it's discipline and dedication. School provides structure, goals, timelines, and deliverables. The value of this cannot be understated.
I've heard from many people how they're going to learn programming online and then get a job as a developer. Almost all of them fail.
I'm teaching faculty at a university and, at least where it comes to lecture courses, I don't find this a bubble. There are definitely plenty of students who would do just fine, if not even better, without the external discipline and structure. And even more those who could do it with something like a MOOC or just a posted curriculum. And to be able to work without an external discipline is IMHO one of the main learning goals of university, and a decent rationale for why a university degree is taken as a signal for recruitment.
I learned programming online and got jobs as a developer (I did later study CS at a university though). In my experience the best developers are those who taught themselves. Admittedly this may have been more the case for my older generation where formal education for programming wasn't that great nor widely available.
Those students do exist, but there are an exceedingly small minority. Of course, they won't tell you this, because everyone likes to believe they're self-motivated. Most people just aren't.
The simple question to ask is, when you go home, what do you do? If the answer is learn how to sew or work on your project car you've had for 10 months, you can probably learn on your own. If your answer is watch TV, play video games, go on a walk - then you can't, and you should go to university. Some people have told me this question is unfair. I mean, they're so tired from work, of course they want to relax. Well, guess what - your life doesn't stop if you're learning how to code on your own or whatever. If that's all it takes for you to not do it, then you don't have what it takes.
How often are people picking up new and complex skills that takes years to get the hang of? Almost never. So there you go, most people require a formal, structured education to pull that off.
> There are definitely plenty of students who would do just fine, if not even better, without the external discipline and structure.
How do you know? It's easy enough to assert, but what kind of proof can there be for this assertion? Obviously the students are enrolled in university, and their accomplishments without it are only hypothetical.
No, a lot of government agencies are specifically positioned to not favor money over safety.
Something like the FAA or FDA would never be conducted by the private sector. Because they're money sinks, and knowing how safe something is, is bad, actually. The private sector would much rather be blissfully unaware. Less liability that way.
The only time something like the FDA "fails" is when they give too much plausible deniability to the private sector. Like when they like J&J handle their asbestos BS in the 70s. And then... we got 50 years of asbestos baby powder. Oops! Should've never trusted them.
While you have a point, we can't just ignore the fact that white people have systemic advantages simply because they're white. White people have always had "DEI" or whatever you want to call it. If you show up to the interview and you're white, congratulations, you're 50% of the way there.
They've done studies on this, but I think even without the studies it's just obvious to everyone:
This is a thread about a system that intentionally and explicitly advantaged one race over another. To then claim that white people have a systemic advantage seems absurd and at best counter factual.
It is counter to the facts in the thread which are systemic and documented. Your subjective feelings and perception do not necessarily correspond to reality as documented or experienced by others. For the individual their perception is their reality so there is no advantage in arguing against it. If your belief system makes you feel better that is all well and good, but it doesn't give you the right to impose it on others. Your shahada is not shared by everyone else.
It's counter to this specific thread. It's not counter to the world at large or, as you say, "reality".
Critical race theory is a real area of study and there are multiple studies backing this up. The systemic advantage white people face is so painfully real and obvious that, if you deny it, you are delusional.
> Your shahada is not shared by everyone else.
It's not "shahada", it's science. Just because it makes you feel slightly uncomfortable doesn't mean it's not real. I encourage you to find a box of tissues, and get over it.
Your article basically says auto dealers are racist but federal contractors and "profitable companies" are generally more comparable. The solution would be to enforce racist regulations against the auto dealer, not falsely generalize the problem and enforce a solution. Secondly, there are fields of academia that make it a point to show racism exists and to uncover racism, so publications like this are as fraught with conflicts of interest as a cigarette company researcher investigating the benefits of nicotine. Pointing the finger at white people is also problematic, it's a racial supply/demand, and generally at competitive fields like medicine or programming, competitive schools, one sees a proportional oversaturation of asians (per capita) versus whites. Shall we say employers are favoring asians and talk about the asian menace, as we do the white menace? If particular races, often tagging a cultural history, are associated with different cultural preferences for lifestyle or career, I would simply say "so what?" If the goal is to homogenize equal participation from all demographics groups to all vocations, to me that seems silly and runs against human nature, it can be expected to work as well as the communist efforts of societal homogenization we saw in the 20th century. Yes, we need to kick the tires and convince ourselves that all are afforded somewhat fair opportunities, but seeing race as a confounder here or there, and immediately leaping to systematic racism as the purported mechanism - that's just poor science.
I'm not "pointing the finger" at anyone. Part of the problem with pointing out systemic racism and unconscious bias is that white folk are very fragile. They get uncomfortable when you point out very obvious deductions - like hundreds of years of racial injustice not magically disappearing in the late 60s.
I'm not saying that other racism doesn't exist. But I am saying that complaints from white people on account of their whiteness is pathetic at best and willfully ignorant at worst. At the end of the day, white people, which includes me, are advantaged in virtually all areas of modern society.
It would be easy to say that I got where I am based purely on my own skill and intellect. It would also not be true. The zip code I was born in, the schools I went to, and the overall landscape of modern America have an incalculable influence in my success.
Humans are racist because humans are tribal. Yes, we should work on improving as a society, but don't be surprised that making broad pejorative racial statements doesn't do it.
This is a far better argument:
> The zip code I was born in, the schools I went to, and the overall landscape of modern America have an incalculable influence in my success.
I would also add to that, "the values, attention, nutrition, and opportunities provided by my parents in my formative years"
The worst is photos, because the search abstraction really breaks there. On modern iPhones, it's still a pain in the ass to organize photos in such a way where you can come back later and find them. I'm still in the "scroll through the timeline until you spot it" phase.
Machine Learning is making this better, but ideally albums or folders wouldn't be such a pain in the ass to actually use in day-to-day life.
No, it’s footgunny and riddled with bugs. Most JS barely works and edge cases just aren’t addressed.
I’ve seen undefined make it all the way to the backend and get persisted in the DB. As a string.
JS as a language just isn’t robust enough and it requires a level of defensive programming that’s inconvenient at best and a productivity sink at worst. Much like C++, it’s doable, but things are bound to slip through the cracks. I would actually say overall C++ is much more reasonable.
> I would actually say overall C++ is much more reasonable.
This is where I know that, some people, are not actually programming in either of these languages, but just writing meme driven posts.
JS has a few footguns. Certainly not so many that it's difficult to keep in your head, and not nearly as complex as C++, which is a laughable statement.
You've "seen null make it to the database," but haven't seen the exact same thing in C++? Worse, seen a corrupted heap?
I haven't seen null make it to the database, I've seen undefined. And here you demonstrate one of many problems - there's multiple null types!
In C++, there's only one null, nullptr. But most types can never be null. This is actually one area where C++ was ahead of the competition. C# and Java are just now undoing their "everything is nullable" mistakes. JS has that same mistake, but twice.
It's not about complexity, although that matters too. C++ is certainly more complex, I agree, but that doesn't make it a more footgunny language. It's far too easy to make mistakes in JS and propagate them out. It's slightly harder to make mistakes in C++, if you can believe it. From my experience.
C# introduced nullable reference types back in 2019, so it's been some time and now the vast majority of the ecosystem uses null-aware code. The only remaining warts are around a. codebases which refuse to adopt this / opt out of it and b. serialization.
It's not a different reality. To give perspective to what JS I've dealt with - I worked a couple years on a legacy webapp. It used vanilla JS and the only library used was jQuery. It heavily used iframes for async functionality in combination with XSLT to translate backend XML apis to HTML.
Opening up a 10K lines JS file is like jumping into the ocean. Nothing is obvious, nothing makes sense. You're allowed to just do whatever the fuck in JS. Bugs where always ephemeral. The behavior of the code was impossible to wrap your head around, and it seemed to change under your feet when you weren't looking.
Now, the backend was written in old C++. And yes, it was easier to understand. At least, I could click and go to definition. At least, I could see what was going in and out of functions. At least, I could read a function and have a decent understanding of what it should be doing, what the author's intention is.
The front end, spread across a good thousand JS files, was nothing of the sort. And it was certainly more buggy. Although, I will concede, bugs in C++ are usually more problematic. In JS usually it would just result in UI jankyness. But not always.
Fortunately every browser made in the last 25 years supports keepalive. e.g. Firefox (and according the the reporter of this bug, Chrome) won't even let you disable it[0].
No you really don’t. I’ve worked on exceptionally complex legacy applications with essentially no state in the front end. At most, you’re looking at query parameters. You just make everything a full page reload and you’re good to go.
You don't need an SPA to handle incrementing a counter. If a page needs dynamic behavior you add JS to it, whether it's just adding an in-memory counter or an API call to store and retrieve some data. It's not difficult to write JavaScript.
The problem with SPAs is that they force having to maintain a JS-driven system on every single page, even those that don't have dynamic behavior.
> You don't need an SPA to handle incrementing a counter. If a page needs dynamic behavior you add JS to it, whether it's just adding an in-memory counter or an API call to store and retrieve some data. It's not difficult to write JavaScript.
I agree with this. Sprinkle in the JS as and when it is needed.
> The problem with SPAs is that they force having to maintain a JS-driven system on every single page, even those that don't have dynamic behavior.
I don't agree with this: SPAs don't force "... having to maintain a JS-driven system on every single page..."
SPA frameworks do.
I think it's possible to do reasonably simple SPAs without a written-completely-in-JSX-with-Typescript-and-a-5-step-build-process-that-won't-work-without-25-npm-dependencies.
I'm currently trying out a front-end mechanism to go with my high-velocity back-end mechanism. I think I've got a good story sorted out, but it's early days and while I have used my exploratory prototype in production, I've only recently iterated it into a tiny and neat process that has no build-step, no npm, and no JS requirement for the page author. All it uses is `<script src=...>` in the `<head>`, with no more JS on the rest of the page.
A codebase doesn't need that toolset to be an SPA. An SPA is just a website where all the site's functionality is done on the "root page", and it uses JS to load the data, handle navigation, etc. Doesn't matter whether that's all done through React in TypeScript and compiled by Vite or by handrolled JavaScript fetched in .js files.
> A codebase doesn't need that toolset to be an SPA.
That's kinda the goal I'm trying to reach. If you know of any SPA that doesn't come with all the baggage and only uses `<script src=...>`, by all means let me know.
True, I shouldn't have said in memory. As the GP mentioned, you can store the counter value in a URL param. There are ways to achieve dynamic behavior without having to load or store values into JS memory.
That is more work both for the developers and the servers though. You need to re-render the whole page every change, rather than make a local change (or a tiny request if it needs to persist)
You misunderstood what I was saying. I was saying that you could write some plain old JS to catch an event on incrementing and updated the URL and the UI, and some JS to get the data from the URL on page load to set the UI. No new server render, and that's maybe 5 minutes of writing JavaScript code (compared to, say, setting up react project and instantiating that whole beast from the page root until reaching the specific UI element that needs to be dynamic).
What's the business usecase for incrementing a counter?
We can sit here all day and think up counterexamples, but in the real world what you're doing 99% of the time is:
1. Presenting a form, custom or static.
2. Filling out that form.
3. Loading a new page based off that form.
When I open my bank app or website, this is 100% of the experience. When I open my insurance company website, this is 100% of the experience. Hell, when I open apartments.com, this is like 98% of the experience. The 2% is that 3D view thingy they let you do.
> What's the business usecase for incrementing a counter?
Notification count in the top right?
Remaining credit on an interactive service (like the ChatGPT web interface)?
So, maybe two(!) business use-cases out of thousands, but it's a pretty critical two use-cases.
I agree with you though - do all normal HTML form submissions, and for those two use-cases use `setInterval` to set them from a `fetch` every $X minutes (where you choose the value for $X).
In my experience it's just exceedingly rare to require this. My insurance company website has a notification thing, and it's actually static. You need to refresh the page, and considering how few and far between notifications are, and how common refreshes are, it works fine.
There's an entire ___domain of apps where you truly need a front-end. Any desktop-like application. Like Google Sheets, or Figma. Where the user feedback loop is incredibly tight for most operations.
Let's be honest -- the alternative is an API call with poor or no error-handling with the brilliant UX of either hanging with an endless loading indicator, or just flat out lying that the counter was incremented...
> or just flat out lying that the counter was incremented...
Which is what HN does and it sucks. It's very common for me to vote on a couple things and then after navigating around I come back to see that there are comments that don't have a vote assigned.
Of course the non-JS version would be even more annoying. I would never click those vote buttons if every vote caused a full page refresh.
Guess what, I can go to Walmart and buy just about fucking anything and I can be very certain:
1. It won't kill me or seriously harm me if used in a manner consistent with it's instructions.
2. The product is what it says it is.
3. The product will do what it says it will do, to a reasonable expectation.
How did they do it? Did they burn the company to the ground with all this anti-fraud? No. And, I will give you this, they do get some help from consumer protection agencies like the FDA. But they put in effort, too. For example, the above does not apply to Amazon!
reply