Hacker Newsnew | past | comments | ask | show | jobs | submit | nkurz's favoriteslogin

I'm not complaining, exactly; I'd rather the Ukrainians be blowing up Russian planes, which were thousands of kilometers from the literal warzone, than the Russians blowing up Ukrainian planes thousands of kilometers away.

I'm saying that the events we're seeing in the Ukrainian war are convincing evidence that the nature of war has changed, and the implications of that change for human society are disquieting.

For two million years, people have often resolved conflicts by warfare. But that warfare, though it has never ended completely, has always been localized, which meant that most places most of the time were peaceful.

This is the foundation of the system of international relations in which different states exercised monopolies of legitimate violence over geographical territories: by so doing, they could prevent warfare and provide security. This system has existed to one extent or another for thousands of years.

Warfare is no longer localized, so now the only place for anywhere to be peaceful will be for everywhere to be peaceful. It is no longer possible for states to provide security to the people within their borders. Consequently statehood itself has lost its meaning. The last time we saw such a change in the nature of warfare was twelve thousand years ago when the first states arose.

I have some corrections for you about other things that you did not understand either about my comment or about the wars we are commenting on.

It bears repeating that the planes blown up in Operation Spiderweb were not in a literal warzone, nor anywhere close to a literal warzone. Some of them were thousands of kilometers from the literal warzone, in a part of Russia that has China and Mongolia between it and Ukraine.

The Ukrainians reportedly did have humans in the loop for that attack in particular, and both the Ukrainians and the Russians are mostly using FPV drones rather than autonomous drones of any sort at this point, unless we count landmines as "autonomous drones". In https://www.youtube.com/watch?v=RmfNUM2CbbM Russian drone developer Sergey Tovkach specifically says that Starlink is the reason Ukrainian sea drones have established control of the Black Sea — Russia could build sea drones but does not have an equivalent to Starlink, so evidently both Ukraine and Russia are dependent on remote piloting for their sea drones. He also says Starlink's latency is too high for piloting quadcopters. (Evidently Operation Spiderweb used the Russian cellphone network.)

The Israeli attacks are also using precision-guided weaponry and (in some sense) AI, not conventional bombs, and they're killing lots of innocent people, but you're right that it's less worrisome to me, for three reasons:

- The total number of people they're killing is about an order of magnitude smaller, about 80,000 so far (out of a total of 2.1 million Gazans), versus roughly a million in the invasion of Ukraine. Many more civilians have been killed in Gaza, but both Russia and Ukraine practice conscription, so it's not as if the soldiers being killed are only or even mostly volunteers; they were civilians until being, in many cases, conscripted.

- The weapons Israel are using are mostly very expensive, which limits the number of people they can afford to kill with them. By contrast, the drones being mass-produced in both Ukraine and Russia cost only a few hundred dollars each, and each country is expected to produce about 3 million of them this year.

- The people Israel are killing are almost entirely in close geographical proximity to Israel. Gaza City is 80 km from Jerusalem. Beirut, the residence of many of the Hizbullah personnel that Israel killed with explosive charges in pagers (along with, in several cases, their children), is 230 km from Jerusalem.

Therefore, while Israel's war is clearly causing terrible suffering to millions of innocent people, and it could easily spiral into a Third World War, it does not represent the advent of a new, borderless mode of warfare in which the cost of untraceably killing a precision-targeted human anywhere in the world is similar to the cost of a small air conditioner or 20 kg of beef.

The developments we are seeing of the mode of war in the Ukrainian invasion do represent such a transition, and that is true regardless of how the conflict goes. But mostly it is not the Ukrainians and Russians who are responsible for the transition; it was an inevitable result of developments in batteries, motors, power electronics, and 3-D printing and (more broadly) digital fabrication.

What will the new equilibrium look like, now that statehood is effectively meaningless? Well, it might be better or it might be worse, but not many people currently alive will live long enough to find out.


Here's a theory of what's happening, both with you here in this comment section and with the rationalists in general.

Humans are generally better at perceiving threats than they are at putting those threats into words. When something seems "dangerous" abstractly, they will come up with words for why---but those words don't necessarily reflect the actual threat, because the threat might be hard to describe. Nevertheless the valence of their response reflects their actual emotion on the subject.

In this case: the rationalist philosophy basically creeps people out. There is something "insidious" about it. And this is not a delusion on the part of the people judging them: it really does threaten them, and likely for good reason. The explanation is something like "we extrapolate from the way that rationalists think and realize that their philosophy leads to dangerous conclusions." Some of these conclusions have already been made by the rationalists---like valuing people far away abstractly over people next door, by trying to quantify suffering and altruism like a math problem (or to place moral weight on animals over humans, or people in the future over people today). Other conclusions are just implied, waiting to be made later. But the human mind detects them anyway as implications of the way of thinking, and reacts accordingly: thinking like this is dangerous and should be argued against.

This extrapolation is hard to put into words, so everyone who tries to express their discomfort misses the target somewhat, and then, if you are the sort of person who only takes things literally, it sounds like they are all just attacking someone out of judgment or bitterness or something instead of for real reasons. But I can't emphasize this enough: their emotions are real, they're just failing to put them into words effectively. It's a skill issue. You will understand what's happening better if you understand that this is what's going on and then try to take their emotions seriously even if they are not communicating them very well.

So that's what's going on here. But I think I can also do a decent job of describing the actual problem that people have with the rationalist mindset. It's something like this:

Humans have an innate moral intuition that "personal" morality, the kind that takes care of themselves and their family and friends and community, is supposed to be sacrosanct: people are supposed to both practice it and protect the necessity of practicing it. We simply can't trust the world to be a safe place if people don't think of looking out for the people around them as a fundamental moral duty. And once those people are safe, protecting more people, such as a tribe or a nation or all of humanity or all of the planet, becomes permissible.

Sometimes people don't or can't practice this protection for various reasons, and that's morally fine, because it's a local problem that can be solved locally. But it's very insidious to turn around and justify not practicing it as a better way to live: "actually it's better not to behave morally; it's better to allocate resources to people far away; it's better to dedicate ourselves to fighting nebulous threats like AI safety or other X-risks instead of our neighbors; or, it's better to protect animals than people, because there are more of them". It's fine to work on important far-away problems once local problems are solved, if that's what you want. But it can't take priority, regardless of how the math works out. To work on global numbers-game problems instead of local problems, and to justify that with arguments, and to try to convince other people to also do that---that's dangerous as hell. It proves too much: it argues that humans at large ought to dismantle their personal moralities in favor of processing the world like a paperclip-maximizing robot. And that is exactly as dangerous as a paperclip-maximizing robot is. Just at a slower timescale.

(No surprise that this movement is popular among social outcasts, for whom local morality is going to feel less important, and (I suspect) autistic people, who probably experience less direct moral empathy for the people around them, as well as to the economically-insulated well-to-do tech-nerd types who are less likely to be directly exposed to suffering in their immediate communities.)

Ironically paperclip-maximizing-robots are exactly the thing that the rationalists are so worried about. They are a group of people who missed, and then disavowed, and now advocate disavowing, this "personal" morality, and unsurprisingly they view the world in a lens that doesn't include it, which means mostly being worried about problems of the same sort. But it provokes a strong negative reaction from everyone who thinks about the world in terms of that personal duty to safety, because that is the foundation of all morality, and is utterly essential to preserve, because it makes sure that whatever else you are doing doesn't go awry.

(edit: let me add that your aversion to the criticisms of rationalists is not unreasonable either. Given that you're parsing the criticisms as unreasonable, which they likely are (because of the skill issue), what you're seeing is a movement with value that seems to be being unfairly attacked. And you're right, the value is actually there! But the ultimate goal here is a synthesis: to get the value of the rationalist movement but to synthesize it with the recognition of the red flags that it sets off. Ignoring either side, the value or the critique, is ultimately counterproductive: the right goal is to synthesize both into a productive middle ground. (This is the arc of philosophy; it's what philosophy is. Not re-reading Plato.) The rationalists are probably morally correct in being motivated to highly-scaling actions e.g. the purview of "Effective Altruism". They are getting attacked for what they're discarding to do that, not for caring about it in the first place.)


Side-rant: I just watched a clip[0] and I have to say something about the misrepresentation of the Hockney-Falco thesis[1] in it.

And when I say I have to I really mean that: I'm Dutch, tried studying physics, dropped out, switched to studying art, specifically photography (even built my own camera at one point), then in the first year of art school was introduced to the Hockney-Falco thesis, then went to the International Congress of Physics Students one last time to hang out with my friends, decided to give a talk on the topic, and ended up winning best talk of the conference. So I'm kind of obliged to Have Some Opinions on this topic.

The clip mentions the HF thesis as if Hockney introduced the notion that the Dutch painters in Vermeer's time used optical tools. That's... not what the thesis claimed. Johannes Vermeer lived in the 17th century[2]. As the clip (correctly) states, telescopes and mirrors were known to the Netherlands by then - in fact the earliest known records of a refracting telescope is from a failed patent application in the Netherlands in 1608[3].

From what I remember, the hypothesis that Vermeer used optical tools wasn't controversial even back in the mid-2000s, a decade before this film came out. While there was no direct proof, he did live in the right place and period to have been introduced to telescopes, and artists trying out new tools is obviously a thing that happened throughout history. Being secretive about his work was obviously also very suspicious. I recall that we also discussed how certain visual qualities of the painting suggested the use of optical tools - Vermeer's style was also just so noticeably different and photograph-like compared to his peers. To be clear, nobody thought this diminished the quality of Vermeer's paintings: he was still innovating and mastering his tools, and creating the beautiful paintings that he made still took tremendous skill.

However, what the Hockney-Falco thesis claims is that Early Renaissance painters like, say, Jan van Eyck[4] already used optical tools, centuries before telescopes and optical mirrors optics were introduced in Europe. We're talking 15th century onwards. And not only that, that this was secret knowledge hidden by the painter's guilds, of which no known record survives even though we have records of all the other painting techniques used. That's what makes it so controversial.

The hypothesis that there was a painter who lived during a time of great innovation in optical tools in the place where those innovations took place, then secretly used those tools to get a leg up on the competition is very plausible.

The suggestion that the entirety of Europe's Renaissance painters learned about optical tools from Arab lands but managed to keep this knowledge secret for centuries sounds like a conspiracy theory.

(also, it's completely ignorant of the realistic qualities of some of the old Roman art[5], and those painters definitely did not have high quality lenses available to them)

[0] https://www.youtube.com/watch?v=XoqWwuRnj3o

[1] https://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis

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

[3] https://en.wikipedia.org/wiki/History_of_the_telescope

[4] https://en.wikipedia.org/wiki/Jan_van_Eyck

[5] https://en.wikipedia.org/wiki/Roman_art


Story time!

The year that IBM bought Lotus, they decided to create a mini-website about it for their annual shareholder's meeting. The plan was to host the site on Lotus Notes Domino as a way of showing the value of the acquisition.

Something about this was last minute, but I can't remember what it was: Either the whole thing was a rush job because the merger has just happened, or the decision to use Domino to host the site was. I'm not sure which.

IBM had hired a boutique firm in Atlanta to design and lay out the web pages with all the bells and whistles: Slick graphics, gif-animations, JavaScript interactivity, etc. (this was mid-1990s when flashing text was a big deal). But, of course, they had no Domino experience.

At the time, I was a 20-something wiz kid working at my first job after I dropped out of college for a Lotus Notes consulting firm in Atlanta, with contracts at Bell South, Coca-Cola, IBM and other big names. I had been the first one in the company to get into the web in general, and then combined that with my Lotus Notes experience to become the Domino expert.

When the design firm reached out to my company for help getting the website working on Domino, I was the (only) one to send over to help.

So I spent a few days at their hip downtown loft/office working on a Notes database that would host the site. This involved converting their ordinary web pages into something that would work in Domino, which had it's own way of storing templates and displaying pages based on the underlaying Notes database. I'd run into an issue and then get with the designers to work around some limitation or another. But by Friday we had it working and looking great. They sent the database and other files up to IBM where they would then get it up and running on their public web servers.

Around 5pm that Sunday, I get a call from my boss. The design firm had called in a panic: IBM couldn't get Domino working. They could see the site locally on the same machine, but they couldn't access it publicly. I needed to help their server team fix it. In New York. Tomorrow. (Me? Didn't IBM own Lotus?)

He tells me that IBM is sending a car to come around and pick me up in 30 minutes, to get me to the airport where I'll fly to New York. Another car will pick me up and drive me to Armonk, where I'll check into a hotel, and then Monday morning I was to go into IBM early and help them get the site working, as the shareholders meeting had started.

IBM wasn't messing around. They used black car service with driver, flew me First/Business class, booked me into a nice hotel, the whole deal.

So I arrive at like 6 am the next morning and am met with open arms by someone running their server farm who explains everything they've done so far. He then plops me down in a corner of a giant server room, in front of a machine running AIX, with a Unix version of Notes and a terminal open to the machine running the Apache proxy to their public servers.

I had never seen, let alone used, a Unix box in my life up to that point, and knew nothing about Apache. I wasn't even sure what a "proxy" server did. I remember just sitting there for a minute, wide-eyed - looking at the three-button mouse like it was an alien artifact, and boggled by the GUI (CDE? Motif?) which was also from Mars. I was the opposite of that girl in Jurassic Park. "It's a Unix system! I have no idea what to do!"

Thankfully the Notes interface was the same on all platforms, so I had an anchor point to start from. Besides the fact that it took me a minute to figure out how to scroll (middle mouse button), I was in my element there.

The problem, it turned out, was a simple configuration setting (thank all that is holy) which I recognized immediately. It took me longer to figure out the mouse button thing. So like the proverbial plumber story, I opened my toolbox, took out a small ball peen hammer, tapped the configuration options, and the site popped up online.

Hooray!

Smiles all around! Handshakes were given, backs were slapped, jobs were saved. I was out of there by 8 am and on a plane back to Atlanta a couple after that, the conquerering hero.

So there's my Domino story. 30 years later it's still amusing to me.


You raise a really amazing point! One that should get more attention in these discussions on HN! I'm a painter in my spare time. I think it is okay to sit down and paint a picture of Harrison Ford (on velvet, maybe), and sell it on Etsy or something if you want to. Before you accuse me of hypocrisy, let me stipulate: Either way, it would not be ok for someone to buy that painting and use it in an ad campaign that insinuated that their soap had been endorsed by Harrison Ford. As an art director, it has obviously never been okay to ask someone to paint Harrison Ford and use that picture in a soap ad. I go through all kinds of hoops and do tons of checking on my artists' work to make sure that it doesn't violate anyone else's IP, let alone anyone's human likeness.

But that's all known. My argument for why me selling that painting is okay, and why an AI company with a neural network doing the same thing and selling it would not be okay, is a lot more subtle and goes to a question that I think has not been addressed properly: What's the difference between my neurons seeing a picture of Harrison Ford, and painting it, and artificial neurons owned by a company doing the same thing? What if I traced a photo of Ford and painted it, versus doing his face from memory?

(As a side note, my friend in art school had an obsession with Jewel, the singer. He painted her dozens of times from memory. He was not an AI, just a really sweet guy).

To answer why I think it's ok to paint Jewel or Ford, and sell your painting, I kind of have to fall back on three ideas:

(1) Interpretation: You are not selling a picture of them, you're selling your personal take on your experience of them. My experience of watching Indiana Jones movies as a kid and then making a painting is not the same thing as holding a compressed JPEG file in my head, to the degree that my own cognitive experience has significantly changed my perceptions in ways that will come out in the final artwork, enough to allow for whatever I paint to be based on some kind of personal evolution. The item for sale is not a picture of Harrison Ford, it's my feelings about Harrison Ford.

(2) Human-centrism: That my neurons are not 1:1 copies of everything I've witnessed. Human brains aren't simply compression algorithms the way LLMs or diffusers are. AI doesn't bring cognitive experience to its replication of art, and if it seems to do so, we have to ask whether that isn't just a simulacrum of multiple styles it stole from other places laid over the art it's being asked to produce. There's an anti-human argument to be made that we do the exact same thing when we paint Indiana Jones after being exposed to Picasso. But here's a thought: we are not a model. Or rather, each of us is a model. Buying my picture of Indiana Jones is a lot like buying my model and a lot less like buying a platonic picture of Harrison Ford.

(3) Tools, as you brought up. The more primitive the tools used, the more difficult we can prove it to be to truly copy something. It takes a year to make 4 seconds of animation, it takes an AI no time at all to copy it... one can prove by some function of work times effort that an artwork is, at least, a product of one's own if not completely original.

I'm throwing these things out here as a bit of a challenge to the HN community, because I think these are attributes that have been under-discussed in terms of the difference between AI-generated artwork and human art (and possibly a starting point for a human-centric way of understanding the difference).

I'm really glad you made me think about this and raised the point!

[edit] Upon re-reading, I think points 1 and 2 are mostly congruent. Thanks for your patience.


I'm so pleased by this article!

I'm a materials junkie. My wine glasses are made of ZrO2 stabilized by Y2O3. My daily work is to convert carbon-bearing gases into diamond through plasma chemistry. I've long considered making diamond knife blades, although recent literature searches have put me off a bit, given their demonstration that brittle ceramic blades like Zirconium oxide shed sharp microparticles that I doubt are good for the ingester.

Nevertheless, I have made several small solid diamond blades (~15 cm long) that I've used to cut filet mignon. With load cells attached, the draw force to cut with a diamond blade is <20% of the draw force needed for an equivalent steel blade coated with titanium nitride and overcoated with a thin Teflon layer, about 5% of the draw force required by a custom Japanese knife. I have one diamond blade in my kitchen that I use as a paring knife. It's the very best tool I own.

I'm gratified that our ancestors figured out how to make superlatively sharp blades knowing essentially nothing of the science underlying their work. They were very smart and attuned to the aesthetics of their work.

Thanks again for the post. Materials are endlessly fascinating.


None of the people that you called 'greedy' pushed for this zoning to keep Chinese immigrants out. I'm not sure why you are bringing that up. The fact that laws can be created for bad reasons doesn't mean we shouldn't have laws. If someone finds a historically bad use case no more laws should be allowed?

We agree the USA didn't have relevant zoning laws until the population needed zoning laws. I don't think that changes anything (other than maybe we both agree that first passes often turn out to be poor and need revision).

70s environmentalists didn't decide more expensive housing would stop people from having children. I'm a child of these people. I remember the discussion. I remember my parents talking about prop 13. Driving up the cost of housing had zero discussion. The little old lady down the street driven from her home over property taxes did. The rapid changes with no planning did. The loss of the local field where people played. The loss of access to beaches people were used to going to. That's why laws like The California Coastal Act of 1976 were added at this time as well to guaranty public access back to these beaches. It wasn't just 'no building houses and no property tax for boomers' there is a whole body of law created at this time trying to keep California what it had been such as a place where you can go to the beach (up until 1976 that wasn't a given).

While they have been used for racist reasons zoning laws are not defacto racist. Buying a home is the largest purchase most Americans will make. It is also a long term purchase. Guaranteeing that what you buy will stay what you bought for the lifetime of the purchase seems reasonable. Just because outside people don't like the guaranty that the government made doesn't mean that it should be taken away from the people it was made to. I had to fight hard to prevent an temporary (it was not temporary just because it was movable) asphalt plant from being put in across from my neighborhood. I was able to stop it because of zoning laws and all the meetings they had to have to get an exception. I was able to motivate enough people to go to those meetings that they finally gave up. My house was good for 1 thing, raising my children. Allowing an asphalt plant made the largest purchase I will ever make in my life useless for the reason I bought the house. Zoning laws are the government guaranteeing me my purchase will be usable. If the government wants to take away that guaranty they should have to buy me out.

Please remember I was driven out of where I grew up. I understand it sucks. I would have loved to be able to afford to stay and raise a family where I grew up. To have taught my kids to surf. Shown them the cool discoveries I made in Nisene Marks. But I also understand the reasons it ended up this way weren't nefarious, racists, trying to create a hellscape for $$$. It was people making what they thought were the right choices because they didn't like the rapid changes that were happening. Things can turn out bad without having premeditated evil intentions.

Edit: I am so tired of these attacks. My mom was the kindest gentlest person I have ever known. Her and her friends may not have made perfect choices but stop with the 'they were evil'. They were basic, fallible human beings. The results didn't end up great, so fix them. But stop blaming. It helps nothing. They tried. They got access to their beaches back as part of this same movement, something I don't hear all this 'older Californians just suck and are evil' complaining about. Stop attacking people like my dead mother, they don't deserve the attacks. Stop character assassinating these people whose motivations you know nothing about just because you are angry/frustrated.


Intel publishes much more information about their future roadmap than any other company in this industry.

During the last couple of years they have achieved in time all the product and process launches that had been announced with years in advance, up to Meteor Lake on the new Intel 4 CMOS process at the end of 2023 and Sierra Forest on the new Intel 3 CMOS process at the middle of 2024.

The only things that could be considered as under-achievements are the facts that in the Intel 4 process the maximum clock frequencies have been lower than hoped and the production yields are still low. Nevertheless, these 2 problems are not surprises. Every new CMOS process launched by Intel during the last decade has been affected exactly by these 2 problems, at least for its first year. For each such process, Intel has succeeded eventually to solve the problems, but they have always needed the experience of multiple years of production for that. With Intel 4 this will not happen, because it will not be used again for another product, being replaced by Intel 3, which probably incorporates whatever fixes were suggested by the experience with Intel 4.

So the financial problems of Intel are not caused by Intel failing to execute their roadmap.

Nevertheless, the bad financial results have been perfectly predictable from the Intel roadmap, as it had been known for years, because that roadmap does not attempt to achieve parity with the AMD server CPUs before the end of 2026 at the earliest.

The financial results of Intel have shown profits for the client CPUs. They have shown losses for their foundry, which have been unavoidable, due to their need to invest huge amounts of money to recover Intel's handicap vs. TSMC and due to the need to transfer a part of their chip production to TSMC, while they are developing their new processes.

They have also shown great losses for the server CPUs. The losses in server CPUs are likely to be caused by Intel having to cut their prices a lot when selling to big customers, in order to convince them to not buy the superior AMD server CPUs.

It is very likely that Intel will continue to have great losses in the foundry and in the server CPUs for at least one more year, based on their public roadmap. After that, their results will depend on how good the Intel 18A CMOS process will be in comparison with the competing CMOS processes of TSMC.

The Intel roadmap for manufacturing processes and for client CPUs has been decent. While some of the Intel choices may be undesirable for their customers, other choices would not have improved their financial results.

Where Intel could have conceived a much better roadmap is in server CPUs, where they have their greatest losses. When AMD launches a new microarchitecture, like now with Zen 5, after 3 or 4 months they also launch their server CPUs with that microarchitecture, like with AMD Turin later this year. On the other hand, when Intel launches a new microarchitecture in their client CPUs, like in the next couple of months with Lunar Lake and with Arrow Lake S, they follow with server CPUs using the same up-to-date microarchitecture usually only one or two years later, e.g. in the second half of 2026 in this case.

While the Lion Cove and Skymont cores of Lunar Lake and Arrow Lake S are competitive with Zen 5, the Intel server CPUs launched these days, Sierra Forest and Granite Rapids, continue to use cores that are only marginally better than the cores used in Alder Lake three years ago.

The new Granite Rapids server CPUs will be able to match the number of cores per socket of the AMD server CPUs, for the first time after many years. However, they will use cores not much better than Zen 4, which will be inferior to Zen 5.

This situation would have been easily avoided by Intel if they would have launched now only CPUs using their up-to-date cores, instead of using obsolete cores in their server CPUs.

The reason why AMD does not have this problem is because they design a single CPU chiplet that will be used both in their desktop and high-power laptop CPUs and in their server CPUs. On the other hand, Intel duplicates their design and validation efforts by designing distinct chips for desktops and for servers. When AMD finishes the design of a chiplet, it is ready for both desktops and servers. Their server CPUs use a few months of additional testing, but that is all of the delay. It is not clear how the design work is organized at Intel, but it appears that there is not enough overlap in the design of the client CPUs and of the server CPUs, so the latter are finished only after one extra year or two.


A few things I wish I knew when took Statistics courses at university some 25 or so years ago:

- Statistical significance testing and hypothesis testing are two completely different approaches with different philosophies behind them developed by different groups of people that kinda do the same thing but not quite and textbooks tend to completely blur this distinction out.

- The above approaches were developed in the early 1900s in the context of farms and breweries where 3 things were true - 1) data was extremely limited, often there were only 5 or 6 data points available, 2) there were no electronic computers, so computation was limited to pen and paper and slide rules, and 3) the cost in terms of time and money of running experiments (e.g., planting a crop differently and waiting for harvest) were enormous.

- The majority of classical statistics was focused on two simple questions - 1) what can I reliably say about a population based on a sample taken from it and 2) what can I reliably about the differences between two populations based on the samples taken from each? That's it. An enormous mathematical apparatus was built around answering those two questions in the context of the limitations in point #2.


The numbers he posts are not all that bad really. It's 181kWh per metric ton CO2. At an electricity cost of 5 cents/kWh that's nine bucks per ton. That's quite a bit cheaper than the actual cost projected by real projects, so I'm not sure what he's debunking.

In terms of energy, some emerging tech is pretty close to ideal. Princeton has a project they claim can do 0.7 gigajoule/ton, or 195kWh [1]. And MIT is claiming one gigajoule/ton, or 278kWh [2].

If we transition to a wind/solar/battery grid, the cheapest option in the US at least is to have about four days of battery and 2X overproduction [3]. So that's a lot of extra energy basically available for free. Even today, with relatively small usage of renewables, utilities sometimes let electricity costs go negative [4]. If capital costs aren't too high, then DAC can run whenever there's excess energy available.

Of course, capital cost will be a big portion of the expense, though it'll decrease as we scale. Climeworks and Carbon Engineering have estimated $100/ton in total cost, which equates to a dollar per gallon of gasoline. Many places already have gas taxes higher than that. And the MIT and Princeton methods should be cheaper at scale than current methods would be.

Actually eliminating all our annual emissions by just doing this would of course be madness. But if we tried, and charged emitters for doing that, then most emitters would find it cheaper to stop emitting instead. Then we'd naturally end up only using DAC for emission sources that are very hard to eliminate.

After we hit net zero, we'd be smart to take CO2 down to a safe level. Call it 100ppm of reduction. Hopefully we can do some of that with reforestation and so on, but let's say DAC is our only option. One ppm is 7.8 gigatons CO2, so we're talking 780 gigatons to draw down. At 200kWh/ton that's 156 TWh, not far off from the world's entire energy usage for a year, matching the article's estimate.

But if we're at 2X overproduction on energy, then we'll have that much energy available. Only the capital cost of the equipment would really be important, and by the time we scale it that far, that should be fairly low too. The methods I linked use cheap, readily available materials.

So it looks pretty feasible to me. We can call this a "distraction" and put up with the terrible consequences of whatever high CO2 level we reach by the time we're at net zero, or we add DAC to a wind/solar/battery world and get down to a nice cool 350ppm. Since it takes time to scale, and climate feedbacks give us a time limit, we need to develop and start scaling DAC now.

[1] https://engineering.princeton.edu/news/2024/03/14/engineers-...

[2] https://news.mit.edu/2019/mit-engineers-develop-new-way-remo...

[3] https://caseyhandmer.wordpress.com/2023/07/12/grid-storage-b...

[4] https://archive.is/WfUIJ


Most of the comments strongly advise against moving to Shenzhen.

Having prototyped in both places I’ll make some arguments for. I’ll preface it’s only worth it if you’re beyond the limits of what American facilities can do and it's a step function in workflow and getting setup. There is an acceptable cultural tunnel vision in our field that developed in the 1980s for "how to do things" and hasn't changed much beyond "4 layer pcb on FR4 with surface mount components" - going against that grain requires an interdisciplinary mindset - as in "make a functioning circuit on a piece of toast" level of creativity[1].

If you’re building wearable tech there’s a strong chance you’ll need to make flex pcbs sooner or later. Those are comically cheap in China and stupid expensive stateside.

Especially when you start pushing the boundaries - there’s so much low hanging fruit for experimenting with your PCBs when you’re in the factory making them. Most US manufacturers will only let you use one color for a solder mask. In Shenzhen we pioneered using full RGB to print any graphic on your pcb back in 2017. Even on top of the chips themselves. It’s now pretty easy to source. This is literally just by being on the factory floor and saying “hey can you do step 5 before you do step 4? - we want to take the boards to this other factory across town first” And they say “sure”. Likewise if you want to mount your parts sideways or upside down to save space. Or say, take a literal sea shell through a copper PVD machine and mill away some traces and mount some chips. They do not care and will gladly take your money and make it happen.

One time we couldn’t find a single vendor in the US or Europe who would embed chips in the middle of pcb layers[2]. This was a weekend project for one of our Chinese vendors - who also had never done this but it sounded like fun so she said “no problem”.

Can get turnaround on prototype boards with assembly for free once you have a cm or just $50 if you don’t. One American vendor comically insisted one couldn’t mix flex and rigid boards for one of our designs for less than $10k. In China it cost me $80. Likewise we mounted chips to non-traditional media like credit cards with no sweat.

Any chip we wanted was available through HQB or TaoBao when Digikey was still backed up on Covid.

Test fixtures (the laser cut jigs that you program and test pcbs) are $100. Stateside they were half as useful and $2000.

You’re one blue Buick minivan ride from Guanzhou where all the garments in the world are made. Being at the intersection of these two cities is a strategic advantage.

Cost of living is cheap.

It will make you a better engineer by exposing you to the dirty business of manufacturing first hand. I'll go so bombastically hyperbolic and say not moving to Shenzhen as an EE is like not moving to Nashville as an aspiring country musician.

In China the saying goes “anything is possible, nothing is easy.” I’d mostly agree with this but also point out that price is completely-orthogonal-to-possible in China, absolutely not in the US, and straight up forbidden in Germany.

[1] https://talk.dallasmakerspace.org/t/breadboard-electronics/1...

[2] https://twitter.com/pmg/status/1248148053795540992/photo/1

p.s. If you enjoyed this comment, you may also enjoy my "So you want to start a factory?" reply on a post from a few days ago [3]

[3] https://news.ycombinator.com/item?id=40001222


The idea is based in the hypothesis that old trees grow slower, because the general universal rule that mature species spend resources on sexual reproduction, so they have less resources to grow

This is just a general rule, but the real life has a few caveats.

1) Grow is complex.

The first problem is that we don't really know "how much" slower is "slower". Has not being studied for most species, because finding a 500 year old ash that is not pruned or coppiced is basically impossible [1].

