Hacker Newsnew | past | comments | ask | show | jobs | submit | da_chicken's commentslogin

Yeah, there are alfalfa fields in central Arizona. Alfalfa basically turns water and sunlight into cellulose about as quickly as plants can.

Worse, the owners of those fields are often foreign companies. That means they use tremendous amounts of water in one of the driest regions on earth, in the middle of a multiple decade drought, and the wealth these farms generate disappears overseas.


Part of the issue is not systematically using a pricing structure that charges disproportionately more for usage above high thresholds.

The 101-level "solution" is to just raise the price to account for demand. The problem with that is that it treats all usage the same, whether it's a residence's first gallon or an alfalfa field's last gallon. But the former is something we need to protect.

It makes sense to price water, and electricity, in a fashion where the first X costs a certain amount, and the next X has a higher rate, and above some percentile of usage it has a much higher rate, and at some percentile of usage, customers should be very nearly paying for new required utility infrastructure themselves. That allows using pricing to solve supply problems, without penalizing normal levels of usage.

Some utilities already do this. But if there are actual issues with having enough supply for both datacenters/farms/smelters/etc and residential usage, then they're not doing this well enough, or don't have the pricing correct.


I disagree. A large part of the cost of a utility is fixed per customer. Or any product really. That's how bulk purchasing makes sense. I can get 4x the product at a bulk store for 2x the price. Instead of being prejudicial about the use case, let's just charge what the utility actually costs. Include capital, operation, and decommissioning costs. That way, if you get a sudden spike in demand, you have the cash flow to issue a bond a scale up.

This would be an extremely regressive pricing structure that still has the same punchline: somehow residential users pay more to still not have any water.

This causes major market distortions and worse outcomes than the econ 101 solution.

The problem is that water isn't traded on a normal market at all. Lots of people have historical water rights and pay nearly nothing for their water use. There's byzantine regulation and many have the right to use for some purpose on their land but not to resell, so the market cannot allocate to more efficient use.

If you just let the 101 level solution actually work, water prices will rise until inefficient uses like water-intensive agriculture (not even all crops!) are pushed out. Urban users easily outbid almost all agricultural use, even at what any person would consider dirt cheap prices. For example, desalinated water, which is considered expensive for agriculture, can be 40 cents per cubic meter of water. That's a lot of water! Usually the last mile of urban water delivery costs more than that.

The amount required to satisfy all urban use, including water hungry lawns etc, and datacenters, corresponds to a very minor reduction in agriculture. Perhaps even just changing which crop is grown or switching irrigation techniques.

Charging more to higher users, price discrimination, causes several problems. First, it creates an incentive to cheat. I'm not using all this water myself, its for this whole group of people who "live" here. Don't allow this kind of spreading (somehow...)? Now you actually screw any business or institution that serves a lot of people. A farm produces food for thousands- do they count as one user? A park uses much more water than a garden but serves many more people. Whatever framework you create will require another bureaucracy to run. Lobbyists will find or insert loopholes for their friends.

The heavy users actually improve the system robustness, in both electricity and water. Their higher demand pays for more supply infrastructure, which itself often benefits from economies of scale, and in a shortage they may even be more responsive to price increases due to their high use.


> Part of the issue is not systematically using a pricing structure that charges disproportionately more for usage above high thresholds.

We don't do this for gasoline (in most countries), even though it is also vital for life. And yet people can still drive, afford to eat food grown with fertilizers, use plastic, and so on.

Turns out markets are pretty good when you leave them alone. But when they're not left alone (as is the case with water today!!) you get some weird shit.


> We don't do this for gasoline

No, but commercial trucks use diesel, which carries about 25% higher taxes per gallon. And vehicle registration on semi-trailer trucks is significantly higher as well. They pay, on average, between $25,000 and $30,000 in taxes and fees each year.

> Turns out markets are pretty good when you leave them alone.

No, they aren't. They're ridiculously bad when you leave them alone because someone captures the market, ramps up anti-competitive practices, and immediately begins rent-seeking as hard as possible.

Free markets are pretty good at finding good prices. Markets that are left alone do not remain free. That lauded "self-interest" encourages businesses that have reached nearly 100% market share to increase profit in other ways.


Heavier commercial trucks that run on diesel tend to cause more damage. Scales with roughly 4th power of axle load.

Gasoline is absolutely rationed when it becomes scarce after having been plentiful.

When hurricanes come to South Florida, the well off migrate North to wait out the storm while the poor suffer the dangerous conditions. Part of this is due to the price spikes of gasoline in the local market as supplies dwindle due to fewer truck shipments and refineries shutting down for the storm.

Water is similar. Both water rights and water utilities are gamed by people who have resources. The people that are hurt are usually poor utilities bill payers, rural residents who are the first to lose service when wells dry up, and anyone who thinks they have water rights until an upstream user exhausts their expected supply.

The “markets work” heuristic is frequently wrong if you don’t glaze over the very many counterexamples.


excuse me? leave the markets alone? to do what? continue screwing people over with the cost of living? at some point the government needs to step in when greed outstrips the ability of the consumer to meet the demand. capitalism on it’s own will demand ever increasing profits and that is simply unsustainable for any civilisation

Gasoline is heavily regulated and subsidized. Leaving the oil market alone resulted in Standard Oil, and we obviously don't want that again.

Standard oil not only reduced consumer prices for gasoline, but was already losing its monopoly to competitors during the antitrust trial.

How is it legal? Shouldn’t water be the most regulated (as in protected) substance of all?

It's quite regulated in the western US, but usually in the direction of guaranteeing water to incumbent landowners. Some people end up with really strong water rights, and they can be wasteful if the law helps them do so.

And are often _encouraged_ to be wasteful by "use it or lose it" type provisions.

A big celebrity, I think one of the Kardashians was a couple of years ago fined and forced to update things when the city found that the big fountain in the front of the home had no recycling or such, but was effectively just an open faucet because I guess keeping it algae free was proving a hassle.

Regulation is not necessarily the same as protecting; as other commenters state the specific regulations around agricultural water use in the drier western united states often encourage wasteful agricultural uses of water.

The driest places tend to have the most tightly-regulated water.

And the wettest places tend to have the least-regulated water.

(Nobody talks about it because shortages make bigger headlines than surpluses do, but there's a ton of agricultural areas in the US that have too much water and where providing drainage for farm fields is much more commonplace than irrigating them is.

It doesn't really matter in this context, though, because folks hate datacenters in these water-rich areas just the same as they do everywhere else.)


I don't know the exact situation described above, but water rights are often linked to property rights, and those are regularly treated as sacred. It doesn't matter if the owners are foreigners and the law is outdated. And those with land often have more money and power than the small government with jurisdiction, assuming the lobbyists haven't taken control of the latter.

> and those are regularly treated as sacred

They indeed are treated as sacred, it's enshrined in the Takings Clause of the US Constitution. The big problem in the American West it that the model of property rights in water sources makes it very difficult as a technical matter to put a price on a specific claim and to adjudicate disputes, without triggering a cascade of pricing and rights dilemmas upstream and downstream (figuratively and literally). Western states could in theory exercise eminent domain to take back water rights, and I think they occasionally do, but it's just very fraught from countless legal angles even before getting into the politics of it, which compound the headaches a hundredfold (partly because of the interdependent nature of everybody's rights). Most of the time Western states try to hack around the issues with complicated regulatory and taxing schemes to try to claw back some semblance of control over water resources. But it's very inefficient and ineffective. Property rights are useful because you don't need to centralize all pricing and usage decisions, or when you do--e.g. regulation, taxation, eminent domain--the mechanisms for applying those decisions are simpler and more mechanical; but Western water rights are just a different kind of beast. What's needed is comprehensive reform that tries to shift the American West to a better water rights model, specifically a better model for how property rights inhere in water resources, to drastically improve transactional efficiency, both from a legal and market perspective. But there's no simple way, and in particular no cheap way from a budgetary perspective, to get there even if the motivation existed to get around the monumental collective action problem, which it doesn't.


> are often foreign companies

That have _themselves_ banned Alfalfa farming; because, of the water impact.


But at least that alfalfa gobbles up CO2 from the air.

Until people/animals eat it, or it decomposes. Not saying this like we should ignore the co2 impact from data centers, but biomass is a pretty poor co2 absorber unless its cyano and falls to the ocean floor before decomposing

> Until people/animals eat it, or it decomposes.

Well, if you want to think about it that way (perfectly reasonable), you'd also want to consider the production of new alfalfa. Figure that at any given time, the world contains X amount of alfalfa, and that amount determines how much carbon is absorbed by the alfalfa industry.


I'm not sure any carbon is absorbed even by this metric. Unless were growing alfalfa and sequestering it below ground.

You should probably also consider inputs to growing that alfalfa too. Even single order inputs like transportation, fertilizer, water, etc would likely have more carbon release than the carbon mass of the alfalfa.

Is alfalfa even one of the plants that will nitrogen fix from the air? Or is it all pulled from the growing medium?


Goes into cow, comes out as methane. cow dies/meat --> co2. All the fossil fuel transportation for alfalfa to cow to brisket --> co2. Lot more co2 generated than absorbed.

No.

The problem is that vendors and developers have repeatedly shown that if you give them an inch, they take a mile. Look at exactly what happened with BlueHammer this month. The security researcher went full disclosure because Microsoft didn't listen to their reports.

Disclosure is vital. It's essential. Because the truth is, if a security researcher has found it, it's extremely likely that it's already been found by either black hats or by state actors. Ignorance is not actually protection from exploitation.

The security researcher also has a responsibility to the general public that is still actively using vulnerable software in ignorance. They need to be protected from vendor and developer negligence as well as from exploits. And the only way to protect yourself from an exploit that hasn't yet been patched is to know that it is there.


The situation with e.g. BlueHammer is fundamentally different: there, the only party that could act on it (Microsoft) ignored them. In this case, the parties that could act on it weren't notified at all.

I'm also not proposing delaying the disclosure to the general public at all. They already waited 30 days with that, that's fine. Just look a bit further than your checklist of only contacting upstream, and send a mail to the distributions if they haven't picked it up a week or two before.


Downstream vulnerability disclosure is a negotiation between the downstreams and the upstreams. It is not the job of a vulnerability researcher to map this out perfectly (or at all).

Yes and that's why the current system where security researchers are expected to reach out to the distro mailing list is flawed and instead there should be a defined pipeline for the kernel security team to give a heads up.

> The problem is that vendors and developers have repeatedly shown that if you give them an inch, they take a mile.

[citation needed]

Is there any evidence that Linux distros (specifically) act in this way? Or a particular distro?


>[citation needed]

there is ~3 decades of citations you can look at, spread out over every security mailing list, security conference, etc. that you can think of.

one decent start is https://projectzero.google/vulnerability-disclosure-faq.html...

"Prior to Project Zero our researchers had tried a number of different disclosure policies, such as coordinated vulnerability disclosure. [...] "We used this model of disclosure for over a decade, and the results weren’t particularly compelling. Many fixes took over six months to be released, while some of our vulnerability reports went unfixed entirely! We were optimistic that vendors could do better, but we weren’t seeing the improvements to internal triage, patch development, testing, and release processes that we knew would provide the most benefit to users.

[...]

While every vulnerability disclosure policy has certain pros and cons, Project Zero has concluded that a 90-day disclosure deadline policy is currently the best option available for user security. Based on our experiences with using this policy for multiple years across thousands of vulnerability reports, we can say that we’re very satisfied with the results.

[...]

For example, we observed a 40% faster response time from one software vendor when comparing bugs reported against the same target over a 7-year period, while another software vendor doubled the regularity of their security updates in response to our policy."

>Linux distros (specifically) act in this way

carving out special exceptions based on nebulous criteria is a bad idea. 90+30 is what has been settled on, and mostly works.


Really?

Because I would call a situation where the development team fails to appreciate the severity of a security vulnerability and has an established procedure that requires the researcher and not the kernel team to communicate with downstream users is already a major failure of process. Security is not just patching the vulnerability, and it seems that the Linux kernel developers or the Linux kernel security team does not understand that.

This is the result of that failure.

If this were any other software, we'd be here with pitchforks and torches. The researcher gave the developers timed disclosure, and even waited until after the developers had patched the issue. And... it's still a problem.


No, this was already timed disclosure. This is very common and widely accepted. 90+30 is what Google Project Zero uses, for example. The security researcher has met their ethical requirements already. This is entirely on the kernel's security team for failure to communicate downstream. That is their responsibility.

The thing is, malicous actors are already monitoring most major projects and doing either source analysis or binary analysis to figure out if changes were made to patch a vulnerability. So, as soon as you actually patch, you really need to disclose because all you're doing by not disclosing the vulnerability is handing the bad actors a free go. The black hats already know. You need to tell the white hats, too, so they can patch.


I'm not advocating for delaying the disclosure at all; my point is, if you see your initial disclosure to the kernel didn't go anywhere, to be responsible is to put in a little extra effort to ensure the fix is picked up before you disclose.

"Didn't go anywhere"? The kernel devs patched it! They patched it weeks ago! The kernel security team needs to communicate security problems in their own releases, because that is where the distros are already looking.

Requiring the security researcher to do it is insane. Should a security researcher that identifies a vulnerability in electron.js need to identify every possible project using electron.js to communicate with them the vulnerability exists? No. That's absurd.


The kernel devs patched it! They patched it weeks ago

FTFA:

> I see that on the 11th of April 6.19.12 & 6.18.22 were released with the fix backported.

> Longterm 6.12, 6.6, 6.1, 5.15, 5.10 have not received the fix and I don't see anything in the upstream stable queues yet as I write.

I wouldn't go so far as to call this "the kernel devs patched it". Virtually none of the kernels that distro's are actually using today have received a fix. This looks like an extremely lackluster response from the kernel security team.

Pretty much the only non-rolling distro's that are shipping a fixed kernel are Fedora 44 and Ubuntu 26.04, both released in the last few weeks. Their previous releases both shipped with Linux 6.17 which is still vulnerable today!


None of this impacts disclosure norms. One important reason the clock starts ticking faster once any patch lands is that for serious attackers, the patch discloses the vulnerability. That's quadruply so in 2026, when many orgs are automatically pumping Linux patches through LLM pipelines to qualify them for exploitability.

But it's been at least 15 years since "reversing means patches are effectively disclosures legible mostly to attackers" became a norm in software security. And that was for closed-source software (most notably Windows). The norms are even laxer for open source.


I'm not sure where in my post I challenged existing disclosure norms?

I don't know if you are or you aren't, but that's the overall topic of the thread, and I'm just clarifying that the details you're adding don't change any of the norms of disclosure.

I'm on Fedora 43 and tried to hack myself with the python script. It didn't work on kernel 6.19.12-200.fc43.x86_64 which has a build date of April 12, 2026

> Should a security researcher that identifies a vulnerability in electron.js need to identify _every_ possible project using electron.js to communicate with them the vulnerability exists? No. That's absurd.

But this is a false comparison, right? The scope of "Linux distributions" and "electron apps" are orders of magnitude different. If the reporter spot checked one or two of the most popular distributions to see if fixes had been adopted, that seems like an extra level of nice diligence before publicizing the details.

It doesn't seem "insane" as much as "not the most efficient path" as has already been well argued. But it also doesn't seem unreasonable to think in a project of the scope of the Linux kernel, with the potential impact of fairly effective(?) privilege escalation, some extra consideration is reasonable--certainly not "insane" at the very least?


They embargoed their vulnerability for 30 days after Linux landed a kernel patch. They did their part. You will always be able to come up with other things they could do for you, and they will always at first blush sound reasonable because of how big and important Linux is, but none of those things will be responsibilities of the vulnerability researcher. Their job is to bring information to light, not to manage downstreams.

About half the thread we're on reads as if the commenters believe Xint made this vulnerability. They did not: they alerted you to it. It was already there.


I realize you've been championing this idea in the thread, and I admire it because I also recognize the misdirected blame. Please understand I do not harbor "blame" for the researchers.

> Their job is to bring information to light, not to manage downstreams.

The researchers are also members of a community in which more harm than is necessary may be dealt by their actions. Nuance must exist in evaluating "reasonable" and "responsible" in the context of actions.


I strongly disagree. I want the information. I don't want to wait longer to find out about critical vulnerabilities so that researchers can fully genuflect to whatever Linux distribution norms people on message boards have. Their "actions" were to disclose a vulnerability that already existed and was putting people at risk. It's an absolute good.

If it helps you out any, even though my logic was absolutely the same and just as categorical in 2012 as it is today: there are now multiple automated projects that run every merged Linux commit through frontier models to scope them (the status quo ante of the patch) out for exploitability, and then add them to libraries of automatically-exploitable bugs.

People here are just mad that they heard about the bug. Serious attackers had this the moment it hit the kernel. This whole debate is kind of farcical. It's about a "real time" response this week to a disaster that struck a month ago.


I do get that, this era of automation is too responsive to not go public to provoke action. I think I might just be wistful of an era in which the alternate path might have made a difference. Sorry to pile on.

You're not piling on and I'm glad to have the opportunity to expand on my point.

In the airless void of a message board thread, of course they should. What does it cost a commenter to demand that?

The only word doing any work at all in that definition is "artifacts", and the problem is that the methodology that is actually foundational to engineering need not be applied to physical objects. Further, it's not clear that this methodology shouldn't be rigorously applied to non-"artifacts" which that can cause equal or greater harms when created negligently.

The definition I always saw used was this one, I think:

> Engineering is the profession in which a knowledge of the mathematical and natural sciences gained by study, experience, and practice is applied with judgment to develop ways to utilize, economically, the materials and forces of nature for the benefit of mankind.

This sounds like it should exclude software design and development. Except it doesn't need to, and it's not really useful to exclude it simply because the definition isn't broad enough. The definition isn't engineering. The definition is trying to describe and encapsulate the reality of engineering. Nuclear and modern electrical engineers frequently never create anything physical in their careers whatsoever. Nuclear engineers manage power generation at facilities that others designed and built, while electrical engineers are frequently just dealing with signal processing. They are not less rigorous in their methodology.

The reality is that engineering is the methodical application of constraints to solve a problem. And it is the methodology that is the valuable aspect. The knowledge is necessary for each discipline, but it is itself fundamentally a prerequisite. There is a reason engineering is a single school of many disciplines.

Meanwhile, the reason that software engineering looks like half-art and half-guess has a lot more to do with software as a non-theoretical field of study only being about 60 years old in practical terms. The fundamental works of the field like The Art of Computer Programming haven't even been written yet.

Whatever happens to software development and operational systems administration in the next 50 years, however, both roles almost certainly would benefit society by becoming actual professions. Their responsibility to society as a whole has been allowed to be understated, and we're well past the days when a computer bug causing the kinds of deaths and damages such as we'd see from a civic work failure or automotive design flaw sounds unreasonable. Indeed, that actually sound fortunate given some of the software catastrophes that have occurred.


>The only word doing any work at all in that definition is "artifacts"

That's the subject, the only word that is NOT doing any work there (since both regular and software engineering produce artifacts).

Words that do the heavy work in that phrase are:

structured, mature, legally enforced, standards-based approach - for repeatable, reliable, verifiable, - artifacts - under stable external constraints

Software can sometime appear to touch those.

E.g. there are "standards", like HTML or like ARIA, so it's "standards-based" too! But those standards are loosely enforced, usually not mandated, loosely defined, and ad-hoc implemented with all kinds of diverting.

Or e.g. software can some times be repeatable. E.g. reproducible builds (to touch upon one aspect). But that's again left to the implementor, seldom followed (almost never for most software work, only in niche industries).

In general, software is not engineering (in the strict sense) because it's anything goes, all the above conditions can or cannot be handled (in any random set), the final work is a moving target, and verification is fuzzy, if it even happens.

>The reality is that engineering is the methodical application of constraints to solve a problem.

In that case, following specific constraits to solve a math problem, or to draw an artwork (e.g. using perspective) is also "engineering". That's too loose a term to be of any use.

Even accepting that, the degree of "methological" in software "engineering" versus e.g. civic or aviation engineering is orders of magnitude less.


> In that case, following specific constraits to solve a math problem, or to draw an artwork (e.g. using perspective) is also "engineering". That's too loose a term to be of any use.

You're being deliberately obtuse and consistently choosing semantic equivocation, so I'm not really going to engage with you any further, but the point is that there is a specific methodology that is unique to engineering. You've heard of the Scientific Method. There is also the Engineering Method.

Ultimately, though, the problem is you're arguing that the map is the territory. The the arbitrary linguistics we have chosen in the past must always and forever be the same. And that's just not a useful model of reality.


You're close.

The Welsh or Icelandic "ll" is not quite the same. That's a "voiceless lateral fricative", lacking the alveolar break that earned it the "t" in "tl" for the Latinized spelling. It's much closer than most languages get, but it is a different sound.

The Nahuatl consonant is a "voiceless alveolar lateral affricate". It is a single constant represented with [tɬ] or, more correctly, with a tie bar between those two glyphs: [t͡ɬ].


I stand corrected you are right there is no isolated use of [ɬ] in nahuatl as a phoneme it is used only in the context of an affricative /t͡ɬ/ I got ahead of myself in trying to isolate the sound [ɬ] for untrained ears.

To get back to the original point though if I'm not mistaken again in standard mexican spanish /ʃ/ as a phoneme is lost entirely and only appears in the affricative /t͡ʃ/? So in all likelihood the original /ʃ/ in axolotl would be pronounced by way of habit as [t͡ʃ] (unless again you have say a argentinian dialect where e.g. "ll" (/ʝ/) in llamar is pronounced as [ʃ]) if you try to "correct" mexican spanish speakers.


It's not just DLL hell. Cygwin was also notorious for being really out of date. Security vulnerabilities and missing features were both very common at one point.

USB-C is rated for 10,000 connections, while Lightning is rated for 40,000. Except if you disconnect and reconnect your phone 4 times a day every day of every year you own it, 10,000 is enough for just under 7 years. And Lighting was introduced in 2012, while USB-C was 2014. In those days, the average lifespan of a smartphone was 2.5 years. Even today, the software is only supported for 7 years at most. You don't need a connector that's going to last nearly 30 years.

And the additional durability of Lightning is itself not free. It's not cheaper than USB-C. Quite the opposite. That additional cost means that it either uses more resources to manufacture, or more resources to make the tools to manufacture. So, it's just wasteful. Lightning is "physically superior" but USB-C is better engineering.

Apple knows that. So Apple chose to go with Lightning because it was theirs, not because it was better. Because it's not really better. Not better for the customer. Or really better for business. Apple chose vendor lock-in.

Worse than that, Apple's connectors are higher durability, but their cabling itself is awful. I work at a K-12 and we were in an iPad and Chromebook pilot back in the mid 2010s that ran about 4-5 years. We had a fleet of 3500 of each. The iPads saw less than half the usage hours as the Chromebooks, but had something like triple the incidence of cable replacement. The cable insulation splits. The plasticizers degrade, the cables get really sticky or oily, and then they split and expose the braided grounding sheath. That braided cable will shock you. That was true for both student and staff devices. So they had these wonderful connectors, but the cables still failed at effectively five or six times the rate of the alternative. And since they were proprietary, you couldn't just buy a better cable made by someone else! You had to buy the same cable that you knew was going to fail!


> And since they were proprietary, you couldn't just buy a better cable made by someone else! You had to buy the same cable that you knew was going to fail!

Godswallop! Aftermarket Lightning cables were readily available shortly after Apple first use the the port.

Agreed though, their own Apple branded cables that came with the device are terrible, and I always just threw them straight in the bin.

And connection cycles is the wrong metric for USB-C vs Lightning. The correct metric is how many and how much side-force removals can the port withstand.

My experience shows that for USB-C the answer is wildly insufficient whereas for Lightning it’s sufficiently high enough that it won’t be a concern.


IMX, the third party cables are fine... If you're interested only ever doing slow charging with about half of them. They were real bad when we tried them.

No, that seems unlikely. They committed the cardinal sin of stealing from the rich.

Also probably why SBF is yet to be pardoned

He was a big supporter of the Democratic Party which would not necessarily lead to a pardon with the Republican administration.

Eric Adams is a Democratic politician, whom Trump's DOJ dropped charges for political favors from Adams. For the right bargain they don't even care about the party.

He supported both parties.

Trevor Milton received an unconditional pardon for his Nikola fraud last year.

Trump has no problem selling pardons to people who stole from the rich. It's a big club, and he's open for business.


I think it's important to remember that we're not perceiving some fundamental aspect of light. We're perceiving how the photosensitive portions of our retina convert light to stimulus, and how our brains construct a meaningful image from that stimulus in our mind.

Like film photography doesn't happen in the lens or the world. It happens in that photosensitive chemical reaction, and the decision of the photographer.


> how our brain construct

is the only part i.e., we perceive what brain predicts no more no less. Optical illusions demonstrate it well.

Sometimes that prediction (our perception) correlates with the light reaching the retina. But it is a mistake to think that we can perceive it directly. For example, we do not see the black hole in our field of vision where there are no receptors (due to our eyes construction).

Another example that makes the point clearer: there are no "wetness" receptors at all but we perceive wetness just fine.


It’s an important point: all our sensations are interpretations of readings from various sensing abilities.

Which is why it can be so easy to produce false sensations of many things. It’s like tricking your fridge into turning the light off by pressing the little switch instead of closing the door. The fridge isn’t detecting when the door is closed, it’s detecting with that switch is pressed and interpreting that as meaning the door is closed. However that interpretation may not always be correct.


It reminds me of how vinyl records are fairly lossy, but they provide a superior experience in some cases because those limitations have been accounted for during the mastering process.

It's an entire pipeline from photomultiplier to recording medium to the inverse process and everything is optimized not for any particular mathematical truth but for the subjective experience.


Vinyls are sometimes preferred because people like white noise, same as tube amps.

Granted some CDs are mastered like garbage, and that led to some bad press for awhile. But you can master a CD so that it sounds exactly, as in mathematically exactly, as a vinyl record, if so desired.

It is also possible to make a digital amplifier that sounds exactly identical to vacuum tubes.

Humans have well and mastered the art of shaping sound waveforms however we want.


I mean I've always thought the kinetic experience of vinyl was the point: my childhood memory is the excitement and anticipation of carefully putting the needle on the lead in and hearing the subtle pops and scratches that meant it was about to start.

The whole physical enterprise has a narrative and anticipation to it.


  > carefully putting the needle on the lead in and hearing the subtle pops and scratches
Led Zeppelin III actually used that lead in as part of the music experience, and the original CD pressing didn't capture it. I've heard CD pressings (even the name remains from vinyl) that do capture it, I don't know when that started.

> CD pressings (even the name remains from vinyl)

The name comes from the CDs being manufactured by pressing into a master mold to create the pits. Replicated (mass manufactured) audio CDs are pressed not written with a laser like duplicated ones (CD-R/RW).


Not to mention the wider context of starting off by opening a beautifully designed record sleeve, and the chances people choosing to listening to vinyl are doing so on a beautifully engineered soundsystem that cost as much as a car when it was released 50 years ago, or a turntable setup that's designed for them to interact with.

You could add all of that to CD. Bigger packaging for "audiophile pressings", a play ritual, extra distortion and compression, especially in the low end, limited dynamic ranges, minimal stereo separation, even a little randomness so each listening experiences was slightly different.

This is consumer narcissism. It's the driver behind Veblen signalling - the principle that a combination of collecting physical objects. nostalgia, and the elevated taste and disposable wealth required to create a unique shrine to the superior self.

Buying houses, watches, cars, vinyl, yachts, jets, and politicians are all the same syndrome.

Some people take it further than others.


You could add the audio distortion. You couldn't add the ability to place it on your DJ turntable or vintage record player (which you might have paid a small fortune for or obtained from Dad or a car boot sale). The CD is also unnecessary to obtain the music anyway.

Tbh freshly pressed vinyl is a significant way down the food chain from new cars, never mind jets and conspicuous consumption fine art, and the demographics that buy it don't necessarily have more disposable income than the demographics with Spotify subscriptions hooked up to a mid range modern soundsystem. If you really want to go full Veblen you can probably buy an NFT to give you all the bragging rights of having signalling money to waste without the inconvenience of actually having anything to look after or listen to :)


Most records these days use CDs as masters, sadly.

No. A friend of mine worked at United Record Pressing. The majority of the masters they received from customers were commercial CDs. No special master.

Are you referring to the loudness wars?

If you pay attention to cats, you figure out they are fuzzy little “difference engines.” They seem to be hyper-tuned to things that change.

For example, if I move a small item in the corner of my room, the next time the cat walks in, he’ll go straight to it, and sniff around.

I have a feeling that cat’s eyes have some kind of “movement sensors,” built in. Maybe things that move look red, and most of the background looks grey.


Even human eyes have some areas, outside the fovea centralis, that are very sensitive to motion even in low light. In the dark you will see motion out of the corner of your eye but you will only see pitch black if you stare in that direction.

The other part you mention is more interesting, I noticed it too. That must be a mechanism in the brain rather than the eye. It’s like the cat keeps a “snapshot” of that place to compare against next time it comes by. This might also explain why they take the same route all the time, maybe it gives them a good reference against the old snapshots.


>> If you pay attention to cats, you figure out they are fuzzy little “difference engines.”

> That must be a mechanism in the brain rather than the eye

Check out "A Thousand Brains: A New Theory of Intelligence" [1] by Jeff Hawkins [2], of PalmPilot fame. This theory postulates, in part, and with evidence, that brains are continuously comparing sensory input and movement context with learned models. I found the book to be mind-blowing, so to speak ...

[1] https://www.amazon.com/Thousand-Brains-New-Theory-Intelligen...

[2] https://en.wikipedia.org/wiki/Jeff_Hawkins


I still see value in the numbering.

Breaking 1NF is essentially always incorrect. You're fundamentally limiting your system, and making it so that you will struggle to perform certain queries. Only break 1NF when you're absolutely 100% certain that nobody anywhere will ever need to do anything even slightly complex with the data you're looking at. And then, probably still apply 1NF anyways. Everyone that ever has to use your system is going to hate you when they find this table because you didn't think of the situation that they're interested in. "Why does this query use 12 CTEs and random functions I've never heard of and take 5 minutes to return 20,000 rows?" "You broke 1NF."

2NF is usually incorrect to break. Like it's going to be pretty obnoxious to renormalize your data using query logic, but it won't come up nearly as frequently. If it's really never going to come up that often in practical terms, then okay.

3NF and BCNF are nice to maintain, but the number of circumstances where they're just not practical or necessary starts to feel pretty common. Further, the complexity of the query to undo the denormalization will not be as obnoxious as it is for 1NF or 2NF. But if you can do it, you probably should normalize to here.

4NF and higher continue along the same lines, but increasingly gets to what feels like pretty arbitrary requirements or situations where the cost you're paying in indexes is starting to become higher than the relational algebra benefits. Your database disk usage by table report is going to be dominated by junction tables, foreign key constraints, and indexes, and all you're really buying with that disk space is academic satisfaction.


> Your database disk usage by table report is going to be dominated by junction tables, foreign key constraints, and indexes, and all you're really buying with that disk space is academic satisfaction.

FK constraints add a negligible amount of space, if any. The indexes they require do, certainly, but presumably you're already doing joins on those FKs, so they should already be indexed.

Junction tables are how you represent M:N relationships. If you don't have them, you're either storing multiple values in an array (which, depending on your POV, may or may not violate 1NF), or you have a denormalized wide table with multiple attributes, some of which are almost certainly NULL.

Also, these all serve to prevent various forms of data anomalies. Databases must be correct above all else; if they're fast but wrong, they're useless.


> Junction tables are how you represent M:N relationships.

Yeah, the problem is that when you get to 4NF+, you're often looking at creating a new table joining through a junction table for a single multi-valued data field that may be single values a plurality or majority of the time. So you need the base table, the junction table that has at least two columns, and the actual data table.

So, you've added two tables, two foreign key constraints, two primary key indexes, potentially more non-clustered indexes... and any query means you need two joins. And data validation is hard because you need to use an anti-join to find missing data.

Or, you can go with an 1:N relationship. Now you have only one more table at the cost of potentially duplicating values between entities. But if we're talking about, say, telephone numbers? Sure, different entities might share the same phone number. Do you need a junction table so you don't duplicate a phone number? You're certainly not saving disk space or improving performance by doing that unless there's regularly dozens of individual records associated to a single phone number.

And if the field is 1:1... or even 90% or 95% 1:1... do you really need a separate table just so you don't store a NULL in a column? You're not going to be eliminating nulls from your queries. They'll be full of LEFT JOINs everywhere; three-valued logic isn't going anywhere.

> Databases must be correct above all else; if they're fast but wrong, they're useless.

Yeah, and if they're "correct" but you can't get it to return data in a timely manner, they're also useless. A database that's a black hole is not an improvement. If it takes 20 joins just to return basic information, you're going to run into performance problems as well as usability problems. If 18 of those joins are to describe fidelity that you don't even need?


Right. But faceting data is also part of what a good database designer does. That includes views over the data; materialisation, if it is justified; stored procedures and cursors.

I've never had to do 18 joins to extract information in my career. I'm sure these cases do legitimately exist but they are of course rare, even in large enterprises. Most companies are more than capable of distinguishing OLTP from OLAP and real-time from batch and design (or redesign) accordingly.

Databases and their designs shift with the use case.


> I've never had to do 18 joins to extract information in my career.

Really? You're not representing particularly complex entities with your data.

I work on a student information system. 18 joins isn't even weird. If I want a list of the active students, the building they're in, and their current grade level, that's a join of 8 tables right there. If I also want their class list, that's an additional 5 or 6. If you also want the primary teacher, add another 4. If you want secondary staff, that's another 5.

The whole system is only around 500 GB, but it's close to 2,000 tables. Part of the reason is tech debt archaic design from the vendor, but that's just as likely to reduce the number of tables as it is to increase them. The system uses a monolithic lookup table design, and some of the tables have over 300 columns. If they were to actually properly normalize the entire system to 3NF, I have no doubt that it would be in the hundreds of thousands of tables.


> joining through a junction table for a single multi-valued data field

I may be misunderstanding you, but to me it sounds like you're conflating domain modeling with schema modeling. If your domain is like most SaaS apps, then Phone, Email, Address, etc. are probably all attributes of a User, and are 1:N. The fact that multiple Users may share an Address (either from multiple people living together, or people moving) doesn't inherently mean you have an M:N relationship that you must model with schema. If you were using one of those attributes as an identity (e.g. looking up a customer by their phone number), that still doesn't automatically mean you have to model everything as M:N - you could choose to accept the possibility of duplicates that you have to deal with in application code or by a human, or you could choose to create a UNIQUE constraint that makes sense for 99% of your users (e.g. `(phone_number, deactivated_at)` enforces that a phone number is only assigned to one active user at a time), and find another way to handle the rare exceptions. In both cases, you're modeling the schema after your business logic, which is IMO the correct way to do so.

I apologize if I came across as implying that any possible edge case means that you must change your schema to handle it. That is not my design philosophy. The schema model should rigidly enforce your domain model, and if your domain model says that a User has 0+ PhoneNumber, then you should design for 1:N.

> And if the field is 1:1... or even 90% or 95% 1:1... do you really need a separate table just so you don't store a NULL in a column? You're not going to be eliminating nulls from your queries. They'll be full of LEFT JOINs everywhere; three-valued logic isn't going anywhere.

If the attribute is mostly 1:1, then whether or not you should decompose it largely comes down to semantic clarity, performance, and the possibility of expansion.

This table is in 3NF (and BCNF, and 4NF):

    CREATE TABLE User (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      email VARCHAR(254) NOT NULL,
      phone VARCHAR(32) NULL
    );
So is this:

    CREATE TABLE User (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      email VARCHAR(254) NOT NULL,
      phone_1 VARCHAR(32) NULL,
      phone_2 VARCHAR(32) NULL,
    );
Whereas this may violate 3NF depending on how you define a Phone in your domain:

    CREATE TABLE User (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      email VARCHAR(254) NOT NULL,
      phone_1 VARCHAR(32) NULL,
      phone_1_type ENUM('HOME', 'CELL', 'WORK') NOT NULL,
      phone_2 VARCHAR(32) NULL,
      phone_2_type ENUM('HOME', 'CELL', 'WORK') NOT NULL,
    );
If a Phone is still an attribute of a User, and you're not trying to model the Phone as its own entity, then arguably `phone_1_type` is describing how the User uses it (I personally think this is a bit of a stretch). Similarly, it can be argued that this design violates 1NF, because `(phone_n, phone_n_type)` is a repeating group, even if you've split it out into two columns. Either way, I think it's a bad design (adding two more columns that will be NULL for most users to support a tiny minority isn't great, and the problem compounds over time).

> If it takes 20 joins just to return basic information, you're going to run into performance problems as well as usability problems. If 18 of those joins are to describe fidelity that you don't even need?

The only times I've seen anything close to that many joins are:

1. Recreating a denormalized table from disparate sources (which are themselves often not well-constructed) to demonstrate that it's possible. 2. Doing some kinds of queries in MySQL <= 5.7 on tables modeling hierarchical data using an adjacency list, because it doesn't have CTEs. 3. When product says "what if we now supported <wildly different feature from anything currently offered>" and the schema was in no way designed to support that.

Even with the last one, I think the most I saw was 12, which was serendipitous because it's the default `geqo_threshold` for Postgres.


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: