Posting this article in this format reminds me of truly good story writing. Would've been a top 3 pieces of writing all time for me without all of the anecdotes in between. All of the information you need to know is already written without all of the in-your-faceness of the bridge paragraphs between reviews.
Still an amazing story, props to the Verge. But could've been an all time great.
> 3M does not provide product information on which filters are best for government repression
Great writing.
>When I eventually sat down to write my article about the Portland protests, I had a strange kind of epiphany, if it can even be called that. Out in the real world, when drowning in tear gas and adrenaline
Bad writing.
This is a genius product review right now for all the reasons everyone else thinks it is. I didn't need to read a single one of the authors personal experiences to understand the underlying message, or read ~100 words about their internal struggles to classify Portland as a riot versus a protest. The lack of brevity and conciseness seriously undercuts the absolute geniusness of maliciously compliant product reviews about gas masks in our current political climate.
My comment is about the art of subtlety. Again, this is an amazing article, but it's literally just been flagged by HN because it waxes poetic about politics instead of allowing all of that to be there without saying it. We can all read between the lines.
That makes sense to me. I really enjoyed the personal anecdotes and I thought they made the article a lot stronger for me, but a dry gas mask review would have also been an excellent, albeit different, article.
No, it's actually you who is the one who is misunderstanding.
The product review, while it does stand on its own, is not the main purpose.
The point is to render absurd the incredulous comments from Pam Bondi, "How did these people go out and get gas masks?" Bondi did not ask this question to receive an answer, "oh, they go to Home Depot and get model X-54-Whatever." The point of her question was to cast aspersion on the protestors, to attempt to delegitimize their grievances by painting them as paid, professional agitators. It's the sort of "I'm just sayin'" bullshit rhetoric we've all had to deal with from racist uncles at Thanksgiving for the last 25 years.
Jeong's article works by failing to engage Bondi's comments on Bondi's grounds. Jeong's use of product review as a structure for her article is a conceit that treats Bondi's comments as a legitimate request for product reviews, side-stepping the concept that only paid professionals could ever know anything about gas masks, because information on the Internet is and wants to be free.
Framing an agreement between companies to not poach each others top talent as a means to “crush their employees” is very discrediting.
I’m glad for the antitrust litigation. It’s very obvious that this was a collusion effort that was self serving to each party involved, as a means of overcoming a negative (for them) prisoners dilemma type situation.
The fact that it depressed wage growth was a welcomed side effect. But framing that as the intended outcome as a way of discrediting original author is telling. I don’t know if you’ve understood corporations to be rather simple profit seeking entities, whose behavior can be modeled and regulated to ideal societal outcomes accordingly.
> Framing an agreement between companies to not poach each others top talent as a means to “crush their employees” is very discrediting.
How exactly would you frame major corporations colluding to suppress wages?
> What military action is GitHub involved with.
GitHub has been part of Microsoft for the better part of a decade now, and Microsoft is pretty broadly involved with the military (across a wide swathe of countries)
Perceiving corpos as "simple profit seeking entities" is some of the most naive Milton Friedman crap. Corporations operate as an amalgamation of the desires of a group of powerful enough influencers, of which your rank and file investor is NOT making a meaningful contribution. Milton Friedman has done more harm to capitalism than Marx has done to socialism.
Friedman abstracted away feedback loops between corpos and the social/regulatory environment they operate in. We agree that that is beyond fucking useless.
I didn’t make that same naive assumption when describing corpos as simple profit seeking entities, you just misunderstood what I was saying.
A highly cited reason for using mongo is that people would rather not figure out a schema. (N=3/3 for “serious” orgs I know using mongo).
That sort of inclination to push off doing the right thing now to save yourself a headache down the line probably overlaps with “let’s just make the db publicly exposed” instead of doing the work of setting up an internal network to save yourself a headache down the line.
> A highly cited reason for using mongo is that people would rather not figure out a schema.
Which is such a cop out, because there is always a schema. The only questions are whether it is designed, documented, and where it's implemented. Mongo requires some very explicit schema decisions, otherwise performance will quickly degrade.
Fowler describes it as Implicit vs Explicit schema, which feels right.
Kleppmann chooses "schema-on-read" vs "schema-on-write" for the same concept, which I find harder to grasp mentally, but describes when schema validation need occur.
There is a surprising amount of important data in various Mongo instances around the world. Particularly within high finance, with multi-TB setups sprouting up here and there.
I suspect that this is in part due to historical inertia and exposure to SecDB designs.[0] Financial instruments can be hideously complex and they certainly are ever-evolving, so I can imagine a fixed schema for essentially constantly shifting time series universe would be challenging. When financial institutions began to adopt the SecDB model, MongoDB was available as a high-volume, "schemaless" KV store, with a reasonably good scaling story.
Combine that with the relatively incestuous nature of finance (they tend to poach and hire from within their own ranks), the average tenure of an engineer in one organisation being less than 4 years and you have an osmotic process of spreading "this at least works in this type of environment" knowledge. Add the naturally risk-averse nature of finance[ß] and you can see how one successful early adoption will quickly proliferate across the industry.
ß: For an industry that loves to take financial risks - with other people's money of course, they're not stupid - the players in high finance are remarkably risk-averse when it comes to technology choices. Experimentation with something new and unknown carries a potentially unbounded downside with limited, slowly emerging upside.
I'd argue that there's a schema; it's just defined dynamically by the queries themselves. Given how much of the industry seems fine with dynamic typing in languages, it's always been weird to me how diehard people seem to be about this with databases. There have been plenty of legitimate reasons to be skeptical of mongodb over the years (especially in the early days), but this one really isn't any more of a big deal than using Python or JavaScript.
Yes there's a schema, but it's hard to maintain. You end up with 200 separate code locations rechecking that the data is in the expected shape. I've had to fix too many such messes at work after a project grinded to a halt. Ironically some people will do schemaless but use a statically typed lang for regular backend code, which doesn't buy you much. I'd totally do dynamic there. But DB schema is so little effort for the strong foundation it sets for your code.
Sometimes it comes from a misconception that your schema should never have to change as features are added, and so you need to cover all cases with 1-2 omni tables. Often named "node" and "edge."
> Ironically some people will do schemaless but use a statically typed lang for regular backend code, which doesn't buy you much. I'd totally do dynamic there.
I honestly feel like the opposite, at least if you're the only consumer of the data. I'd never really go out of my way to use a dynamically typed language, and at that point, I'm already going to be having to do something to get the data into my own language's types, and at that point, it doesn't really make a huge difference to me what format it used to be in. When there are a variety of clients being used though, this logic might not apply though.
If you're only consuming, yes. It might as well be a totally separate service. If it's your database that you read/write on, it's closely tied to your code.
We just sit a data persistence service infront of mongo and so we can enforce some controls for everything there if we need them, but quite often we don’t.
It’s probably better to check what you’re working on than blindly assuming this thing you’ve gotten from somewhere is the right shape anyway.
The "DAO" way like this is usually how it goes. It tends to become bloated. Best case, you're reimplementing what the schema would've done for you anyway.
The adage I always tell people is that in any successful system, the data will far outlive the code. People throw away front ends and middle layers all the time. This becomes so much harder to do if the schema is defined across a sprawling middle layer like you describe.
As someone who has done a lot of Ruby coding I would say using a statically typed database is almost a must when using a dynamically type language. The database enforces the data model and the Ruby code was mostly just glue on top of that data model.
That's fair, I could see an argument for "either the schema or the language needs to enforce schema". It's not obvious to me that one of the two models of "only one of them is" deserves to much more criticism than the other though.
It's possible you didn't intend it, but your parent comment definitely came off as snarky, so I don't think you should be surprised that people responded in kind. You're honestly doing it again with the "let's stop feeling attacked" bit; whether you mean it or not, your phrasing comes across as pretty patronizing, and overall combined with the apparent dislike of people disagreeing with you after the snark it comes across as passive-aggressive. In general it's not going to go over well if you dish out criticism but can't take it.
In any case, you quite literally said there was a "lack of schemas", and I disagreed with that characterization. I certainly didn't feel attacked by it; I just didn't think it was the most accurate way to view things from a technical perspective.
If society could redirect 10% of this anger towards actual societal harms we'd be such better off. (And yes getting AI spam emails is absolute nonsense and annoying).
GenAI pales in comparison to the environmental cost of suburban sprawl it's not even fucking close. We're talking 2-3 orders of magnitude worse.
Alfalfa uses ~40× to 150× more water than all U.S. data centers combined I don't see anyone going nuclear over alfalfa.
"The few dozen people I killed pale in comparison to the thousands of people that die in car crashes each year. So society should really focus on making cars safer instead of sending the police after me."
Just because two problems cause harms at different proportion, doesn't mean the lesser problem should be dismissed. Especially when the "fix" to the lesser problem can be a "stop doing that".
And about water usage: not all water and all uses of water is equal. The problem isn't that data centers use a bunch of water, but what water they use and how.
> The few dozen people I killed pale in comparison to the thousands of people that die in car crashes each year. So society should really focus on making cars safer instead of sending the police after me.
This is a very irrelevant analogy and an absolutely false dichotomy. The resource constraint (Police officers vs policy making to reduce traffic deaths vs criminals) is completely different and not in contention with each other. In fact they're actually complementary.
Nobody is saying the lesser problem should be dismissed. But the lesser problem also enables cancer researchers to be more productive while doing cancer research, obtaining grants, etc. It's at least nuanced. That is far more valuable than Alfalfa.
Farms also use municipal water (sometimes). The cost of converting more ground or surface water to municipal water is less than the relative cost of ~40-150x the water usage of the municipal water being used...
It's pure envy. Nobody complains about alfalfa farmers because they aren't making money like tech companies. The resource usage complaint is completely contrived.
I don't know what Internet sites you visit, but people absolutely, 100% complain about alfalfa farmers online, especially in regards to their water usage in CA.
Honestly a rant like that is likely more about whatever is going on in his personal life / day at the moment, rather than about the state of the industry, or AI, etc.
I’m beginning to realize a common thread of “HN commenters completely misunderstanding economics” is that evaluation of policy only with N=1 Company Per Industry.
Competition is the foundation of all of the positives of market dynamics. Nothing good happens in a capitalist society without competition.
Assuming that any gains in productivity will exist _solely_ to fatten the pockets of corporate executives makes sense if you think that all goods of an industry are made by one company.
However, this isn’t what happens. Pricing in a competitive environment is largely driven by what producers can profitably outcompete and deliver. Not the maximum they can charge the consumer…
> Are you getting into Computer Science, or thinking about it? Or maybe you’re in it already. This super-high-level guide is for you!
> I’m not going to talk about how to write code (much). I’ll I’m going to talk about in these roughly 40 pages is more about how to learn when you’re a nascent software developer.
So the answer is "it's not a guide to computer science". It's like a guide talking about how to get better at mental calculation being titled "guide to learning mathematics", or a guide to language learning being titled "guide to learning linguistics".
I’ve had Beej’s Guide to C and Beej’s Guide to networking bookmarked for an embarrassing amount of time.
But this is the first guide that I know the material! I have “learned computer science” (somewhat). And I have to say it has propelled Beej’s other guides to the top of my reading list. The subchapters I skimmed and their content are just so relevant and I know many new and experienced devs (myself included) who would still benefit greatly from reading this. Just exceptionally well done.
I recently read his networking guide as part of a class and it was invaluable. It gets you up to speed without overwhelming you with detail. It's a lightweight read.
That sounds like HPBN (High-Performance Browser Networking), an awesome and accessible resource everyone doing anything w the web should read. https://hpbn.co (not .com)
Still an amazing story, props to the Verge. But could've been an all time great.
reply