And we need to remind that trees are clonal organisms arranged around a very few parts that repeat themselves. Even if old trees would really grow much slower than saplings, they have a huge, huge difference on the --number of growing points--. This should overcome any speed difference. The result is that older trees still add mass on a velocity that young trees can't.

Other problem is that identifying grow with "how taller respect to the last year" is not practical. Biomass is the correct term in ecology. Young trees grow abnormally fast because they are searching for light. And this fast grow is the thinnest possible that can support the tree and still put it over its competitors. It can't be sustained later without risking for the tree integrity. This grow shouldn't be promoted. Wider is what we want. A tree is not growing slow just because is only 1cm taller than the last year. Mature trees have a "deploying umbrella" phase.

2) In the real life, trees often don't grow a lot the first years.

Most of the big oaks (and I had cultured a few) show a frozen grow in the first two years. They use it first year to make a deep root and 2 (two!) small leaves. Period. In the second year maybe four to eight leaves if the area is very favourable. The whole oak weights... dunno, maybe 50 grams? at this period. The CO2 captured from the air is close to zero and even could be a negative value while the sapling feeds on its acorn. Then at the fourth year there is a phase of (maybe) fast grow for a couple decades, but only if there aren't herbivores around and only if the area does not receive light.

In the same time, older trees would have included tens or thousands kilograms in each one of its main branches and the same for their main roots. Plus the soil generated. Plus the fruits.

And we can save the best for the last. Mature trees produce pollen. This is an output in our supposedly Carbon neutral system.

The number of people that had quantified seriously how much pollen produces a tree could fit maybe in a small room, but I'll assume that a fair sized tree produces tens of Kg of pollen each flowering season. What we know is that one single conifer can "paint" a car with pollen in no time, and can do it for weeks.

This pollen is protected and enclosed in a hard cage of Sporepollenin.

Sporepollenin is simply one of the most durable organic substances known by us. This structure is able to trap C for hundreds of millions of years in favourable conditions. Hundreds of millions!. Is --exactly-- the stuff what we crave for, and that we are looking for like crazy.

Except because some people can't avoid the itch to burn the soil. Though luck.

[1] When you coppice a tree, you modify the speed of regrow. My bet is that when on panic mode, old trees could easily have bursts of superfast grow. Easily much faster than a sapling. This mechanism is behind the recent fever (ehum, scam) of planting kiri trees.


> We aim to investigate in a reliable animal model whether activating the cervical lymphatic vessels through pharmacological or mechanical means can prevent the exacerbation of Alzheimer’s disease progression by improving CSF clearance.

While this is interesting, I don't think it will make much of a difference clinically.

The reason is that cerebrospinal fluid (CSF) circulation and drainage is something that doctors, especially neurologists and neurosurgeons, are very keenly aware of, and we have ways of treating issues where the CSF is not being absorbed.

As the article mentions, you produce around 500ml of CSF daily. If you do not drain the CSF, you will die fairly quickly as the pressure inside your head builds up. This can happen due to a tumor or from blood, and when this happens it is an emergency.

The emergency treatment consists of drilling a small hole in the skull, and putting a small tube into the fluid filled space of the brain called a ventricle which allows the fluid to drain. This is called an external ventricular drain (EVD). You can do it at bedside with an awake patient, lidocaine, and a hand powered drill. I have probably placed dozens if not hundreds of EVDs.

Many times the blockage will clear with time (for example the blood reabsorbs) or with treatment (you take out the tumor or drain the blood clot) and then you can remove the drain. Other times, the patient will need it long term. You then place what is called a ventriculoperitonal shunt (VP Shunt). There the tube still goes into the brain, but instead of it coming out, it is tunneled under the skin to the abdomen, and the fluid is allowed to drain into the abdomen. Everything is under the skin, so the patient can go about their normal life.

This inability to drain, can also be less dramatic. There is a condition called "Normal Pressure Hydrocephalus" which happens gradually. You often see it in older adults, and it can present as mental slowing. If a CT Scan and MRI of the brain show evidence of this, without any signs of tumor or blood, you can do what is called a therapeutic lumbar puncture (spinal tap). What you do is you insert a large needle into the fluid around the base of the spinal cord, and measure the pressure and drain some of the fluid. Then you let the patient go home and see how they do. If they improve, then you can place a VP Shunt (as described above) so that the fluid is continuously draining instead of requiring them to come in and have a spinal tap all the time.

So, while the circulation and absorption of cerebrospinal fluid is very important, I am not sure how much these lymphatics translate from mice to humans, and it is not like doctors are not aware of and don't have treatments for too much cerebrospinal fluid. If progression in Alzheimer's disease was just a matter of draining cerebrospinal fluid, we can already do that today.

Source: I was a neurosurgery resident.


>US housing stock is also much more wooden and therefore at higher risk to begin with.

Fire compromising the structure of a building, or the structure itself burning is almost never the cause of death or injury. The primary killer in structure fires is hydrogen cyanide gas. Wood does emit hydrogen cyanide but the primary source is synthetic materials like upholstered furniture, wall and floor coverings, cabinetry, and other personal belongings.

If you have two houses, one made of gypsum-covered 2x4 walls and the other made of stone and steel and a faulty space heater ignites a sofa or some polyester curtains, the buildings are equally lethal. The hydrogen cyanide will have killed you long before the fire burned through the drywall. Non-flammable walls don't even necessarily slow a fire's spread if synthetic materials are involved. The high heat of by their combustion and their dirty combustion causes flashover which ignites all flammable materials in a given space.

I have been a volunteer firefighter for almost 20 years. I have experienced too many fatalities but none of them have ever burned to death. All victims have been dead due to asphyxiation (CO/CO2) or cyanide poisoning.

The differences in death rates aren't as stark as the author contends (for example 0.2 deaths per fire in Great Britain, 0.3 in the US) and my gut tells me the main differentiation between the US and European deaths is the smaller, more compartmentalized nature of European dwellings (which limits the spread of smoke) coupled with their greater level of urbanization which leads to faster emergency services response (the faster a fire is knocked down the less gas it produces).

Open floorplans kill.

All of that being said, wooden construction does cause more firefighter deaths-- especially if engineered wood is used. But by the time the floor of a house has been weakened enough by a basement fire to fail and kill a firefighter, all of the occupants are already dead.


Apropos of nothing, I had a not-great experience switching from an oil furnace to heat pump. Maybe somebody else going through research will benefit from my woes. Some day I'll make a blog post for it:

1. Noise levels (inside)

* Fundamentally, a heat pump runs more often than a furnace. So, air is semi-constantly blowing out of your vents, rather than a few bursts throughout the day. Also, the air is tepid, rather than warm. Previously, there was a "yay, the furnace is on" moment of enjoying the warm air. Now, it's more of a "jeez when will this thing shut up again?" throughout the day. It reduces my quality of life.

* One of our vents points at my back where I sit to work. With the furnace, that was enjoyable. With the heat pump, it's a nuisance. I taped over the part that blows on me. Similarly, we have a vent in the bedroom that we mostly keep covered with a pillow these days, due to the noise.

* In documentation, noise is often measured in decibels — indicating max loudness. And by that measurement, the heat pump is no worse than the furnace (maybe even a bit quieter). But the fact that it's on near-continuously at that noise level is what causes my annoyance. So, it's not just loudness, but also how continuous it is.

* We had existing ductwork, so the heat pump's air handler uses that (just like the old furnace). This is a common situation, but what nobody mentioned, across multiple estimators, is that it's likely the old ductwork will be "under-sized" relative to the new system. This means higher static pressure, and importantly, more noise at the output vents. Talking to the technicians, this is a bit of a crapshoot — you might get lucky with noise levels, or might not (like me).

* Loudness will also vary depending on how far from the central unit you are (my house is fairly small), how many vents there are, and various other factors.

* In theory, you can determine if the above will be a problem by doing measurements beforehand. None of the estimators mentioned this; they just want to sell you the system, of course. I didn't realize until too late that you can probably find someone, pay them a few hundred dollars, and get this information upfront. There's a whole science to it, with specialized tools. Look up "Manual J, S, D, T measurements," for a starter.

* However, even if you get that info, it still depends on your sensitivity to these things. For instance, my wife is much less bothered by the noise than I am.

2. Thermostats

We got a fairly modern "communicating" system. This means the outdoor and indoor units talk to each other, allowing better efficiency.

This sounds nice, but what it means is that you will be locked in to your vendor's choice of thermostats, since the communication protocol is proprietary. These are generally more expensive than the alternatives, and you won't have many options — perhaps only one.

If you get a "non-communicating" system, you will be able to try various different thermostats — eg: a simple one from your hardware store, or a Nest one, etc.

3. Other

* The old oil furnace was a simple machine, with a lifetime warranty on the heat exchanger (basically a hunk of cast iron) and can basically last forever with decent maintenance. The new heat pump has a 12 year warranty, and the system might last 25 years with good maintenance. The HVAC estimator seemed proud of this, but to me it doesn't seem like an especially long time.

* If you use old ductwork like mine, it may not be insulated to modern standards. This is both a noise issue and potentially a condensation issue when the AC mode is running.

* It's very difficult to know when the "emergency heat" mode is being used — where resistive electrical strips are used to generate extra heat, if the heat pump isn't producing enough. This mode is much more expensive than the heat pump alone. It boggles my mind that such simple (and useful) information is so hard to obtain.

* If you want to get government subsidies, do your research about what exact make/model is covered by it. Ironically, sometimes the more modern and efficient systems are not subsidized, presumably because there is some lag to update policies.

* Generally, remember that the estimator who might come to your house is a salesman, first and foremost (:

4. Pros

Okay it's not all bad; some positives include:

* AC in the summer. Probably the biggest positive.

* No dependence on oil — both for cost and environmental concerns and risk of tank leakage (ours was aboveground, so less of a worry)

* No carbon monoxide worry, since there's no combustion going on.

But overall, I'm not sure it was worth it for my case.


About 10 years ago, I was working on a site that served several hundred million non-crawler hits a month. Many of our millions of pages had their content change multiple times a day. Because of the popularity and frequent changes, the crawlers hit us constantly... crawlers accounted for ~90% of our traffic - billions of hits per month. Bing was ~70% of the crawler traffic and Google was ~25% of it. We noticed it because Bing quickly became very aggressive about crawling, exposing some of our scaling limits as they doubled our already significant traffic in a few short months.

I was working on the system that picked ads to show on our pages (we had our own internal ad system, doing targeting based on our own data). This was the most computationally intensive part of serving our pages and the ads were embedded directly in the HTML of the page. When we realized that 90% of our ad pick infrastructure was dedicated to feeding the crawlers, we immediately thought of turning ads off for them (we never billed advertisers for them anyway). But hiding the ads seemed to go directly against the spirit of Google's policy of showing their crawlers the same content.

Among other things, we ended up disabling almost all targeting and showing crawlers random ads that roughly fit the page. This dropped our ad pick infra costs by nearly 80%, saving 6-figures a month. It also let us take a step back to decide where we could make long term investments in our infra rather than being overwhelmed with quick fixes to keep the crawlers fed.

This kind of thing is what people are missing when they wonder why a company needs more than a few engineers - after all, someone could duplicate the core functionality of the product in 100 lines of code. At sufficient scale, it takes real engineering just to handle the traffic from the crawlers so they can send you more users. There are an untold number of other things like this that have to be handled at scale, but that are hard to imagine if you haven't worked at similar scale.


> This is actually why I feel that mathematical texts tend to be not rigorous enough, rather than too rigorous.

The thing that mathematicians refuse to admit is that they are extremely sloppy with their notation, terminology and rigor. Especially in comparison to the average programmer.

They are conceptually/abstractly rigorous, but in "implementation" are incredibly sloppy. But they've been in that world so long they can't really see it / just expect it.

And if you debate with one long enough, they'll eventually concede and say something along the lines of "well math evolved being written on paper and conciseness was important so that took priority over those other concerns." And it leaks through into math instruction and general math text writing.

Programming is forced to be extremely rigorous at the implementation level simply because what is written must be executed. Now engineering abstraction is extremely conceptually sloppy and if it works it's often deemed "good enough". And math generally is the exact opposite. Even for a simple case, take the number of symbols that have context sensitive meanings and mathematicians. They will use them without declaring which context they are using, and a reader is simply supposed to infer correctly. It's actually somewhat funny because it's not at all how they see themselves.


I think you underestimate what people will do when desperate, or the extent of gender bias among the Hans. I was born in Taiwan and raised in America, and I still caught whiffs of it.

I am not sure where you are getting the idea that people in the Imperial eras were capable of determining the sex of fetuses, and proceeding with abortion. As far as I know, that is a modern thing enabled by modern technology. If you are suggesting that people heard of this modern practice and projected it falsely into the past … I had thought so to, until I read through a history of Chinese martial arts.

China’s history is very complex. There were imbalances in sex ratios, with large numbers of unmarried, unemployed men skilled in violence destabilizing the society, throughout centuries. By the Ming dynasty, every village trained militias because they had to, and it was a thin line into banditry. Villages, convoys — those were raided. Women kidnapped, and raped. It was a big enough problem that the Ming literates and intelligentsia talked about it, and it grew worse during the Qing.

Corruption among local officials wasn’t minor. It was rampant. Land ownerships had locked people out of economic opportunities, and abusive landowners were the norm. Sects, secret societies were formed for a variety of reason, including mutual protection. Those were the seeds for the near constant uprisings and rebellions during the Qing dynasty, culminating to the Taiping Civil War (14 years of fighting, 20-30 million dead, 600 cities razed). That sex ratio imbalanced was a factor leading to all of this.

China also has the world’s most complex watershed in the world, when taking agriculture into consideration. The only other comparable watershed in terms of complexity is that of the Sacramento River basin, and it does not compare to the scale of the Yellow River basin. The flooding of the Yellow River is frequent. Feast and famine is deeply ingrained in Chinese culture (“have you eaten?” is the equivalent of “how have you been?”). We are talking mass displacement of refugees and widespread hunger during the bad time. Even if it were not wars, rebellions, or bandits, this alone sets the circumstances for desperate times.

You can call female infanticide “racism” if you like, but I think doing so denies the misery and cruelty buried in history.

As for me, this — both the good and bad — are a part of my heritage. Female infanticide is one thread out of many that had happened. It’s in owning the whole thing that reform is possible.


Your intuition was spot on! I used to cut concrete for a living, and we had several hydraulic chainsaws. The torque on those things was incredible. They were quieter than gas chainsaws, even factoring in the diesel-powered hydraulic pump in the trailer nearby. The main drawback, as other commenters mentioned, was portability. The saw itself was shockingly light (which made the torque that much more surprising) and portable - until you ran out of hydraulic line! Plus you always had to watch your lines to make sure they weren't going to get cut by a blade, pinched under a falling piece of concrete, or crushed under some piece of mechanized equipment. Interestingly, there were three lines - hydraulic in, hydraulic out, and a water hose to spray on the cutting surface and keep the dust down. It's been a decade since I worked that job, but I still clearly remember the feeling of revving one of those things up, watching the water fly everywhere, and grinning as I just carved straight into a solid concrete wall - rebar and everything. It was a delight.

People are upset that Go boringly models actual computers that you can buy and incorporates pretty much no exciting computer science concepts. You get structs, slices, and maps. This basically means, you never get to show off your esoteric computer science knowledge while making whatever you set out to make; all you get at the end of your journey is a working computer program that stands on the merits of what it does and not how it was implemented. This is very dissatisfying to many. They might not have anything in mind to make today, but do enjoy solving a good mystery, and there are many obscure programming languages that scratch that itch. Consider "monad tutorials". Nobody has ever needed to figure out what a monad is for their work, and they certainly aren't used to implement physical computers that you can buy at the computer store, but the high level of abstraction really pleases people. It's so abstract that it's difficult to reason about, and feels more like mathematics than making an automaton do your bidding (which is basically all programming is).

Like, structs, maps, and slices are things you can explain to someone in 5 minutes with no software engineering or computer science background. They map to real-life concepts that people use every day. Do you have an ordered todo list? Ever use a dictionary? Ever look at a driver's license, where every license has the same fields but different information? Congratulations, you now intuitively understand the core data structures in Go code.

There is also no way to golf down code. Want to map the elements of a slice into another slice? That's a for loop. Want to reduce over a slice? That's a for loop. People get super excited about giving each sort of operation like this its own name, map reduce foldr foldl zip... but like many things, the names hide what's actually going on, where as Go just makes you type what you're doing into your editor. This seems to annoy people greatly.

The "it's for dumb people" is riffing off a comment made when Go was first introduced; they were aiming for a language that would be easier for large teams to maintain. People new to the codebase could show up and start being productive. Fixes could be applied en masse across the entire codebase. So that's where that comes from. I guess we contrast it with C++, where one missed reference count increment here, or one stack variable returned from a function there, and you have an impossible to debug nightmare that is blowing up in production. Knowing not to make those mistakes makes you smart, and being new and having the system blow up in your face is a great learning exercise, right? Why should you get to come play with my system the day you graduate from college? You have to earn it! So I think that's where the hate comes from. If the junior engineers can start contributing, you're going to have to do something other than troll HN all day or you'll be rEpLaCeD.

A lot of criticisms of Go are right. You can absolutely type in the most dogshit broken programs imaginable. (Most of them start by overusing the keyword "interface", BTW.) There are lots and lots of traps for the newcomers and even the unwary ("invalid memory address or nil pointer dereference"! what's a nil interface value? why is every goroutine you started in that loop see the same value of the loop variable? your goroutine has no way of exiting, so after 100,000 web requests your app gets OOM killed.) Tons of stuff you have to learn to truly be fluent.

It's missing a lot of input from computer science. Structured concurrency? Software transactional memory? Algebraic data types? Classes? Metaclasses? And, it makes a lot of mistakes whose harm is well-documented. ("Nil in 2023!?") While Go tries to be a simple model of the computer, the simplicity is not free. There is no claim that abstractions are zero-cost. Garbage collection WILL use your CPU. Looking up an element in an array or slice has a bounds check added! That memory you got from the OS wasn't zeroed, so guess who set that variable you just declared to the zero value. You just used a resource and you didn't get to decide. That sort of thing can make a certain type of person furious.

There is also a lot of good. The standard library is actually useful. Using third-party modules is easy, and requires no registration with some intermediary to publish one. (Also fetching modules can't print advertisements. I have no idea if any Go developers drunkenly drove their motorcycle into some pedestrians and now need a job, whereas with Javascript, it tells me that every time I build my app! Frankly, my dear, I don't give a damn. I am in the middle of my workday!) You are only nagged about security vulnerabilities if you actually call into the vulnerable code. The speedy compiler outputs a binary that can run on pretty much any computer of the right OS and architecture. You can trivially cross-compile. Everything that is tedious about the mechanics of making something that people can use largely Go away with Go. You can open up your editor, type in a program, and send it to other people to use. That's really nifty.

At the end of the day, Go isn't the last programming language society will ever develop. But you can make a lot of stuff with it. If you've ever been to an art museum, you might notice that you rarely see an example of some famous artist's pencil. You see their work. That's how programming languages should be; get out of the way, and let your work speak for itself. A lot of people really don't want their work to be front and center, and those people really don't like Go.


Eh. I'm not sure it's so different.

For instance, security pins are inexpensive and dramatically increase picking difficulty while not impacting costs by more than a few cents/unit (at most!) or maintenance concerns by any noticable amount.

The all plastic logout/tagout masterlock [https://www.amazon.com/Government-Safety-Lockout-Padlock-Zen...] for instance has all security pins and is a real challenge to pick for most folks (including myself!), and makes it much harder to bump too. It isn't sold as high security. It's cheap, but also has a brass core and brass security pins, etc. so it's not like the core is skimping on things, or could be a major cost. The total (retail!) cost of the lock is a fraction of the 'high security' locks, even though those locks are much much easier to pick and bypass.

The masterlock 'high security' pro series locks didn't have any security pins at ALL and were super easy to pick (or bump, likely) up until VERY recently. By very recently, I mean I just saw it when I checked out their current lineup - and a year or two ago they definitely did not have it!. It looks to have a SINGLE spool pin in it. They're now heavily promoting it as 'bumpstop' tech. I'm guessing LPL or similar finally made some sort of impact, or maybe word of mouth after contractors have all their shit stolen.

Similar locks sold by the 'American Lock' brand (same ownership now) has always had at least one security pin, usually 3 in even their most basic padlocks for as long as they've existed I believe. 100 years?

And that isn't even talking about bypasses which maybe fit what you're describing better. Many of the common commercial and residential locks sold today still have trivial bypasses or decoding that can be done with some practice in seconds by tools sold online. Such as this bad boy [https://www.amazon.com/Master-Lock-M40EURDNUM-Combination-M4...]

And that is just the tip of the iceberg. Is it fraudulent? Eh... there is no real concrete definition for 'high security'! And fraud doesn't include 'mere fluffery' either.

Masterlock certainly isn't claiming TR/TL-30 ratings on any of their stuff!

These issues however have been widely known about in some cases for 50-100 years or more. For instance, doing some random googling I ran across this patent [https://patents.google.com/patent/US917365A/en] for pin within sleeve technology to work around that whole basic pin-tumbler picking issue (from 1908!), and at least according to this random website, spool pins were invented in 1865 by Yale himself, shortly after the first pin/tumbler locks were invented [https://www.art-of-lockpicking.com/security-pins/]!

The patent expired so long ago, it is absolutely laughable to not use them, and it's definitely ridiculous for a pin-tumbler lock to not have at least ONE! If not have all but one of them spool or similar!

I have a hard time seeing how that is any different than selling a secure system with an 80 bit crypto key where the 'secret algorithm' nukes all but a handful of the bits in a predictable way. Or like in the case of well known lock bypass exploits, where there isn't a way to poke the low level protocol to get it to set a known key value and let you take over.

I think what you're getting at cryptography wise, is that unlike most physical locks, the vast majority of cryptographic usage is for data that there is no plausible way to have any confidence the cyphertext wasn't read by some unknown (and actively malicious) party. Bits can be copied perfectly, and stored essentially indefinitely without degradation and at low cost.

And often, where the data is even public (or public like - with no way to control access). And no plausible way to have confidence that it hasn't been copied and someone isn't working on it right now.

And no plausible way to have confidence that this wasn't being done on a massive scale, to nearly everyone, all at once. Even if someone picks a lock to an ATM, for instance, someone has to physically be there and spend actual time when they are at risk to pick it. And there are security cameras and usually some kind of guard or bystanders that can visually identify when something weird might be happening and intervene. That dramatically changes the actual risk profile and ability to extract value.

The majority of situations tech wise, there is no equivalent. It's relatively easy to splice into an underground fiber link going into/out of a datacenter with no one noticing and 'pick' every lock going by and extract whatever you want from it with no one being able to tell for years. If ever.

Frankly, there are also many reasons to be suspicious (or even know for sure!) that is actually being done, right now, by many parties. Some of which definitely don't have the data's 'owners' interests in mind. Most/All, if we're being honest, at least for them as individuals.

Luckily, most of us don't seem to have anything worth stealing (individually), though in aggregate is another matter. And it would be a VERY tempting and VERY difficult to pass up target to not 'steal' all the interesting secrets from Congress and other powerful parties 'in the interest of national security' for instance. Especially the things not on official government computers.

So I guess what I'm saying is - yes, it is absolutely critical to have good crypto. And yes, unlike a padlock guarding a shed, it has dramatically higher risks if it isn't actually a good lock - especially as we use it for banking, commerce, gov't, identity, etc). Especially since we need to be sure it will be good for the foreseeable future, because unlike a cheap padlock we decide to swap out when we figure out it's shit, someone can attack it and get what it was protecting potentially years or decades in the future.

It's also in many parties interests to come up with reasons why people shouldn't have it (at least unless they're friendly/they like them), and there are a lot of market reasons why people won't notice or won't care until the problem is impossible to ignore and the damage is already occurring.


> Wasn't C created to avoid matching hardware?

Not exactly. C code from the early Research Unix days often makes very specific assumptions of how the hardware behaves. As a starter, C was created in an age when 36-bit mainframes still ruled the world, yet it decided to only use 8-bit integers as its base word size, not 6-bit - because the PDP-11 is a 16-bit machine.

More appropriately, you can say C was created to avoid writing assembly code. Or you can say, the original purpose of C was to create a minimum high-level programming language that hits the lowest bar of being portable, and not more. C itself is a paradox, it's sometimes known as "portable assembly" which further reflects this paradox.

On one hand, it provided a lightweight abstraction layer that allows basic high-level programming, while still being simple enough to write or port a compiler to different platforms easily (for early C at least).

On the other hand, C was in fact intimately related to the hardware platform it was running on. Originally, the operations in C were designed with compiling directly to its original hardware platform PDP-11 in mind, rather than being defined by some formal mathematical specifications. So the behavior of C was basically, "the most natural result of the platform it's running on." This is why C has a ton of undefined behaviors - But paradoxically, this is also what made C portable - it could be matched directly to hardware without heavy abstractions, and thus C was simple.

Today we like to see C as portable, so "never rely on unspecified and undefined behaviors" is the rule, language lawyers tell us that C should be seen as an abstract machine in the symbolic sense. Compilers are performing increasingly complicated and aggressive logic and symbolic transformations for optimization and vectorization, with the assumption that there's no undefined behavior.

But if you read early C programs on Unix, you would see that developers made liberal use of unspecified and undefined behaviors, with very specific assumptions of their machines - in early C, undefined behaviors were arguably a feature, not a bug. C didn't support floating-point numbers until a hardware FPU was installed to the PDP-11, and even then, it only supported double-precision math, not single-precision, simply because the PDP-11 FPU had a global mode, making mode-switching messy, so Unix developers didn't want to manage it in the kernel. The famous Unix code, "you're not expected to understand this" went as far as depending on the assembly code generated by the compiler (to be fair, it was only a temporarily hack and was later removed, but it just shows how C was capable of being used). Meanwhile, under today's portability requirements, C programmers are not even supposed to assume signed integers use 2's complement encoding, and signed overflow is undefined (before C23)!

So there's an inherent contradiction that exists inside C on whether it's portable or it's machine-dependent, simultaneously.

The original C was "it is what the hardware is" (but it's still portable at large, because of its simplicity), and today's C is "it is what the abstract machine is, as defined by esoteric rules by language lawyers."

To show this conflict, I would quote Linus Torvalds:

> Yeah, let's just say that the original C designers were better at their job than a gaggle of standards people who were making bad crap up to make some Fortran-style programs go faster.

I don't exactly agree with Linus, and I don't believe today's heavy symbolic transformation and auto-vectorization should be taken away from C, I don't believe we should go back to "pcc" in which the compiler did nothing more than straight translation. I think it's reasonable to demand highly optimized code, of course. I'm just saying that there is a mismatch between C's hacker-friendly root and its role as a general-purpose language in the industry after it took over the world (ironically, exactly due to its hacker-friendless). The original hacker-friendly design is just not the most appropriate tool for this job. It was not designed to do this to begin with, so it has created this unfortunate situation.

So C in today's form is neither hacker-friendly nor production-friendly. But its old "hacker-friendly" image is still deeply attractive, even if it's illusory.


s someone who degreed in economics, and has been studying the economic resource situation formally and informally for nearly five decades, what I've come to realise is that economics has a very shaky grasp on the actual, and sensible, pricing of extractive resources.

Economically, mining is exploitation of any resource on a basis which fails to account for the full ecological formation costs of that resource.

In the case of petroleum, we can look at one ecological cost: time.

Petroleum formed over a period of hundreds of millions of years. It's been extracted by humans for a couple of hundred years. Even on napkin math, the time cost is being discounted by on the order of one million fold.

If the resource were so vast that it could not be meaningfully exhausted, this wouldn't be an issue. But we've hit peak conventional oil within numerous major producer countries, and quite probably the world, which corresponds to roughly half the total exploitable resource having been exhausted.

The economic theory most often mentioned for pricing of nonrenewable resources is Hotelling's Rule, formulated in 1932. I've read that paper numerous times, and the fact that strikes me most about it is that although it cites earlier economic works and numerous references of the author himself, it cites absolutely no scientific, geological, or petrochemical references. It's utterly devoid of any real-world grounding.

And we have pricing data to invalidate it, one of the most comprehensive being crude oil prices dating to 1870 or so. That's published as part of BP's Annual Statistical Review of Energy, showing both nominal and inflation-adjusted prices.

What's clear is that price does not follow the trend predicted by Hotelling, but rather reflects, at various times, unrestrained extraction (when the price collapses), various catellisations and embargos (when it peaks), and several periods of long-term managed output, during which it remains quite nearly constant. The longest and most stable such period was from the early 1930s to the early 1970s, following the establishment of regulated extraction in the United States (at the time the world's peak, and surplus-capacity, provider of oil).

Immediately prior to this period, following major discoveries and unregulated extraction in East Texas, the price fell from a target $1/bbl to $0.13/bbl, and finally as low as $0.02/bbl. The rational for pricing wasn't Hotelling's model, but the bare minimum price required to meet marginal costs of extraction.

More recently, in the 2000s and 2010s, what's emerged has been the flip side of demand destruction, where prices of oil can rise to the point that economic activity can't support them, and demand collapses, with it ultimately price (as more expensive marginal wells are withdrawn from production). Price has see-sawed between highs as the global economy surged, and lows, as it collapsed. Sometimes exogenously as with the 2020 global COVID pandemic, which saw US spot futures prices fall negative briefly at contracts expired and delivery had to be made --- there was no available storage and traders paid to have their oil offloaded.

The upshot is that extractive commodity prices don't behave as one might expect during periods of exhaustion. Rather than rising monotonically, they'll jump around on thin trading, surges in supply and demand, and external influences.


Hiya jaycroft, et al. First time / long time, here. It sounds like you're already taken care of, but I hope this will benefit /someone/ reading through here. Iofd, I am a card-carrying ALoA member and professional locksmith.

The Associated Locksmiths of America (ALoA) [0] has its own search tool [1]. Of course, the same rules apply as everywhere. Not all good locksmiths are members, and not all members are good locksmiths. But, personally, I'll take the word of a trade organization over that of an advertiser any day. The real tragedy here is that both google and yelp apparently missed the opportunity to serve up a tool like this, in favor of (I'm guessing here) whoever bought the most expensive SEO package.

To answer your question: In my experience, yelp is dealing with this by being a smaller service, in every sense.

Google has, by making itself the de faco choice for each and every mode of search, become a "bucket of crabs" [2][3]. As such, it as an environment is selecting for that crab who can best pull down the other crabs, and not the "tastiest" or whatever.

That said, I can't think of anyone, off the top of my head, who puts any money into yelp. Where I live, it simply isn't popular. It's not a part of the culture, the same way that google is, and so is not as attractive to interlopers, "puppy mill"-style franchises, etc. I believe you're getting better results simply because it's too small a bucket for bad-ish actors to see it as a viable feeding target.

Back to the trades: Imho, screw search engines at large - even ALoA's. Ask your friends for recommendations. Don't have any friends? Call up your favorite cafe, and ask them who they use. Even if their tradesmen work strictly in the commercial space, and you're looking for someone to do some residential work, they /really should/ be willing to recommend another tradesman. One doesn't work in the trades for very long, without being exposed to the other players in one's area.

Lastly, I beg you: if you've found a tradesman who treated you well at a fair price - evangelize on their behalf. Tell your friends and family. Ask that locksmith for a dozen business cards. Most of us will knock a few bucks off of a service call if we were recommended by word-of-mouth. Not everything needs to be an on-line affair.

[0] - https://www.aloa.org/index.html

[1] - https://www.findalocksmith.com/

[2] - https://en.wikipedia.org/wiki/Crab_mentality

[3] - The only entity that wins, in this scenario, is the cat who owns the bucket... I know a number of very good tradesmen who feel like they need to spend very big money on SEO and advertising just to come out one index-position ahead of their competition. If the numbers -one and -two position, on google specifically in my area, would put aside what I call their "advertising cold war," they could both afford to take a very nice holiday every year. Sadly, they choose to subsidize some advertiser's very nice holiday. So goes the world.

edit: formatting...


It was Megan Kacholia, who had put Timnit Gebru and others close to her down for a long time constantly within Google, always talking down and being condescending and rude, failing to respect Timnit in how she confronted Timnit about the paper (which she was ordered to retract by way of not Google's normal paper review process, but by a then-newly-implemented and since retracted secondary "sensitive topics review" process, due to a combination of actual mistakes like the environment numbers, and also Google being too afraid of reputational damage for her discussion of the very real and tangible harms of LLMs).

Timnit tried to raise this to Jeff Dean to get help (Jeff was Megan's manager at the time). Jeff completely misunderstood what she was asking for, and instead sent some response about the environment numbers being incorrect (and they are, but that doesn't at all justify the way Timnit was treated). Not beginning to imagine that Jeff could have missed this signal, Timnit responded sarcastically. Jeff didn't pick up on the sarcasm and thought all was good.

Timnit then reacted by describing her frustrations with how she was treated in an internal diversity mailing list. She also emailed Megan Kacholia with a number of demands, mostly to be treated reasonably. Appalled at how she and her coauthors were treated, she refused to retract the paper. Megan reacted by taking her note that she would work on a resignation date if demands were not met in combination with Timnit's email completely pedantically and out of context, using them as an excuse to fire her by rushing her out, without allowing her to follow the actual resignation process. She also acted over Timnit's manager's head (Samy Bengio), who was so annoyed he later quit. (Megan cc'd Jeff, but hadn't spoken to Jeff about any of this, and was acting on her own.)

Interestingly, Timnit's email to the diversity list was so resonant that several of the changes it asked for in how Google approaches diversity were enacted after her firing. But Megan and Google's official line on all of this chose to obsess over Timnit's rhetorical devices and take them literally instead, using an email to a diversity list about diversity against her. People are still too afraid to talk about diversity on diversity lists, now, because of Google using that email against her.

Google reacted by gaslighting Timnit to protect its ass. After Timnit Tweeted that Jeff had fired her (Timnit probably really thought that Jeff and Megan had spoken to each other before Megan had sent that email), Jeff participated in this part in public, on Twitter, with a lot of serious consequences for Timnit and others, without considering power dynamics. (Jeff suffered a lot on Twitter, too, but that doesn't excuse not considering power dynamics in such a consequential way on such a consequential medium.) Timnit and others, including me, were harassed and threatened because of this, by way of third-party harassers. I was not even involved on the paper, just proximal damage. I was afraid for my life honestly.

Meg Mitchell, feeling lost, having seen the truth of how Timnit was treated internally, and trusting Jeff to protect her, tried to put together some things for Jeff to get him to see how Timnit was mistreated. She panicked and backed them up on her personal email because she was afraid of retaliation from Google (a reasonable fear---doing any diversity or community work at Google that at all challenges the status quo IME gets you retaliatorily reported to PeopleOps, who then try to get you in trouble and read your private communications and so on). She was transparent about doing this and gave instructions for Google to remove her personal copy if needed. Sundar Pichai fired her and then comms smeared her publicly with outright lies. She was harassed and threatened for this, too, and a number of places refused to hire her because of Google's treatment of her. Really tangible damage emotionally, financially, and reputationally.

Out of fear of being sued, Google's comms and legal departments reacted by continuing to censor and gaslight. Sundar was extremely complicit in this, too. Megan was moved out of Research, but not much else happened; she continues to send monthly emails about diversity, as if her continued contact with Research is not actively harmful to diversity.

So sick of internet people speculating about this without knowing anything about the situation. Sorry if I broke anyone's trust here. Just can't deal with this incorrect speculation anymore. (I have extremely thorough information about this, but to those directly involved, please feel free to correct me about any details I got wrong, or about important details I omitted.)


I've driven truck for 4+ years.

Side mirrors: I have _never_ cleaned the mirrors by hand. That happens when I'm refueling with a squeegee on a long pole that they have at truck-stops. I will tell you that those mirrors will vibrate like hell and be difficult to see clearly out of. That far away from the chassis and with only one point of contact will make it vibrate a lot.

Gatehouses: that is a very valid point, but most guardhouses (I mostly just have experience with Ford/Chrysler/GM) make you get out of the truck and go open up the trailer. You don't even roll-down the window to talk to them.

Weigh-Scales (aka Chicken-Coops) where Highway weight inspection happens: Most just use a speaker on a pole at window height, but other places (like USA/CAN border crossing) you have to pass paperwork back & forth to agent, so this would be difficult.

Entry/Egress: these are valid points but the need to enter/exit from the passenger side has only happened to me once. My biggest use of the passenger seat: That's where I kept my cooler for food/beverages.

And that brings me to my list of observations that make this tractor seem like a non-starter (from things i noticed watching the '10 hour drive' video):

(1) The monitor on the right-side of the driver. Some of the time it was a map/GPS, but most of the time it was displaying text that the driver leaned over/turned his head to read. This might have been dispatch notes, or vehicle diagnostics or something else. HELL NO, not even once would I ever drive something that required that much attention away from the road.

(2) Food/Beverage options. Most drivers that I ever saw used a LARGE 24oz-36oz insulated mugs for coffee. A lot would pour an entire pot of coffee into their mug! So most trucks had 'over-sized' cup holders. The 'nicer' trucks I drove also had shelves with guard rails (it always reminded me of boat-storage) in areas that I could put food that I could eat while driving. I didn't see that same kind of space. The less-nice trucks would force me to use the passenger seat. This truck did have lots of area, but there was nothing to prevent things from sliding around.

(3) Load/Log paperwork: Usually kept in a clip-board (mandated by law if carrying hazmat material to be stored in drivers-side door pocket). Once again door placement and lack of shelves play an issue here. I often kept mine on the passenger seat. This material is rarely touched while driving, but there is a considerable amount of paperwork that needs to be done each time the truck stops. Related: Notepads. About half the companies that I worked for required that I log the vehicle mileage (and time) when crossing state lines. There might be adequate space for this. Notes were needed to be written down quite frequently.

(3) Range to refuel ratio. I drove a 600 mile radius centered around Detroit. I would goto Quebec, Missouri, Tennessee, and all points in between. Each time I needed to 'fill' the fuel tanks would take ~30 minutes. That 30-minutes would give me ~1800 miles of range (VERY rough estimate, I never got close to empty). I would often get fuel at either designated locations (like at the company lot)or when I was OTR I would do it before I stopped for the night (as needed). Even if Tesla built out a super-charger like network for the trucks I can't imagine having enough time to make 3x more stops, with each stop taking MUCH longer.


Oh wow, funny this should turn up here. I had of course read the story in Men of Mathematics, and when I saw this question posted on MathOverflow in 2015, I decided the existing answers were inadequate (for me at least), so I went super deep on this question[0], reading some obscure papers in German and Latin via typing them up into Google Translate, but never got around to writing up the definitive answer to this. Let me post an outline of my findings here, as it's unlikely I'll write that post anyway:

• The account by E. T. Bell, of Cole standing up and wordlessly carrying out a multiplication on the blackboard, ending with applause, is, in my opinion after considering all the facts available, almost certainly a "dramatization" by Bell.[1] However, I'm inclined to believe that Cole basically followed the structure of his paper[2], which does have a dramatic end and there would have been applause (even if his talk was not wordless). Also, the "three years of Sundays" seems about right.

• Unlike the implication of Bell's story, M_67 = 2^67 - 1 was already known to be composite by 1903, as Lucas[3] had already shown it (and Cole cites him in his paper). What was not known was a factorization, which is what Cole did.

• Cole's paper is very elliptically written and only focuses on his original contribution, but if you read it carefully for the factorization method, the true hero of this story IMO is Paul Peter Heinrich Seelhoff (1829–1896). This Seelhoff (does not have an article on Wikipedia, even on the German one) was a high-school teacher in Mannheim, and he wrote some papers that have many great ideas but are also full of computation errors. No one seems to have paid his work much attention before Cole (his name shows up in only very few histories of mathematics / number theory from that period).

• Seelhoff's method, which Cole used, is basically what we now call the Quadratic Sieve[4], “still the fastest for integers under 100 decimal digits or so”. It's amazing how many modern algorithmic ideas Seelhoff anticipated, even things like optimization tweaks and when to stop. (After Cole only Kraitchik seems to have read Seelhoff closely, and it's via Kraitchik that the modern methods like CFRAC and quadratic sieve came to be, after the advent of computers.)

• The idea at heart is a generalization of Fermat's factorization method, and goes back to Lagrange (and Gauss): to factor N, if you can find a solution to x^2 ≡ y^2 (mod N), where x ≢ ±y (mod N), then you're done, because N divides (x-y)(x+y) and taking gcd(N, x-y) and/or gcd(N, x+y) will give a nontrivial factor.

• If you have some magical method that tends to give small quadratic residues mod N, that will help, in two ways: the very fact that (say) 7 is a quadratic residue mod N (and therefore mod its residues) will impose some condition (by quadratic reciprocity) on the prime factors of N, which will knock out half the possible values. So with k quadratic residues you need to try only 1/2^k of the primes. The second way it helps (due to Seelhoff) is that your method may end up giving you two ways the same quadratic residue can be achieved, i.e. a nontrivial solution to x^2 ≡ y^2 (mod N).

• The idea of the quadratic sieve (and Seelhoff's innovation) is to find such residues by doing the following: first, try to find "smooth" residues mod N, by looking for conditions on x to make a=x^2-N be divisible by several chosen small primes. Then, whichever of these these residues you can fully factorize, write it as (basically) a bit vector of the primes that divide it. Keep track of these bit vectors (write them down as rows one below the other, say) and do row reduction: the moment you get a "cycle" (nontrivial linear relation), you're likely done, as you have x^2 = y^2 (mod N).

• Cole did come up with an idea or two of his own, which cut the search space down (in the third phase) by a factor of 4 (instead of 2) for each residue: thus, estimating that it was doable, he had the persistence to carry out this project of hand calculation. But the bulk of this calculation was finding quadratic residues and using the resulting congruence conditions, not trial division.

I'll stop here as I have the sense this comment has become super long, but you can get a good idea of all this in Factoring Integers Before Computers (1994) by H. C. Williams and J. O. Shallit (cited in the page below).

———

[0]: https://shreevatsa.github.io/site/cole.html [see my comments on https://mathoverflow.net/a/207354 — 2016, 2019, 2021 :P])

[1]: I reach this conclusion from a careful reading of E. T. Bell's biography by Constance Reid, which BTW is an amazing book. The first part of it reads like a detective story (her own work unearthing details about Bell). Also, at one point there's a cameo appearance by Arthur C. Clarke, as a fellow science-fiction writer (E. T. Bell wrote some SF novels as John Taine) who happened to live in Sri Lanka. BTW Bell was almost certainly not present at that New York meeting of the AMS where Cole read his paper. Also, Cole was likely Bell's PhD advisor later (surprising we can't be sure of advisor-advisee relationships this late).

[2]: http://projecteuclid.org/euclid.bams/1183417760 -> https://projecteuclid.org/journalArticle/Download?urlId=bams...

[3]: Lucas is another hero; you can read H. C. Williams's book about him. He wrote papers on agriculture etc and randomly turned to math and did an amazing amount of work (on factoring etc — and it was he who made Fibonacci numbers a worthy object of study and gave them that name) in just a few short years, before abruptly abandoning math completely after someone gave a bad review to one of his papers.

[4]: https://en.wikipedia.org/wiki/Quadratic_sieve


I guess, but it's, well, complicated. In my country, there are (a small number of) spots in medical school reserved for the native people.

Naturally, lots of non-native people considered that racist.

Except it was done to try to correct a very real problem - that the native people have disproportionately worse outcomes in our health system. And likewise, due to about 150 years of deliberate policy that marginalised the native people, they were disproportionately less likely to enter medical school.

And there's now, after some years of this policy, an emerging body of evidence that this "racist" policy around medical school spots is making a difference around health system outcomes for native people.

So yes, the policy is, on the surface racist, but it's slowly combating a systemic racism that was baked into all of our government institutions by previous racist policies. (E.g., native people experience a higher conviction rate and harsher sentencing for the same crimes as white people)

There's still a long way to go for us, but yeah, it gets damn complicated when you're trying to undo the damage of previous racism by introducing positive discrimination.


I've thought about this a lot. I think that overall, malloc/free/new/delete are already so hard to use that if you added more stuff, it would create too much cognitive load for the programmer. The result would be that the hints the programmer gave you would be more wrong than the malloc's best guess.

Let me go through these point by point and offer some thoughts.

- Perhaps `malloc` could ask for an intended lifecycle (think GC generation) that could swap arenas or other algo internals. This opens us up to meta-allocators.

It could, and if that information was accurate, then it would be profitable. But if that information was inaccurate, then you'd get worse perf and worse memory usage than if you let malloc just do whatever it wants. Also, anything like this creates more fragmentation since it creates a new opportunity for the programmer to force the allocator to pick something other than the first fit.

- Perhaps program lifecycle hooks that give allocators more context into how already-allocated memory intends to be accessed. ("Done bootstrapping the server, so now new memory will be accessed by single threads and only live for one request", etc)

If you convey this information after you've already allocated the object then there isn't much the malloc could do. If the malloc uses this information to decide where the next malloc call puts memory then you've created a fragmentation risk.

- Perhaps the programmer could periodically call `remalloc` to allow objects to be moved or promoted between arenas/generations.

Yes, they could, and this is a great idea. I believe that calling realloc (or just mallocing a new object, memcpying or copy-constructing, and freeing the old one) relieves fragmentation because it gives the malloc an opportunity to put the object in a more profitable location.

- Perhaps mallocs/frees could be more intelligently batched (where explicit structs/arrays don't normally make sense) for surprise-free defrag or OS allocation.

libpas batches allocation and deallocation. These strategies help performance. They have only a small effect on memory usage (and that effect is that you use a bit more memory by batching).

- Intelligent pairing of malloc/free with explicit notions of intended re-use; some indication of "I will free this and ask for the same memory again in the same call" or auto-struct-ing mallocs which know that we tend stack malloc(foo);malloc(bar);free(bar);free(foo). Avoid any actual OS/memory involvement whatsoever.

Allocators like libpas (and mimalloc and many others) have very cheap malloc/free calls that perform great in these situations. They don't do any locking or call into the OS in the common case when you do this.

- Perhaps `identmalloc` could handle common flyweight patterns of instantiate-unless-exists; e.g. intelligently turn shared state into offsets into a contiguous arenas. This may be more useful in C++ with existing conventions around copy-by-value constructs.

I think that most fast mallocs like libpas (and others) make this situation cheap enough that you don't need anything else.

- Some of these are indeed components of existing mallocs/allocators (e.g. libpas is type-aware), but my point is that allocators have to jump through hoops to derive heuristics, and these heuristics often amount to "the programmer often intends to use memory like X." Performance engineers then pattern-match for X rather than cooperating with the compiler to expose X intrinsically from the beginning. The above ideas impose slightly different programming paradigms, so there's still the white wale of a perfect drop-in heuristic, but it seems less subject to temporary or local maxima.

If the program is simple enough that you understand the object lifetimes completely, or you have enough resources to throw at the problem that you can completely understand lifetimes even for a complex program, then the best path forward is to just not call malloc. Lay out your memory a priori or write a highly customized "allocator" (that may not even have an API that looks anything like malloc).

If the program is too complex for such reasoning, then I believe there's no way for the programmer to tell the malloc anything it can't deduce with heuristics. The programmer can say some stuff, but when you have a large sophisticated heap, then the programmer will not be able to predict what it is about the heap that creates pain for the malloc. In most experiments where I've tried to do this kind of tuning, I end up with something that runs slower or uses more memory, and the investigation usually leads me to learn that my hypothesis about the malloc's pain point was totally wrong.

- So: Are there compelling (albeit slightly less general-purpose) alternatives where the allocator and programmer communicate additional hints or other API contracts that allow the allocator to move away from heuristics and into proven patterns? Or is this basically akin to "use c++/smart pointers or just get a gc"?

Maybe! I'm not proving a negative here. But everything I've tried in this area has been a negative result for me.


Indeed, as you say, the development of both LRBni and of AVX by 2 separate Intel teams stretched over many years.

Most of the development of LRBni was between 2005 and 2009, when it became publicly known. The first product with LRBni was Knights Ferry, which was introduced in 2010, being made with the older 45-nm process. Knights Ferry was used only in development systems, due to insufficient performance.

Sandy Bridge, using the newer 32-nm process, was launched in 2011. I do not know when the development of Sandy Bridge had started, but in any case the first few years of development must have overlapped with the last few years of the development of LRBni.

I suppose that there was little, if any, communication between the 2 Intel teams.

AVX was developed as an instruction set extension in the same way as the majority of the instruction set extensions had been developed by Intel since the days of Intel 8008 (1972) and until the present x86 ISA.

Intel has only very seldom introduced new instructions that had been designed having a global view of the instruction set and making a thorough analysis of which instructions should exist in order to reach either the best performance or the least programming effort.

In most cases the new instructions have been chosen so that they would need only minimal hardware changes from the previous CPU generation for their implementation, while still providing a measurable improvement in some benchmark. The most innovative additions to the Intel ISA had usually been included in the instruction sets of other CPUs many years before, but Intel has delayed to also add them as much as possible.

This strategy of Intel is indeed the best for ensuring the largest profits from making CPUs, as long as there is no strong competition.

Moreover, now the quality of the ISA matters much less for performance than earlier, because the very complex CPUs from today can perform a lot of transformations on the instruction stream, like splitting / reordering / fusion, which can remove performance bottlenecks due to poor instruction encoding.

Most programmers use only high-level languages, so only the compiler writers and those that have to write extremely optimized programs have to deal with various ugly parts of the Intel-AMD ISA.

So AVX for Sandy Bridge has been designed in the typical Intel way, having as target to be a minimal improvement over SSE.

On the other hand LRBni was designed from the ground, to be the best instruction set that they knew how to implement for performing its tasks.

So it was normal that the end results were different.

For the Intel customers, it would have been much better if Intel did not have 2 divergent developments for their future SIMD ISA, but they would have established a single, coherent, roadmap for SIMD ISA development during the next generations of Intel CPUs.

In an ideal company such a roadmap should have been established after discussions with a wide participation, from all the relevant Intel teams.

For cost reasons, it is obvious that it would not have been good for Sandy Bridge to implement the full LRBni ISA. Nevertheless, it would have been very easy to implement a LRBni subset better than AVX.

Sandy Bridge should still have implemented only 256-bit operations, and the implementation of some operations, e.g. gather and scatter, could have been delayed for a later CPU generation.

However other LRBni features, should have been present since the beginning, e.g. the mask registers, because they influence the instruction encoding formats.

The mask registers would have required very little additional hardware resources (the actual hardware registers can reuse the 8087 registers), but they would have simplified AVX programming a lot, by removing the complicated code needed to handle correctly different data sizes and alignments.

The current CPUs with AVX-512 support would have been simpler, by not having to decode 2 completely distinct binary instruction formats, for AVX and for AVX-512, which is a fact that made difficult the implementation of AVX-512 in the small cores of Alder Lake.


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

Search: