Indoor CO2 may reach levels harmful to cognition by the end of this century - <AUTHOR> https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2019GH000237 <comment><USER2> A good deal is spent explaining rising CO2 levels in the atmosphere and the effects of CO2 on cognition, but it wasn't immediately obvious to me how indoor CO2 levels would be rising. Towards the end, here is their explanation:

> in steady state, indoor CO2 concentration is always at least as high as the > outdoor concentration (as neither generation nor ventilation rate can be > negative) and simply scales with the ratio of generation to ventilation. For > reasonable values of G and Q for elementary school students (0.004 L/s per > student) and classrooms (10 L/s per student), respectively, a ratio G/Q > equates to 400 ppm (Persily, 2018; Persily & de Jonge, 2017). Under such > assumptions, then, an outdoor CO2 concentration of 477 ppm (411 ppm as in > 2019, plus a 66‐ppm urban enhancement) would equate to 877 ppm inside the > classroom upon reaching equilibrium.

The equation and explanation can be found about 60% of the way down.

<comment><USER3> Most classrooms (at least here) aren't well-ventilated (windows are generally kept closed because of "draft" or alternatively "we aren't heating for the air force!", and buildings generally don't have AC/air exchange), CO2 levels are often far beyond 1000 ppm in classrooms anyway, which is obviously not good (there may be debate if going from 450 ppm to 600 pm leads to worse outcomes, but it's pretty obvious that nausea-inducing levels of CO2 and air so stale it feels like breathing water most definitely lead to worse outcomes).

<comment><USER4> If climate becomes warmer, then we'll open the windows more often :-)

<comment><USER5> Not if you're running AC.

<comment><USER6> I'm from a place where you only need AC one week per year so naturally no one has it except in cars, but I've heard that decent systems, especially central ones, don't recirculate the same air over and over again but take it from the outside.

<comment><USER7> Check out HRVs: (air exchangers)

[https://www.popularmechanics.com/home/interior- projects/how-...](https://www.popularmechanics.com/home/interior-projects/how- to/a149/1275121/)

</comment></comment></comment></comment></comment></comment><comment><USER8> Gwern raised some cautions about the studies indicating that these moderate levels of CO2 have cognitive impacts. I haven't read enough to have an opinion, but any HN readers interested in this should probably follow up on the studies he references: [https://news.ycombinator.com/item?id=21569947](https://news.ycombinator.com/item?id=21569947).

</comment><comment> GuB-42 Their conclusion is that we should emit less CO2. Certainly a good idea, but their data clearly point to better ventilation.

Better ventilation is something we can do right now, that will improve things immediately and 100 years from now.

Maybe the best thing would be the mandatory installation of powerful ventilation systems with heat exchangers for new buildings, and incentives to upgrade existing installations. That would help with both problems: getting more fresh air and limiting energy expenditures which can, in turn, reduce CO2 emissions.

<comment><USER9> > mandatory installation of powerful ventilation systems

In my country that's already been a thing for the last few years. The HRV system is around €1000, so it isn't a major cost for the benefits you get. From this year all newly installed units need to be 90% efficient.

Also "powerful" is probably not needed, the system I have at the lowest speed changes the air in my entire apartment every 3 hours, and is basically the same noise level as a barely audible computer fan.

<comment><USER10> The difference in scale between your apartment and most schools is no trivial matter.

At my high school, our one building, with tall ceilings, large cafeteria and so forth, housed around 1300 people every day. Some are smaller, some much bigger.

Moving all of that air at least once a day would require powerful exchangers indeed. If nothing else, it would probably be cheaper and better for students to have plants everywhere. One of my teachers' classrooms was like a tiny jungle. I can't say that it made a significant difference, but it was pleasant at least.

<comment><USER11> Plants sadly don't make a significant impact to indoor co2.

I see a future indoor co2 sequestration device being incredibly popular

<comment><USER12> > indoor co2 sequestration device

If you're happy for it to have rechargeable cartridges, you could easily build one with a once/week cartridge change. The cartridge needs to be ~the same weight as all the food eaten by all the people in the building.

The material the cartridge is made from is dirt cheap (literally limestone!), and recharging is a simple matter of heating it up.

With a pipe to the outdoors and some vents on a servo, the machine could even auto-refresh its cartridge every day, making it almost maintenance free.

<comment><USER13> I'm curious about this cartridge idea. I'm picturing a pipe with quicklime inside and coffee filters on the ends, with a blower to force air through. How tightly would the contents be packed?

This is a little different from what I'd been thinking before your message, which would be more of a fluidized bed reactor -- like quicklime swirling around in air in a garbage can. I think that's closer to how some powerplants treat exhaust.

I've read that there are microscopic changes to the quicklime particles after a couple absorbtion/heating cycles (their pores fill up or something), after which you need to do something to further refresh it, maybe by dissolving it and precipitating it back out of solution.

This led me to considering whether aqueous chemistry might be better.

The simplest would be to react air with calcium hydroxide (would you use a bubbler? Or a packed counterflow tower? Or a spray tower?) and collect the calcium carbonate that precipitates out.

But, based on my shaky chemistry, I understand solubility of calcium hydroxide is low, so you do better with a two-stage process like the Kraft Process:

1\. Absorb CO2 in contactor:

2NaOH + CO2 -> Na2CO3 + H2O

2\. Regenerate solution in causticizer:

\- CaO + H2O -> Ca(OH)2

\- Na2CO3 + Ca(OH)2 -> 2 NaOH + CaCO3

3\. Decompose calcium carbonate:

CaCO3 -> CaO + CO2

The concentrated NaOH solution would be very caustic, so you'd have to be careful with that, but apart from that none of this seems too terribly scary?

Some parts of the above are endothermic, others exothermic, so maybe this could even let you shift energy from the summer (solar furnace?) to the winter when you need it, as part of the deal.

Or maybe this is all too complicated and you should just use a canister of soda lime granules, like an anesthesia machine? ( [https://en.m.wikipedia.org/wiki/Soda_lime](https://en.m.wikipedia.org/wiki/Soda_lime) )

I'd be interested to hear more from people whose chemistry is better than mine.

<comment><USER13> Let's do the thermodynamics:

First, some enthalpies of formation (at 298 K and 1 atm, in kJ/mol) (from [1] unless otherwise indicated):

      H2O(l)       -285.8

      CO2(g)       -393.509
      CO2(aq)      -419.26

      NaOH(g)      -425.93
      NaOH(aq)     -469.15

      Na2CO3(s)   -1130.77
      Na2CO3(l)   -1108.51  (from [2])
      Na2CO3(aq)  -1157.34  (from [3])

      CaO(s)       -635.09
      CaCO3(s)    -1206.9
      Ca(OH)2(s)   -986.09
      Ca(OH)2(aq) -1002.82

The reactions:

1\. 2NaOH(aq) + CO2(g) -> Na2CO3(aq) + H2O(l) ... -111.33 kJ/mol (exothermic)

Here I assume that the gas has to dissolve as part of the reaction so use CO2(g) instead of CO2(aq) on the left hand side. I get an enthalpy delta of -111.33 kJ/mol. This differs from some homework answers I find online like [4] because I use NaOH(aq) while they use NaOH(s), etc; I hope I'm right for this application.

2a. CaO(s) + H2O(l) -> Ca(OH)2(aq) .... -81.93 kJ/mol (exothermic)

2b. Na2CO3(aq) + Ca(OH)2(aq) -> 2 NaOH(aq) + CaCO3(s) .... 14.96 kJ/mol (endothermic)

3\. CaCO3(s) -> CaO(s) + CO2(g) ... 178.30 kJ/mol (endothermic)

Energy issues:

The easy thing would be to run at least (2b) (causticization) concurrently with (1) so you're always precipitating out CaCO3 and don't accumulate any Na2CO3 solution. It would also be easiest to combine (2a) with (2b) in a single causticization chamber. And it'd be simplest to skip (3) entirely, just treat CaO as a consumable, and be happy that you've sequestered carbon as CaCO3.

However, in a temperate climate, you can imagine doing the following to shift energy around the year (how realistic this is I don't know):

\- Only run (2a) during the winter, to heat your home; you'd accumulate Ca(OH)2 solution to be used during the summer in (2b).

\- Only run (2b) during the summer, to cool your home. During the winter you'd accumulate Na2CO3 solution from (1), which you'd need to store.

\- If you're doing (3), do it during the summer, when a solar furnace can be operated. This gives you a reagent that you'll use in (2a) during the winter.

\- You'd want to run (1) all year round, to scrub the CO2.

The main inefficiency this is trying to make useful is that you need to go down in energy with (2a) and back up in (3). And down in energy with (1) and back up in (2b).

I'll next need to understand the soda lime method to compare.

[1] [https://en.wikipedia.org/wiki/Standard_enthalpy_of_formation](https://en.wikipedia.org/wiki/Standard_enthalpy_of_formation) [2] [https://webbook.nist.gov/cgi/cbook.cgi?ID=C497198&Mask=2](https://webbook.nist.gov/cgi/cbook.cgi?ID=C497198&Mask=2) [3] [http://chemistry-reference.com/reaction.asp?rxnnum=454](http://chemistry- reference.com/reaction.asp?rxnnum=454) [4] [https://answers.yahoo.com/question/index?qid=20131119075117A...](https://answers.yahoo.com/question/index?qid=20131119075117AA4IPZU)

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Is there any practical way to have less indoor CO2 than outdoor CO2, _without_ needing to buy expensive single-use scrubber chemicals? Maybe presuming you live somewhere with cheap electricity and/or a cheap fresh water supply?

Basically I'm asking whether there's a Maxwell's Daemon-like device for separating the CO2 from the air, and venting the CO2 back outside, while bringing in the rest of the air. Like a CO2 scrubber, but without any need for CO2 _sequestration_ , since you exist inside an open system instead of in a space station/bunker/submarine.

<comment><AUTHOR> There are these things called plants that do that kind of stuff, so maybe if you have enough of them inside your house, they eat the CO2 away... :)

<comment><USER14> I don't think there's any _practical_ level of plant-having that would result in there being _less_ CO2 in the house than in the atmosphere.

IIRC, there's some point in running an indoor grow-ops where you start needing to worry about spraying CO2-enriched air on the plants; but that's just to accelerate growth, like a fertilizer. Or, sometimes, it's because OPSEC requires you to not vent your smelly waste air — and because no human or animal lives in the grow-op house to convert O2 to CO2, the air becomes gradually CO2-poor. But that wouldn't happen if even one human lived there; humans convert metabolize a lot faster than plants do.

</comment></comment></comment><comment><USER15> Yes, better ventilation is part of the solution. But the authors point out that in many urban areas a "dome" of increased CO2 hangs over the city. Ventilation won't solve that problem. Only reducing fossil fuel burning will.

</comment><comment><USER16> My recommendation is to get an indoor CO2 monitor for your bedroom that can alarm whenever levels go above 1000 ppm. From what I understand high end office are being equipped with such systems with direct control of the ventilation systems for exactly this reason.

For home use a mid-range unit is sufficiently accurate, precise, and reliable. I use the Extech CO200 personally. Don't but a cheap unit because those have calibration drift after a few months. And recalibration is not trivial.

<comment><AUTHOR> I did some quick search end the very cheapest sensors seem to calculate something called eCO2. Like e.g.

[https://www.adafruit.com/product/3566](https://www.adafruit.com/product/3566)

What I was not able quickly to figure out is:

\- What this eCO2 actually is?

\- What is the real world accuracy I can expect from this kind of sensor, with and without calibration?

\- is it enough for calibration just to go outside and assume some number between 400 and 500 (assuming outside means not just next to industrial chimney)? If not, what would be better calibration process?

<comment><USER17> Why not use a real one? MH-Z19 or Z14.

<comment><AUTHOR> because my google-fu was not good enough to find those.... Regardless, I would be curious on the same questions about real world accuracy on those as well.

<comment><USER18> I have two of them, one inside and one outside. They both go down to roughly 400 ppm and the indoor one goes very high when it's all cooped up inside. The outdoor one fluctuates since I'm in an urban area. I believe they are accurate to within about 10%.

During the smoke event, they combined with my indoor/outdoor pm2.5 sensors have been extremely useful.

<comment><USER19> They should go down to 400ppm because the periodic autocalibration which is on by default assumes the lowest level seen in 24 hours is 400ppm.

</comment></comment></comment></comment></comment></comment><comment><USER20> A regenerative CO2 scrubber that people could install inline with existing whole house AC systems would be a big success. I would buy it in a heartbeat.

</comment><comment><USER21> So, we're burning fossil fuels, increasing CO2 output, don't have an idea which will reliably improve the situation and are getting stupider by the day, decreasing our chance to ever getting one. Yay...

<comment><USER22> We do. It's called nuclear power and it's fought by those who claim they are fighting for the environment.

> > [https://www.giss.nasa.gov/research/briefs/kharecha_02/](https://www.giss.nasa.gov/research/briefs/kharecha_02/)

<comment><USER23> Honest and good faith question here: assuming all electricity on the grid was nuclear, how much CO2 emission would remain? You can't just swap massive cargo ships to nuclear overnight. Would "just" making the power grid green be enough?

<comment><USER24> No, power generation is about a quarter: [https://www.epa.gov/ghgemissions/sources-greenhouse-gas- emis...](https://www.epa.gov/ghgemissions/sources-greenhouse-gas-emissions)

Transportation could push that total to 50% if all ICE cars were converted or destroyed and only electric vehicles were used (ignoring ships and trains). "Industry" includes CO2 waste byproducts which are much harder to reduce as many processes may struggle to eliminate that byproduct. Instead capture and sequestration would be needed. This is another 25%

The rest are small, but since we need virtually all CO2 emissions to be zero, we are left with nearly another 25% that isn't tied to electric production and is difficult to replace.

So, 50% of all CO2 isn't power generation related.

</comment></comment></comment></comment><comment><USER25> Has anyone experimented with supplemental oxygen for cognitive benefit?

<comment><USER26> Increasing O2 has physiological effects different from the effects of decreasing CO2. It is not just the ratio or difference between the concentrations that matter.

For example, a major effect of increasing CO2 is to make the blood more acidic (or to put more stress on the homeostatic mechanisms that maintain a target pH), and my guess is that no amount of increasing O2 will cancel that out.

<comment><USER27> > a major effect of increasing CO2 is to make the blood more acidic (or to put > more stress on the homeostatic mechanisms that maintain a target pH), and my > guess is that no amount of increasing O2 will cancel that out

True. More details on this mechanism:

The body uses buffer systems in order to minimize blood pH changes. For example, the bicarbonate buffer system which is catalazyed by carbonic anhydrase.

      CO₂ + H₂O ⇌ H₂CO₃ ⇌ HCO₃- + H+

It is converted back to carbon dioxide in the lungs and exhaled. The rate at which this process occurs is mainly influenced by respiratory rate. Oxygen doesn't directly influence it. O₂ enables aerobic cellular respiration, the process which produces carbon dioxide.

The hydrogen ions are buffered by proteins such as hemoglobin. They are also excreted by the kidneys.

[https://en.wikipedia.org/wiki/Buffer_solution](https://en.wikipedia.org/wiki/Buffer_solution)

[https://en.wikipedia.org/wiki/Bicarbonate_buffer_system](https://en.wikipedia.org/wiki/Bicarbonate_buffer_system)

[https://en.wikipedia.org/wiki/Acid%E2%80%93base_homeostasis](https://en.wikipedia.org/wiki/Acid%E2%80%93base_homeostasis)

[https://opentextbc.ca/anatomyandphysiology/chapter/26-4-acid...](https://opentextbc.ca/anatomyandphysiology/chapter/26-4-acid- base-balance/)

</comment></comment></comment><comment><USER28> This is already a problem in classrooms etc, and shows itself by tiredness and headaches. As I understand it, this will only push harder towards better ventilation.

</comment><comment><USER29> Not just indoor. Just google what a 400ppm increase does and look at projections. The IPCC predicts that major cities might reach 1000ppm outdoors.

<comment><USER30> Looks like in a few decades the AC units will be coming with CO2 scrubbers standard. Just a one more way the global warming is going to tax our economy/society.

<comment><USER31> Wouldn't home CO2 scrubbers need fairly frequent filter replacement? I can easily imagine units being sold with a subscription, e.g $14.99/month and you get a new filter every month.

</comment></comment></comment><comment><USER32> Just get one of this: [https://www.amazon.co.uk/gp/product/B01DY30PG8/](https://www.amazon.co.uk/gp/product/B01DY30PG8/)

<comment><USER33> So. What are you going to do when it shows you levels of CO2 too high? Opening a can of _Perry Air_ , search for [https://duckduckgo.com/?q=air+quality+improvement+with+plant...](https://duckduckgo.com/?q=air+quality+improvement+with+plants) , or what? Using it as an indicator of when to finally move elsewhere?

<comment><USER34> Plants + grow lamps. Get something easy to grow quickly indoors, say some random type of _weed_ , and start letting it absorbing co2.

<comment><USER35> Don't plants take oxygen and release CO2 at night?

<comment><USER34> They do and they don't. The net result of a growing plant is the absorption of CO2 and H2O to create O2 and various hydrocarbons, oxygen and plant matter. The carbon is fixed in the body of the plant. But i did mention grow lamps. Keep them lit and there is no night.

<comment><USER36> Plants still need to use the glucose, though. It's misleading to say that plants produce CO2 at night (since they produce it all the time); rather, they become a net CO2 producer at night because they're not offsetting it with photosynthesis.

I'm not convinced that grow lamps are an effective way to offset that, since photosynthetic efficiency is fairly low (3-4%), and the electricity for the lamp has to come from somewhere. Not to mention that lamps (even LEDs) are also fairly lossy. I'm also not convinced that's even worth optimizing.

<comment><USER34> This is about indoor air pollution. I assume the coal-fired power plant is at least not in the same building.

</comment></comment></comment></comment></comment></comment></comment><comment><USER37> I'm definitely on team climate change but this just feels alarmist to me.

<comment><USER38> Yeah, what happened to being solution-oriented?

It's odd how on HN you're not supposed to be negative of anything technical even if it's flaming crap, but also at the same time you're also supposed be assuming certain doom when it comes to climate change. How about we try to solve the technical problem at hand?

<comment><USER39> I don't understand what you're trying to say. The paper just observes that outdoor and indoor CO2 concentrations are related, and that high CO2 impacts cognition. Therefore increasing CO2 in the atmosphere has an impact on indoor cognition. What is the problem with that? Why is it "flaming crap"?

<comment><USER38> > Why is it "flaming crap"?

You 100% misread my post. I did not claim the article was "flaming crap". Please re-read it, this time reading _every_ word.

<comment><USER39> I'm sorry, English is not my first language. I did in fact read every word in your post, but still don't understand it. Can you maybe rephrase it? I am pretty sure that this discussion here is not about climate change, but about the effects of higher CO2 concentrations in the atmosphere, on CO2 concentrations indoors.

</comment></comment></comment></comment></comment><comment><USER40> Correct me if I'm wrong but that graph they show compares averaged numbers over hundreds of years or even thousands of years, with year over year numbers once we started measuring this regularly the last +100 years.

This seems just straight out disingenuous to say the least unless I am missing something or is this kind of misrepresentation the new standard for research papers today?

<comment><USER41> Perhaps but that graph has little to do with their argument. Their argument is simple. If CO2 levels go up its going to make indoor CO2 levels worse. At some point this causes cognitive impairment.

<comment><USER40> It actually has a lot given that they are saying IF CO2 levels goes up to a certain level at the end of the century. They are using that graph as one of the reasons for why it's likely to go up.

This is their conclusion

"We conclude that indoor CO2 levels may indeed reach levels harmful to cognition by the end of this century, and the best way to prevent this hidden consequence of climate change is to reduce fossil fuel emissions. Finally, we offer recommendations for a broad, interdisciplinary approach to improving such understanding and prediction."

That's a big if especially since one of the reasons they believe it might increase to those levels is exactly this mix of averaged measurements and year over year.

Keep in mind the IPCC models range for nothing to worry about to the world is going under.

With regards to the CO2 levels having an impact on our cognitive abilities at the end of the century thats also a lot of speculation and a lot of assumptions.

This is not science this is speculation. Interesting but so filled with assumptions and guesses and speculation about what might happen in 2100.

And if that wasn't enough they just straight out claim the have the solution which is hindering fossil fuel.

This is just activism put into research format from what I can see.

<comment><USER39> You're confusing the effects of CO2 on climate (which you _might_ argue are not too bad if you enjoy playing russian roulette), with the concentration of CO2, which we can measure extremely accurately and for whose increase the mechanism is very well understood: We burn carbon, it ends up in the atmosphere as CO2, increasing the concentration there for a long time. We also understand the impact of CO2 on cognition very well, because we can simply run experiments.

<comment><USER40> I don't think I am.

The causality of the article is.

Outdoor CO2 might be rising dramatically > dramatically rising outdoor CO2 leads to dramatically rising indoor CO2 > too high a concentration of indoor CO2 might have an impact on our cognitive abilities.

That's not the worst part of that paper the worst part is that they then just throw in things like this:

"The best way to prevent indoor CO2 levels from reaching levels harmful to cognition is through reduced fossil fuel emissions."

What about better ventilation? Just like we do with a lot of other things today. But no instead they just go for the most extreme recommendation based on absolutely nothing.

Keep in mind we are talking at the end of the century.

I don't understand how anyone can read this and think this is quality research.

<comment><AUTHOR> > Outdoor CO2 might be rising dramatically > dramatically rising outdoor CO2 > leads to dramatically rising indoor CO2 > too high a concentration of indoor > CO2 might have an impact on our cognitive abilities.

Are you really claiming there is some uncertainty whether the burning of fossil fuels will actually raise CO2 levels of the atmosphere? I have thought that the discussion is whether the rising CO2 causes global warming or not.

And if we agree that burning the fossil fuels increases CO2 in atmosphere (forget the damn global warming, we are not talking about that) Do you claim that there is no reason to believe that the indoor CO2 will also rise? I hope you understand that kind of claim to be so weird that I would expect you to elaborate a bit more why you think that would not be the case.

Finally, whether the increased CO2 actually has any effect on cognitive capabilities, that is of course the main topic in the discussion here. I have no further comments on that one.

<comment><USER40> I am claiming that the research paper is not about cognitive capabilities (as that is taken for granted in the headline) but about fossil fuels effect on CO2 hence the title of the paper.

"Fossil Fuel Combustion Is Driving Indoor CO2 Toward Levels Harmful to Human Cognition"

If it was just about CO2 there would be no need to include fossil fuel combustion unless of course they know exactly how much CO2 is caused by fossil fuel combustion and how much is natural variation. There is no conclusion on that which is why you don't find an actual number of how much humans affect.

It's one thing to talk about CO2 levels and it's affect on human cognition, even that is not conclusive as is also obvious when you read the paper. But they go way way further to conclude that if we want to avoid that we should decrease fossil fuel use.

On what basis do they do that? No one knows how much is driven by humans and how much is natural

Do they have any evidence that; 1) that's without consequences, 2) it's the only way to deal with increasing CO2 if if it is harmful.

This is not research this is mixing together a bunch of different assumptions and using CO2 effect on cognitive abilities to talk about fossil fuel.

<comment><USER39> It doesn't seem hard to me to get at least a good ballpark estimate on the amount of CO2 we put into the atmosphere, say in the last 50 years. We know roughly how much coal and oil and gas we've burnt so far. Calculating how much the atmospheric concentration changed from that amount is easy enough. I'm sure someone did the math and would've published a paper about it if it turned out that human activities don't account for most of the CO2 concentration change. That would be kind of a big deal.

<comment><USER40> yet we dont have a ballpark number that says how much is human made and how much is natural. It doesent exist even in the IPCC report. You are welcome to prove me wrong.

<comment><USER42> I think this satisfies your desire for a "ballpark number"

[https://ourworldindata.org/contributed-most-global- co2](https://ourworldindata.org/contributed-most-global-co2)

Come on. You're just putting your head in the sand and pretending the sand is the real world.

<comment><USER40> That talks about countries contributing relative to each other NOT relative to natural. Please point to the number. It's not there because it doesn't exist because we don't know.

And let me put it like this. If you know the number send it to the nobel committee and you would be getting one.

<comment><USER43> It is pretty uncontroversial that CO2 increase in the atmosphere is almost all from human activity, and that a large part of that comes from burning fossil fuels. For example the US EPA website says:

[https://www.epa.gov/ghgemissions/sources-greenhouse-gas- emis...](https://www.epa.gov/ghgemissions/sources-greenhouse-gas-emissions)

 _Human activities are responsible for almost all of the increase in greenhouse gases in the atmosphere over the last 150 years. The largest source of greenhouse gas emissions from human activities in the United States is from burning fossil fuels for electricity, heat, and transportation._

and there is a link right on that paragraph to the IPCC report. Given the current EPA director, you might expect that to have been removed if there was any controversy about it.

And there are multiple lines of evidence to indicate fossil fuels are the major source, including carbon isotope ratios:

[http://www.realclimate.org/index.php/archives/2005/06/how- mu...](http://www.realclimate.org/index.php/archives/2005/06/how-much-of-the- recent-cosub2sub-increase-is-due-to-human-activities/)

Finally, if there was any doubt about it you could be sure the oil companies would be trumpeting it.

<comment><USER40> So in other words. You can't give me a number, not even a ballpark number. Why do you think that is? Why isn't it important to you if it's 10% or 51% or 99%?

<comment><USER43> The EPA quote clearly implies that for the US it is > 50%.

The realclimate article says: "the rise in atmospheric CO2 is entirely caused by fossil fuel burning and deforestation". So then the question is what is the ratio between those two sources. Quote here says ~10% of total is from tropical deforestation:

[https://www.climatecouncil.org.au/deforestation/](https://www.climatecouncil.org.au/deforestation/)

So ballpark figure is 90% from fossil fuels? The exact number doesn't matter for the basic argument of the paper though, as long as it is the vast majority of the source.

<comment><USER40> ask yourself why they cant be precise

<comment><USER39> Just by following references in the Wikipedia about the carbon cycle I found this book chapter [https://scihub.wikicn.top/https://doi.org/10.1016%2FS0070-45...](https://scihub.wikicn.top/https://doi.org/10.1016%2FS0070-4571%2808%2970338-8) that contains numbers (and error bars), alas from 1985. I'm confident that our knowledge about the carbon cycle has improved since then, given the amount of research climate change has gotten in the last thirty years.

<comment><USER40> Yes it's from 1985 and no it doesn't actually give a number either.

The fact that you can't find it and have to go to 1 article which isn't even giving you that number, should tell you that maybe you haven't gotten all the facts here.

This is exactly what started my journey from worrying about the climate to understanding it to realizing the base for all this is much much much fragile and much much much more politisized.

<comment><USER39> I spent about 20 minutes looking for that reference. I'm sure an actual climate scientist could provide you with a better reference.

Page 450 has a table. Historic CO2 concentration: 280ppm, "current" concentration 341ppm: a 21% increase. From that and the 60 * 10^15 moles C in the atmosphere in 1982 we can deduce around 50 * 10^15 moles C in 1800 in the atmosphere. That seems to be in the right ballpark of 14 * 10^15 moles of emissions from fossil fuels: not all of the carbon ends up in the atmosphere, e.g. some is dissolved in the ocean. Certainly the difference is not large enough (and doesn't have the right sign!) to support the theory that man made carbon dioxide didn't contribute the majority of the extra carbon in the atmosphere.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Automattic Aquires Tumblr - <AUTHOR> https://staff.tumblr.com/post/186963195515/hello-tumblr-today-tumblrs-owner-verizon <comment><USER2> 500 comment discussion when the deal was originally announced [https://news.ycombinator.com/item?id=20679387](https://news.ycombinator.com/item?id=20679387) User photomatt with the top comment is the Automattic CEO

</comment><comment><AUTHOR> announcement from verizon / automattic [https://www.verizon.com/about/news/verizon-media- announces-s...](https://www.verizon.com/about/news/verizon-media-announces- sale-tumblr-automattic)</comment>


Review my weekend hack: A simple TV guide - <AUTHOR> http://silentmac.com/tv/

<comment><USER2> I think this is pretty cool. I could imagine it being even more useful (at least to me) if it were one of those iPhone-esque websites. That way I can lazily grab my phone, tap my bookmark for your site, and then flick through the schedule.

Some development ideas: cookies to remember your zip code (a la goingtorain.com), way to mark or flag certain channels as "favorites" and a corresponding favorites view that shows just those channels, a cool but short name :)

<comment><USER3> That might help: "Iwebkit is the revolutionnairy kit used to create high quality iPhone and iPod touch websites in a few minutes and is based on an LGPL license." <http://iwebkit.net/>

</comment></comment><comment><USER4> Very nice. It would be nice if it gives you the scheduled based on the time of the zip code given.

</comment><comment><USER5> How does it work ?</comment>


I think Apple deleted a HTML page and messed up WiFi - <AUTHOR>

From what I'm seeing, I think Apple accidentally deleted the page that iOS uses to check network connectivity.
It's returning 404 right now: http://www.apple.com/library/test/success.html
When iOS can't connect to this page, it puts up a log on screen that only goes away after the page can be reached or the user presses cancel. Pressing cancel disconnects the user from the network.
As it stands, I and a couple of friends can't use WiFi on some of our iOS devices.
(The sporadic nature of this makes me wonder if these devices are supposed to be checking a different location and aren't for some reason.)
More info on success.html: http://erratasec.blogspot.com/2010/09/apples-secret-wispr-request.html <comment><AUTHOR> It's working again: <http://www.apple.com/library/test/success.html>

I would have thought they'd have a fallback on a different network.

</comment><comment><AUTHOR> More here: <http://news.ycombinator.com/item?id=4546039></comment>


Threader – A simple alternative to gnu-parallel written in Golang - <AUTHOR> https://github.com/voodooEntity/threader <comment><AUTHOR> First release of threader cli tool. The tool will recieve a more complex Makefile in the future. Future releases will also contain builds for different Archs. I hope you enjoy it .)</comment>


Modern Microprocessors – A 90-Minute Guide (2001-2016) - <AUTHOR> http://www.lighterra.com/papers/modernmicroprocessors/ <comment><USER2> This is no doubt obvious to hardware folks, but one enlightening moment is when I came to understand register renaming.

Previously I had the (wrong) idea that rdi, rsi, etc corresponded to physical bits. Register renaming involved some exotic notion where these registers might be saved and restored.

Now I understand that rdi, rsi, etc. are nothing but compressed node identifiers in an interference graph. Ideally we'd have infinite registers: each instruction would read from previous registers and output to a new register. And so we would never reuse any register, and there'd be no data hazards.

Alas we have finite bits in our ISA, so we must re-use registers. Register renaming is the technique of reconstructing an approximate infinite-register interference graph from its compressed form, and then re-mapping that onto a finite (but larger) set of physical registers.

Mostly "register renaming" is a bad name. "Dynamic physical register allocation" is better.

<comment> cgrand-net "Now I understand that rdi, rsi, etc. are nothing but compressed node identifiers in an interference graph. Ideally we'd have infinite registers: each instruction would read from previous registers and output to a new register. And so we would never reuse any register, and there'd be no data hazards"

I'm under the impression that we don't see the causality flowing in the same direction.

To me we first had a limited set of registers (imposed by the ISA), then to get better perf through out of order execution, cpus had to infer a deps graph and use register renaming.

Ironically all this silicon is spent to recover information that was known to the compiler (eg through SSA) and lost during codegen (register allocation).

<comment><USER3> The space in an instruction is very limited. (If the representation of an instruction needs more bits you need more bandwidth, more cache space etc.) So it can be beneficial to only address 8 registers but then have a detection for spilling of spilling to RAM etc. (It can even be beneficial to specify only 2 registers (a = a + b instead of a = b + c) and replace a copy of registers with a rename.

<comment><USER4> Exactly. In principle even memory can be renamed, although I'm not sure any current CPU actually does it (there are rumors). It would be great if the actual SSA graph could be directly passed from the compiler to the CPU, but what's saved by getting rid of renaming would probably be used to handle the much harder decoding. It would probably have implications for context switching overhead.

</comment></comment></comment></comment><comment><USER5> Previously discussed:

[https://news.ycombinator.com/item?id=11116211](https://news.ycombinator.com/item?id=11116211) (2016)

[https://news.ycombinator.com/item?id=7174513](https://news.ycombinator.com/item?id=7174513) (2014)

[https://news.ycombinator.com/item?id=2428403](https://news.ycombinator.com/item?id=2428403) (2011)

</comment><comment><USER6> There are some missing I/O things involving DMA.

In the old days, DMA from (say) a PCI device would go directly to and from DRAM. This incurs a high latency if the CPU needs to access this data.

Network processors found a simple solution: DMA goes to the cache, not the DRAM. This reduces the I/O latency to the processor and simplifies I/O coherency. I know Cavium's NPs rely on this.

Intel picked this up for server and desktop processors once both the memory controller and PCIe were integrated on the same die. They called it DDIO:

[https://www.intel.com/content/www/us/en/io/data-direct-i- o-t...](https://www.intel.com/content/www/us/en/io/data-direct-i-o- technology.html)

You can support 100 G Ethernet with Intel Xeon processors these days due to this.

Another story is how DMA in the x86 world is cache coherent (no need to use uncached memory or flush before starting an I/O operation- which I have to do it in ARM). This is awesome from a device driver writer's point of view and is the result of having to support old operating systems from the pre-cache days.

I think the future will involve better control of how cache is shared. For example, if you know a program is going to access a lot of memory, but does not need to keep it around for a long time, it will as a side effect, eject useful data from the cache. Better would be to declare that a thread should only be able to use some fraction of the cache so that it does not interfere with other threads so much.

<comment><USER7> > Another story is how DMA in the x86 world is cache coherent (no need to use > uncached memory or flush before starting an I/O operation- which I have to > do it in ARM). This is awesome from a device driver writer's point of view > and is the result of having to support old operating systems from the pre- > cache days.

Nitpick: You mean "Sequentially consistent".

ARM is cache coherent, but NOT sequentially consistent. x86 is almost sequentially consistent (only a few obscure instructions here and there violate it).

<comment><USER4> x86 is not sequentially consistent. Its consistency model is Total Store Order (same as most SPARCs). The store buffer is architecturally visible and newer loads can be reordered above older stores. More formally, all CPUs agree on the order of remote stores but might see their own stores in a different order.

For example Dekker algorithm fails on x86 without explicit fences or explicitly sequentially consistent stores (all atomic RMW operations are sequentially consistent on x86).

edit: I think the OP really meant cache coherency; while all ARM CPUs in a system are in the same coherency domain, the IO space might be outside of it.

<comment><USER7> > edit: I think the OP really meant cache coherency; while all ARM CPUs in a > system are in the same coherency domain, the IO space might be outside of > it.

If that's the case, then I stand corrected. My understanding was that ARM was fully cache coherent, but it makes sense that I/O would be a different case all together.

<comment><USER4> to be clear: I do not know whether IO on ARM is cache coherent or not, I'm just pointing out that just because all CPUs are cache coherent it doesn't imply that peripherals on external buses must be as well.

</comment></comment></comment></comment></comment><comment><USER8> So, in @rygorous's excellent Twitch streams about CPU architecture (first one here: [https://www.youtube.com/watch?v=oDrorJar0kM](https://www.youtube.com/watch?v=oDrorJar0kM)), he said that it was basically a myth that x86 architectures dynamically decoded into internal RISC instructions. I am thus a little skeptical of the article in general, since I don't know enough myself to verify each thing.

<comment><USER9> x86 really does decode CISC into RISC-like instructions. They're called micro- ops. Some of the instruction cache stores these translated instructions. People research the details of this. See [https://www.agner.org/optimize/blog/read.php?i=142&v=t](https://www.agner.org/optimize/blog/read.php?i=142&v=t)

The article looked about right to me.

I didn't watch the (3 hour!) video you linked to. Can you give the time offset where the myth you refer to is explained?

<comment><USER4> Intel uops aren't really RISCy at all, at least since after P4: if you look at Agner's tables, you'll see that even complex load-op operations still map to 1 (fused) micro-op in the fused domain and they are only broken down when dispatched to execution units (instruction breakdown was performed even in early CPUs, before the CISC/RISC nomenclature was a thing). IIRC decoded uops are not even fixed size in the post-decode cache: large constants take an additional slot.

Separate load and op instructions and fixed size instructions are pretty much the only things left differentiating RISC and CISC architectures (there is nothing reduced about modern RISCs), so I do not think the claim that x86 CPUs are RISC inside does hold.

I think that Agner, which knows what he is talking about, it is just being loose with terminology.

In the grand scheme of thing it just doesn't matter, it is simply a name. I just dislike it when the x86-is-a-RISC meme get repeated, as if being a RISC somehow is a virtue in itself.

<comment><USER9> I bow in deference to your superior knowledge.

Back in the late 80s, reducing your instruction set was a good idea because it meant you could spend the transistor budget on other things, like pipelines and caches. RISC came to be seen as a virtue in itself.

When x86 was the 80286 was CISC and MIPS and ARM was RISC, then x86 was just bad and wrong. Nowadays x86 is fast and good.

As you kinda said, almost everything about the 1980s definition of RISC has ceased to be true. The only thing left of Patterson and Hennessy's RISC ideas is that they encouraged proper analysis as of how real programs use the instruction set (and cache etc), rather than just adding a bunch more instructions to please some assembly writing customers and aiming for a better Dhrystone score. If we define RISC to mean "doing proper analysis", then x86-is-a-RISC-machine is true :-)

<comment><USER10> > As you kinda said, almost everything about the 1980s definition of RISC has > ceased to be true.

A central difference that still exists that RISC processors are typically load/store architectures. That means that before an operand that exists in memory can be used, it has to be transfered to a register.

This means that an instruction like

add eax, [ecx]

does not work, say, under ARM. Under ARM, you have to use

      ldr r1, [r1]
      add r0, r0, r1

Intel found out that using memory addresses both as source and target turned out to be a bad idea

      add [ecx], eax

(since it needs 3 phases: load value from memory, do instruction, store back). No such instructions thus exist in MMX, SSE..., AVX..., ... On the other hand, Intel still believes that using a memory operand as source only is quite a good idea on x86 (look at the encoding of SSE..., AVX..., AVX-512). Nevertheless: having the capability to do such a complicated instruction atomically is very useful for multithreading; consider for example

      lock add [ecx], eax

which adds eax to the memory address in ecx _atomically_.

Also, a very typical distinction (that Intel only dropped with AVX on) is that CISC CPUs typically use 2 operands per instruction (of which one may be memory) and RISC CPUs have 3-operand instructions. So

      add r0, r1, r2

works on ARM, but under x86, only instructions that were introduced from AVX on (i.e. use a VEX (VEX2 or VEX3) or EVEX prefix (AVX-512); I have to look up whether something like that is also possible with a XOP prefix) have this capability.

Also very often, CISC instruction sets offer complicated addressing modes, such as in x86

mov edx, [ecx+4*eax]

It is not completely clear whether this is worth the complexity or not. On one hand, such instructions are hard to use for a compiler (which is the central reason why they were abolished in RISC architectures). On the other hand, skilled programmers can use them to write quite elegant and fast code.

TLDR: A central difference that still exists is that

\- RISC architectures are load-store architectures

\- on CISC architectures 2 operands (1 can be memory address) are typically used and "feel more natural"

\- on RISC architectures, instructions typically have 3 operands.

\- CISC architectures often support much more different and complicated addressing modes than CISC.

<comment><USER11> The main point of RISC architectures is that they are trivially pipelineable to the extent that making non-pipelined implementation does not make much sense. All the architecture visible differences from CISC are motivated by that. Load-store gets you well defined subset of instructions that access memory and have to be handled specially, 3-operand arithmetics and zero register simplifies hazard detection and result forwarding logic and so on.

<comment><USER10> > The main point of RISC architectures is that they are trivially pipelineable

This was the idea behind the original MIPS (the textbook example of a RISC processor - both literally and metaphorically). Unluckily this lead to the problem that implementation details of the internal implementation leaked into the instruction set. Just google for 'MIPS "delay slot"'. When in later implementations of MIPS, this delay slot was not necessary anymore, you still had to pay attention to this obsolete detail when writing assembly code.

The lesson that was learned is that implementation details should not leak into the instruction set.

Next: About what kind of pipeline are we even talking about? It is often very convenient to offer multiple kinds of pipelines dependent on the intended usage of the processor. For example for low-power or realtime applications, an in-order pipeline is better suited. On the other hand, for high-performance applications, an out-of-order pipeline is better suited. For example ARM offers multiple different IP cores for the same instruction set with different pipelines.

Finally, pay attention to the fact that more regular and more easy to decode instruction set of typical RISC CPUs (ARM is explicitly not a typical one in this sense, in particular considering T32) often leads to bigger code than, say, x86. This turned into a problem when CPUs became much faster than the memory (indeed some people say, this was an important reason why people today think much more critical about RISC). This is also the reason why RISC-V additionally provides the optional ""C" Standard Extension for Compressed Instructions" (RVC). Take a look at

> [https://riscv.org/specifications/](https://riscv.org/specifications/)

The authors claim in the beginning of chapter 12 of "User-Level ISA Specification": "Typically, 50%–60% of the RISC-V instructions in a program can be replaced with RVC instructions, resulting in a 25%–30% code-size reduction.".

> 3-operand arithmetics and zero register simplifies hazard detection

Despite the 3-operand format of ARM, at least the A32 and T32 instruction sets offer 2 additional parts for many instructions:

1\. conditional execution: for example ADDNE is only executed when the Z(ero) flag is not set. There are 15 variants for conditional execution, including "always").

2\. "S" suffix for many instruction: causes the instruction to update the flags. For example SUBS causes the processor to update the flags while SUB does not.

The conditional execution was to my knowledge dropped in ARM64 because branch predictors got good enough.

So: ARM has other things in the instruction set to avoid pipeline stalling. 3-operand instructions are not among of them. The reason for 3-operand instructions rather is that this instruction format allows the compiler to generate efficient code much more easily.

<comment><USER11> The stall detection logic remark was meant in the context of traditional MIPS- style in-order single-issue pipeline executing regularly encoded instruction set where the mentioned features lead to both smaller implementation of the detection logic itself (which for the traditional MIPS is the bulk of the control logic) and simpler routing of the signals involved.

On the other hand I completely agree that MIPS-style delay slots are simply bad idea. But for me ARM's conditional execution and singular flags register is similarly bad idea that stems from essentially same underlying thought.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> I'd say a good thing to add will be that the lion share of progress in last 5 years was done around cache architectures.

All what is described in the article like superscalarity and ooe has been squeezed to the practical maximum at around early core 2 duo era, with all later advances mostly coming without qualitative architectural improvements.

In that regard, Apple's recent chips got quite far. They got to near desktop level performance without super complex predictors, on chip ops reordering, or gigantic pipelines.

Yes, their latest chip has quite a sizeable pipeline, and total on chip cache comparable to low end server CPUs, but their distinction is that they managed to improve cache usage efficiency immensely. A big cache would't do much to performance if you have to flush it frequently. In fact, the average cache flush frequency is what determines where diminishing returns start in regards to cache size.

<comment><USER4> Apple CPUs are quite sophisticated wide and deep OoO braniacs designs with state of the art branch predictors.

There is nothing simple about them. The only reason they are not desktop level performance is because the architecture has been optimized for a lower frequency target for power consumption.

A desktop optimized design would probably be slightly narrower (so that decoding is feasible with a smaller time budget) and and possibly deeper to accommodate the higher memory latency. Having said that, the last generation is not very far from reasonable desktop frequencies and might work as-is.

<comment><USER12> Compare die shots of the two. Even after you correct for the density provided by 7nm process, A12 predictor is few times smaller than that of recent intel i cores

<comment><USER4> 5 minutes of Googling didn't return any image of either skylake or 12 die shots with labelled predictors. Do you have any pointers?

Also I know nothing about the details, but I expect that most of the predictor consists of CAM memory used to store the historical information. I doubt that without internal knoledge, is it possible to distinguish it reliably from other internal memories.

<comment><USER11> CAM is expensive and requires some kind of replacement scheduling logic. I believe that branch predictors are still implemented as straight one-way associative RAM, often even without any kind of tagging and only true CAM in the CPU core is TLB.

</comment></comment></comment></comment></comment><comment><USER13> IBM was doing essentially all that stuff before 1990 or so except possibly for multiple threads per processor core. So, there was pipelining, branch prediction, speculative execution, vector instructions, etc.

Then I was in an AI group at the Watson Lab, and two guys down the hall had some special hardware attached to the processors and were collecting and analyzing performance data based on those design features.

<comment><USER14> IBM was doing all sorts of amazing stuff before the 1990's. They had VMs, containers, etc.

Personally, I'd say that I don't care. They didn't want to make that technology available to the masses, we barely even got the PC architecture because they made several strategic blunders.

If the tech exists but it's not reachable by common folks, in my eyes it's as bad if not worse that it not existing at all.

<comment><USER15> > they didn't want to make that technology available to the masses

Do you have a source for this? It makes far more sense that it simply was not feasible to make a System/360 available to the masses than it was intentionally kept back. I would assume IBM would have been thrilled to sell one to everyone on earth, but it was expensive and physically large.

> if the tech exists but it's not reachable by common folks, in my eyes it's > as bad if not worse than it not existing at all

I disagree strongly. If developing technology that isn't available to the public is worse than not developing technology at all, there goes research. No new technology makes it to the public in its original form.

<comment><USER14> I should have rephrased that: if its creators prefer to keep it under lock and key for decades (or forever).

Regarding the tech: ok for 360 in the 60's, 70's, 80's even. But they couldn't do it even after 30 years? We had to wait for VMWare and Docker...

<comment><USER15> You keep attributing some kind of unfounded malice to IBM.

VMWare released their first hypervisor for x86 in 1999. That's 30 years after the first IBM virtual machines. If you are asking: "why didn't IBM release a hypervisor for x86?" I would respond "why would you expect them to make a virtual machine on a platform that isn't theirs?"

This 30 years is also the same timeline for Intel to make their microprocessors OoO and superscalar. That didn't have anything to do with IBM keeping their technology locked up.

</comment></comment></comment></comment></comment><comment><USER16> Ah, bit rot. Both of the links to "interesting articles" at the bottom of the page are gone ("Designing an Alpha Microprocessor" 404s and the video appears to be gone from "Things CPU Architects Need To Think About"). Anyone know where these might have moved to?

(Anyway, great post!)

<comment><USER17> So, trying to hunt these down.

Designing an Alpha Microprocessor first appeared in a magazine called 'Computer', Volume 32, Issue 7, July 1999. It was on pages 27-34, and written by Matt Reilly.

It has a a few citations [0]. (And though I owned a lot of them, I don't think I read this particular Issue.)

Members can buy it from the IEEE [0]. That appears to be the only recourse.

\---

Thing CPU Architects Need To Think About has a cover page here. [1] Unfortunately, the video isn't attached. But, it was part of the class EE380, which has a YouTube playlist [2], unfortunately though a lot of the talks are good, they don't include our video. Even worse, I found a fairly recent comment from another HNer [3], which suggests all online copies are gone. By persisting, I found the original asx via the Wayback Machine [4], which is utterly useless without the server.

Alas, I cannot find any working copy.

[0] [https://ieeexplore.ieee.org/document/774915](https://ieeexplore.ieee.org/document/774915)

[1] [https://web.stanford.edu/class/ee380/Abstracts/040218.html](https://web.stanford.edu/class/ee380/Abstracts/040218.html)

[2] [https://www.youtube.com/playlist?list=PLoROMvodv4rMWw6rRoeSp...](https://www.youtube.com/playlist?list=PLoROMvodv4rMWw6rRoeSpkiseTHzWj6vu)

[3] [https://news.ycombinator.com/item?id=15900610](https://news.ycombinator.com/item?id=15900610)

[4] [https://web.archive.org/web/20130325010756/http://stanford-o...](https://web.archive.org/web/20130325010756/http://stanford- online.stanford.edu/courses/ee380/040218-ee380-100.asx)

<comment><USER10> > Designing an Alpha Microprocessor first appeared in a magazine called > 'Computer', Volume 32, Issue 7, July 1999. It was on pages 27-34, and > written by Matt Reilly.

> It has a a few citations [0]. (And though I owned a lot of them, I don't > think I read this particular Issue.)

> Members can buy it from the IEEE [0]. That appears to be the only recourse.

That appears to be the only _legal_ recourse. If you do not care about legality, there is sci-hub.

EDIT: Under [https://news.ycombinator.com/item?id=18246996](https://news.ycombinator.com/item?id=18246996) you can find a legally less doubtful way to obtain this text.

<comment><USER17> > That appears to be the only legal recourse. If you do not care about > legality, there is sci-hub.

Actually I didn't manage to find it there, which was disappointing. I'm happy someone managed to get Google Scholar to spit out a link though.

<comment><USER10> > > If you do not care about legality, there is sci-hub.

> Actually I didn't manage to find it there, which was disappointing.

Just copy link [0] of [https://news.ycombinator.com/item?id=18246834](https://news.ycombinator.com/item?id=18246834) into sci-hub.

</comment></comment></comment></comment></comment><comment><USER18> I could use an overview that includes an update to the Computer Architecture class I took in the early 90's. This is good - for "general purpose" microprocessors.

At that time, nothing at all was said about GPUs - they basically didn't count at all. I don't really recall anything about DSPs either. And FPGAs were considered neat and exotic, but a little useless, particularly compared to their cost and more of a topic for EE majors.

Now I've seen a great update (posted to HN) about how FPGAs are basically.. no longer FPGAs and include discrete microprocessors, GPUs and DSPs.. often many (low powered) of each!

This statement: "The programmable shaders in graphics processors (GPUs) are sometimes VLIW designs, as are many digital signal processors (DSPs),"

is about as far as it goes. Can someone point me to a 90-minute guide that expands on that?

* What about the GPUs and DSPs that are not VLIW designs? * What is the architecture of some of the more common GPUs and DSPs in general use today? (as they cover common Intel, AMD and ARM designs in this article). eg: Differences between current AMD and NVIDIA designs? I don't even know what "common 2018 DSPs" might be! * How does anything change in FPGAs now, and where is that heading? (the FPGAs-aren't-FPGAs article was a few years old)

</comment><comment><USER19> A few questions I've had for a while:

First, if a reasonably high performance processor is going to use register renaming anyway, why not have split register files be an implementation detail? Tiny embedded processors can do without register renaming and have a single register file. Higher performance implementations can use split register files dedicated to functional units. Very few pieces of code both need large numbers of integers and large numbers of floating point numbers.

Second, on architectures designed with 4-operand fused multiply-add (FMA4) from the start, and a zero-register (like the Alpha's r31, SPARC's g0, MPIPS's r0, etc.), why not make the zero-register instead an identity-element-register that acts as a zero when adding/substracting and a one when multiplying/dividing? An architecture could optimize an FMA to a simple add, a simple multiply, or simply a move (depending on identity-element-register usage) in the decode stage, or a minimal area FPGA implementation could just run the full FMA. This avoids using up valuable opcodes for these 3 operations that can just be viewed as special cases of FMA. Move: rA = 1.0 * rC + 0.0. Add: rA = 1.0 * rC + rD. Multiply: rA = rB * rC + 0.0. FMA: rA = rB * rC + rD.

<comment><USER20> In a three-address machine, separating the integer and floating point registers basically saves you three bits per instruction word compared to a unified register file of the same aggregate size. Also, on a 32-bit machine, you save a few transistors by making the integer rename registers 32 bits instead of all 64 bits to accommodate a double float. (And if you have vectors, it really makes no sense to throw away 128 or 256 or 512 bits to store a 32-bit or 64-bit integer).

<comment><USER19> As I mentioned, though, there aren't many functions that use both the full compliment of integer and fp registers, so I think the aggregate register file size is rarely a factor. Aggregate register file size is also a detriment to fast context switches.

As long as you defined consistent semantics for switching among integer, floating point, and vector use of the same logical register, there's nothing stopping one from using a 32-bit-wide integer register file, a 64-bit-wide fp register file, and a 512-bit-wide vector register file. From an ISA level, you could (for instance) define all operations as if they worked on vector registers. Your imul could always compute a 32-bit result and sign-extend it to 64 bits as the first vector element, and zero out all but the first element of the vector. You wouldn't actually store it that way, since the top 33 bits would always be identical for the results of integer operations (and subsequent vector elements would always be zero). So, from the outside, it would look like all operations worked on very wide registers, just that the vast majority of operations did very trivial things with most of the output bits in those wide registers. The sign extension and zeroing operations would actually only happen when moving values between the internal register files.

Presumably, you'd use the same tricks used in other processors for actually tracking the amount of vector state that needs to be saved on context switches. You might re-use some of the same techniques for economizing the amount of vector state saved across function boundaries. Or, perhaps you'd define an ABI such that system calls preserve vector state, but all vector state beyond the first double is caller-saved state across function boundaries.

</comment></comment></comment><comment><USER15> I guess this is a good opportunity...

It irks me a bit that scoreboarding is not considered "out of order execution" in modern classification. If I have a long latency memory read followed by an independent short latency instruction, the short second instruction will execute before the first has finished executing in a processor with dynamic scheduling via scoreboarding, but this doesn't "count" as OoO. I mostly get it, it just bothers me.

<comment><USER21> score-boarding to me represents an in-between, because:

1\. they stall on the first RAW conflict. 2\. they initiate execution in- order, although they may complete execution out-of-order.

I wish there was better nomenclature so people don't get confused, because clearly it doesn't fit into the dichotomy of in-order vs. out-of-order execution.

</comment></comment><comment><USER22> A next chapter is in need of being written, as the Mill is a radical departure (non-OOO), and a wildly more efficient and secure architecture, first published since 2014 (see [https://millcomputing.com/](https://millcomputing.com/) videos).

<comment><USER23> Quite possibly. EDGE is another contender.

[https://en.wikipedia.org/wiki/Explicit_data_graph_execution](https://en.wikipedia.org/wiki/Explicit_data_graph_execution)

</comment></comment><comment><USER24> Modern Processor Design by Shen is a great book if you want to read more on this stuff.

</comment><comment><USER25> Great summary of (recent) modern computer architecture. Fun exercise: Try to spot how Spektre style attacks surface as a result.

</comment><comment><USER26> > While the original Pentium, a superscalar x86, was an amazing piece of > engineering, it was clear the big problem was the complex and messy x86 > instruction set. Complex addressing modes and a minimal number of registers > meant few instructions could be executed in parallel due to potential > dependencies. For the x86 camp to compete with the RISC architectures, they > needed to find a way to "get around" the x86 instruction set.

I've always struggled to understand why they didn't simply retire the x86 instruction set by the early 90s.

The best reason I've been given is an existing body of x86 software, but that's obviously nonsense as demonstrated by the Transmeta Crusoe and Apples's move from 68k to PPC to x86.

</comment><comment><USER27> very good write-up - thanks.</comment>


"Suck it up, Buttercup" - <AUTHOR> http://www.csmonitor.com/USA/2016/1116/Iowa-bill-named-Suck-it-up-Buttercup-seeks-to-stop-student-coddling <comment><USER2> People seeking counseling because they are worried for their rights after a Trump's election are no different than those people who stocked up on guns and ammo after Obama's election. Obama made his stance on issues clear in 2008, just has Trump has in 2016, and the people most affected by these stances are justified in their reactions.

This is really just an attempt to infantilize people who have legitimate concerns regarding their future and this legislative bullying seems like proof that a lot of peoples' concerns regarding the nation's legislative direction is merited.

I was one of those people calling for us to "wait and see" what happens, but it's becoming more clear by the day that the people in power with a negative opinion of people who are not white, American-born, christians have been galvanized and will attempt to squelch their rights and opinions as much as possible.

</comment><comment><USER3> Perhaps they should learn the experience of many working class workers who have lost their jobs. Their college should have them speak with the Carrier air conditioner workers in Indiana who had their factory moved to Mexico.

</comment><comment><USER4> > "In life there's winners and losers and when your car breaks down, your kids > get sick or you have to take a second job to pay your mortgage, you don't > get to go to a cry zone, you don't get to pet a pony. You have to deal with > it."

Meh. People end up learning that lesson at some point. This bill seems stupid and targeted at suppressing anti-trump people.

I do think the people who need to go cry in a room and have grief counseling over the president elect need to get some perspective. If you are that upset then stand up and do something about it. Go join those protesters, get involved politically. Spend the next 4 years fighting against the BS Trump is peddling. Life isn't fair, but you can't just go hide from it.</comment>


Ask HN: Does anyone own a snowmobile or use them often? - <AUTHOR>

My start-up just launched snowmobile trails, as an add-on to our GPS app.
I am looking for people to test this feature, now that it is live on the App Store.
If you are interested, I will provide you with a promo code for the app ($6.99) as well as free downloads of the snowmobile trails ($24.99/region).
I would just want your feedback on the trail feature. Email in my profile. <comment><USER2> I sold my sleds last year, but we've got about 6000 miles of trails out here (NH). If you still need testers around the December/January time frame, email me and I'll pass the info on to some local clubs. There won't be ridable snow before then, so it would be hard for anyone to really test it now.</comment>


Ask HN: What are your favourite free icon web fonts? - <AUTHOR>

Looking for a decent & free icon web font for an open source project. What icon fonts do you <3? <comment><USER2> We've used Bootstrap's free icons by Glyphicons they're pretty nice, and we considered buying a licence for the full set but the redistribution terms weren't clear enough (i.e. do people we sell our software to also need to buy a licence from Glyphicons?).

Font Awesome are alright, but the quality felt like a step backwards from Glyphicons.

We wound up going with Google's Material Design icon set[0][1]. Released under Creative Commons, and can either be self hosted or can utilise Google's CDN. Has a nice selection, and can be rendered via SVG, PNG, or an i tag e.g. alarm. Only requires a single reference to the font file to start utilising.

The only downside with Google's Material Design icon set is that it has compatibility issues with Internet Explorer 9 and older. For older IE support, instead of writing pretty HTML like:

face

You write nonsense like this:



Eww. But since our project breaks in IE9 anyway, we could utilise their font library AND use the prettier style of HTML. So no big downside to us.

The fonts are easy to stylise and Google provides a few recommended CSS styles (e.g. md-dark, md-18, md-light, etc) on the developer page.

[0] [https://google.github.io/material-design- icons/](https://google.github.io/material-design-icons/)

[1] [https://www.google.com/design/icons/](https://www.google.com/design/icons/)

</comment><comment><USER3> Use something like [https://icomoon.io](https://icomoon.io) and just mix-n- match between sets. Personally I've found that no one set covers everything I need (though I generally default back to the Material Design font), and there are enough sets with a similar aesthetic that you can still achieve a consistent look.

</comment><comment><USER4> [http://fortawesome.github.io/Font- Awesome/](http://fortawesome.github.io/Font-Awesome/)

If you use css frameworks like Foundation or Bootstrap they come with their own set of font icons as well.</comment>


C replaced Java at first place in Tiobe index - <AUTHOR> https://www.tiobe.com/tiobe-index/ <comment><USER2> Can anything really be gleaned from the fluctuation of a language on TIOBE? Two years ago, Apache Groovy wasn't even in the top 50. Last December, it ascended to #11. Now it's at #31. Whatever the story was, it's too opaque to interpret.

<comment><USER3> The tiobe headline itself is about rust.

Java will decline because (1) so many hate on it, (2) there's always the new shiny, (3) Microsoft will never give up. No single language will replace it, though. At least not for a long time.</comment></comment>


Ask HN: Where did your most passionate users come from? - <AUTHOR>

So my project is coming along nicely, I'm burning through the big ol' to do list of things I feel really need to be in a first release, accepting some beta users (not many are inquiring).  So I'm wondering how did you find your most passionate users, or how did they find you?  I've heard that they'll often be some of your first (early adapters and all)? <comment><USER2> Think about who would use/buy your program. Then find the sites they read. Then reach out to those sites/bloggers and give them a sneak peak, free license, beta invites for their users, etc.

It might help to be an active member of some of those sites first before soliciting feedback.

</comment><comment><USER2> Also, create a screencast of using your app then upload it to youtube and tag it with appropriate keywords. You'll be surprised at the number of other videos that will end up auto-linking to it on their youtube sidebar and at the end of their videos.

<comment><AUTHOR> Wow, that's a great idea! Thanks!

</comment></comment><comment><USER3> They won't search you out. You need to go out and grab their attention. What is your project?

<comment><AUTHOR> Yeah, that's what I've come to realize. So how did everyone find their most passionate users? Were they people that you already knew? Friends and family? Made up? I remember the reddit guys saying once in an interview that they had a bunch of fake accounts that they used to post stories to reddit with all day long to keep the activity going and give the appearance of a lot of users.

My project is <http://AppRabbit.com>, a database web app builder.

<comment><USER3> I did not know that about reddit! I had wondered how sites which depend on so much user participation get started. Now I know they cheat ;)

Anyway maybe you need to define more clearly what you want? What is a 'passionate' user? Your app doesn't appear to be social, so you don't need to create the illusion of popularity on-site, like reddit. Do you want evangelists, people going out and blogging about how great your app is?

I don't really know how to bring that about. Just make the best damn thing you can and then politely inform bloggers you read about it. If you look at the balsamiq (a mockup program) website there is a post on how the guy approached bloggers at the start.

I quite like the Steve Martin approach: "be so good they can't ignore you". Naively, I kind of think that if you make something great, that really solves a problem for people, they will want to share that with others.

So... I guess the answer is for you to very clearly define who you are helping, what problem you are helping them solve, and then approach them. By way of friendly criticism, your site could probably do with a better front page, in terms of a very quick explanation of what it is and why a reader might care. Some good examples:

<http://rethinkdb.com/> <http://basecamphq.com/>

One question for you to think about (in general, but especially for the front page) would be who would need to implement a database but would not want or be able to do it themselves.

</comment></comment></comment><comment><USER4> I've had success with domain-specific forums. If your product really is something that people can get passionate about and you present your website in a non-spammy way, there's a chance that you'll get initial traffic and then eventually the members will spread the word about your site to other forums they're members of.

For your project, I would suggest having a no-signup live demo that they can use right away. No one will get passionate about a landing page. That might be useful for gaging interest and collecting emails, but if you can't solve someone's problem on their first visit (or at least make it clear how you could) then it's going to be hard to turn them into a passionate user.</comment>


Shell boss says mass reforestation needed to limit temperature rises to 1.5C - <AUTHOR> https://www.theguardian.com/business/2018/oct/09/shell-ben-van-beurden-mass-reforestation-un-climate-change-target <comment><USER2> Flagged-to-death comment notwithstanding, I do wonder of the motivation. He is certainly stating the obvious in that he's just parroting what the recent report is saying, minus the "fossil fuels have to go way" part. On the other hand, what he said doesn't mean anything at all, because he didn't follow up with, "therefore, starting today, we are instituting a new, multi-billion dollar reforestation program..."

So I guess I'm kinda thinking I ought to go vouch that dead comment.

</comment><comment><USER3> Pony up the bucks, Shell and their ilk externalized and dumped environmental costs on society and the planet for a century.

They should be paying for whatever active geoengineering can be done. All executives current and former should have 75% of their net worth taxed.

A 200% gasoline tax should be imposed. Think that is too much? Do napkin calculations on the cost to remove the CO2 that results from burning a gallon of gasoline.

Sprawl property taxes should be immediately instituted.

Massive government research should be initiated in wind, solar, battery, thorium reactors, lab-grown meat, vertical farming, bio/algal fuels, and space mining.

I won't hold my breath.

</comment><comment><USER4> Thank you Captain Obvious... maybe since so much of oil & gas companies' income is from a product that is the direct and chief contributor to global climate change, and (in the US at least) so much political inertia has been created in climate denialism by "research" they've "sponsored" over the last 40 years, maybe these companies ought to be leading the charge on exactly that reforestation.

</comment><comment><USER5> How feasible is something like this? I think we'd have a hard time telling a country to tear down farms and other developed land to let it return to rain forest.

<comment><USER6> I've been curious for a while why we don't have more plants on buildings. Roof space seems to be wasted a lot of the time, why not put a park there? Is it considered a hazard?

<comment><USER7> unless they were designed for the load, long time water retention etc- it can be an expensive rennovation/refit and brings additional maintenance costs but it is still a good idea.

There are increasingly Tax breaks for necessary investment available in cities in the US doing this (1)and certainly many other countries/regions e.g (2) have various on going policy initiatives for similar developments.

all in all - its highly dependent on the building and local planning regulations - but more and more places are open to supporting it and hopefully actual adoption and implementation accelerates soon.

(1) [http://myplantconnection.com/green-roofs- legislation.php](http://myplantconnection.com/green-roofs-legislation.php)

(2) [http://ec.europa.eu/environment/nature/ecosystems/background...](http://ec.europa.eu/environment/nature/ecosystems/background.htm)</comment></comment></comment>


Froth: Objective-C Web Application Framework - <AUTHOR> http://code.google.com/p/frothkit/

<comment><USER2> Objective C, sure, but cross platform, thanks to Cocotron, an open source implementation of the Cocoa API. <http://www.cocotron.org/>

It's the first Cocotron-based project I see featured on HN, although it's not the first success story that they could brag about...

See also: the account of the porting of the File Magnet Uploader, then Mac- only, to Windows, using the same library. <http://macdaddyworld.com/2008/10/27/adventures-in-cocotron/>

<comment><USER3> The deployment may be cross platform, but to develop with Cocotron you need a Mac. I didn't see the reasoning behind them choosing Cocotron explained on the project page, but it seems like if they really wanted it to be cross platform they should have used GNUstep. It would also be nice to have a comparison between this and GNUstepWeb.

</comment></comment><comment><USER4> Having a web framework in Objective-C will probably bring a new meaning to code verbosity.

</comment><comment><USER5> "Froth is a Objective-C web application framework that brings the power and simplicity of Cocoa development to the web."

"simplicity" = subjective

<comment><USER6> True. At least that line did not contain the canned "Simple and Lightweight" dot dot dot.

</comment></comment><comment><USER7> Does the non-Apple runtime support Objective-C 2.0?</comment>


NASA Technical Standard: Crimping, Cables, Harnesses, and Wiring (2011) [pdf] - <AUTHOR> http://www.hq.nasa.gov/office/codeq/doctree/87394.pdf

<comment><USER2> Page 50: Hey, that's how you're supposed to use heatshrink! Wow, I've been doing it wrong for years.

Page 62: Mildly surprised that they don't want crimped connections soldered, but I suppose that compromises flexibility, and shouldn't add all that much strength if they're properly crimped.

Page 76: Wow, had never heard of "connector saver" jumpers before. Sounds bananas, but I suppose if you're going to test everything ten times for every launch, it's mostly reasonable.

<comment><USER3> I currently work as an aircraft telemetry and instrumentation engineer, and have also done similar engineering on rockets. So I spend a lot of time thinking about (and have been trained very thoroughly about) connections and how to do them.

> Hey, that's how you're supposed to use heatshrink! Wow, I've been doing it > wrong for years.

Out of curiosity, how have you been doing it? The way shown in this manual is the standard way to do it in my world.

> Mildly surprised that they don't want crimped connections soldered

I'm confused as to why you would think about soldering a crimped connection. Properly crimped connections will stand up to a good deal more vibration (and are pretty much gas-tight, staving off corrosion) than soldered connections. Plus, crimping is quick and easy with the right tools. Maybe there are some niche applications where you'd do both. I've never seen it.

> Wow, had never heard of "connector saver" jumpers before. Sounds bananas

Totally not bananas when you look at the spec sheet for something like a D38999 series connector. Connector savers are a normal thing in the aerospace world. Most connectors are only rated for a few hundred mate/demate cycles (Usually 250 or 500). Every time you mate or de-mate a connector you run the risk of damaging a pin or socket. So the connector savers are sacrificial for when you test. They get mated to the real connections once at the beginning of your tests, and demated at the end. Then you give your real connections a thorough check at the physical level and hook them up.

<comment><USER4> _I 'm confused as to why you would think about soldering a crimped connection_

Because most crimped connections (at least in the hobbyist/DIY world) are _crap_. So after crimping, the only way they hold together is with solder.

There are no applications where this is better. Every connector manufacturer I know recommends against doing it. You can get away with doing it if you support the soldered end against vibration, but you should do that anyway.

It's really a training issue. People haven't been taught better and there is a lot of bad advice floating around hobbyist forums. I have only been using good crimping tools for the last few years since I started making a product with a 50-conductor harness. Until I spent $200 on a crimping tool and took the time to research how to make good crimps (Molex has an excellent document), I never realized how they were supposed to look. Now most of my tools are used, purchased at auctions of dead companies, but I have $400 crimping tools I paid pennies on the dollar for. Even so, I normally farm out crimping to a company that does it with automated machinery, better and faster than I can do by hand.

<comment><USER5> Most of the crimpers I use are $1000+. I was totally shocked at the expense when I first switched from home hobby to professional work, but the quality of the crimps is simply incomparable. Very much worth it for reliability.

<comment><USER4> I don't think I've seen a manual tool that was so expensive. Are you using some kind of pneumatic crimper? I thought of getting even better tools, but I found an outfit that will cut and strip wire to my spec. and crimp on any contacts I need, and they do it cheaper and faster than I can.

<comment><USER3> No, that's about how much a good manual crimper costs. But man, the results you can get out of them are fantastic.

</comment></comment></comment></comment></comment></comment><comment><USER6> Technical standards would be vastly improved by adding a because-clause to all of the do-this and don't-do-that requirements.

Section 9.5: "NOTE: Do not use spiral wrap sleeving on mission hardware including launch vehicles."

If you knew why, then you could make intelligent decisions for cases to specifically covered by the standard. Possible reasons: Poor strength to weight ratio, unreliable under high-g load, makes visual inspection difficult, there is a better but more expensive substitute, etc.

<comment><USER7> From a point of view of a person not employed at NASA manufacturing plant who would like to learn something from that document, I agree. But my guess is that this standard is created for people who are paid to obey, not to think, because there are decisions made higher up the chain that depend on the components being deterministic.

This reminds me of an anecdote I saw on HN once, about Apple hardware team sending boards back to Chinese manufacturers who replaced a capacitor (or some other part) with a cheaper one without realizing it was vital for the product to work for reasons they were not aware of.

</comment></comment><comment><USER8> Years ago I trained as an (industrial) electrician with a particular focus on hazardous environments (flour mills etc, lots of suspended flammable dust), lots of the stuff in here is familiar :).

Working with armoured cable all day was enough to make me decide to go do something else as a career.</comment>


Ask HN: Netflix price increase, why and is it worth it? - <AUTHOR> Not happy with the recent Netflix price increase! What about you? What is this so "innovative and amazing" new content they promise? Is it worth keeping my subscription? <comment> BA4gDY-cqjsEPWn Definitely not. I had Netflix for a while and it's a huge time waster. Be productive instead of do something outside. Read a book if the weather is bad, etc.

</comment><comment><USER2> I myself has moved on from watching TV shows to reading Manga (Japanese Comics) and they're super-amazing! Also not as much time consuming as the TV shows! You can start reading for free at www.mangarock.com

-Darshan, [https://rancho.in](https://rancho.in)

<comment><AUTHOR> Thanks a lot Darshan! Actually, I was quite into Anime series before, but never tried the written version. :)

<comment><USER2> One big difference between Anime and Mangas is that Manga is a condensed version of that Anime! It doesn't have those downfall boring moments like Anime do!</comment></comment></comment>


The fantastic YouTube-dl team - <AUTHOR> http://rg3.name/201408141628.html

<comment><USER2> Previous HN discussion of youtube-dl, including its remarkable contributor community and frequency of updates:

[https://news.ycombinator.com/item?id=8647943](https://news.ycombinator.com/item?id=8647943)

</comment><comment><USER3> YouTube-dl and livestreamer are probably my personal favourite examples of open source code. Almost invaluable in getting around the flash-based monopoly of online video, they are both still highly useful in simply watching video in a preferred/favourite media player rather than some browser player UI.

<comment><USER4> I agree. I have a lot of respect for youtube-dl. Great software.

</comment></comment><comment><USER5> I personally use [http://www.jwz.org/hacks/youtubedown](http://www.jwz.org/hacks/youtubedown) \- it's probably much less featureful than YouTube-dl, but it's a single script, easily hackable, and does what I need. In contrast, YTDL seems to have grown into a generic "video site downloader".

<comment><USER6> I wrote my own. I can change it faster when YouTube changes something than waiting for someone else. YouTube makes downloading very straightforward. No need for Perl, Python or any interpreter except sh.

      # requirements:
      # sh, sed (BSD ok), tr, openssl, ftp or some other httpclient

      curl=ftp
      file=${2-1.mp4} # default outfile

      # itag #s are on the wikipedia page for youtube

      case $# in
      [12])
      {
      sed 's/http:/https:/' \
      |while read a;
      do

      b=${a#*://};
      c=${b%%/*};
      {
      printf "%b" "GET /${a#https://*/} HTTP/1.0\r\n";
      printf "Host: $c\r\n";
      printf "User-Agent: OK, Google.\r\n";
      printf "Connection: close\r\n\r\n";
      } \
      |openssl s_client -ign_eof -connect $c:443 -verify 9
      done \
      |sed '
      s,http,\
      &,g;
      ' \
      |sed '
      /%3A%2F/!d;
      /videoplayback/!d;
      s,%3D,=,g;
      s,%3A,:,g;
      s,%2F,/,g;
      s,%3F,?,g;
      s/^M//g;
      ' \
      |sed -e '
      s/&itag=5//;t1
      s/&itag=1[78]//;t1
      s/&itag=22//;t1
      s/&itag=3[4-8]//;t1
      s/&itag=4[3-6]//;t1
      s/&itag=1[346][0-9]//;t1
      ' -e :1 \
      |sed '
      s,%26,\
      ,g;
      s,&,\
      ,g;
      ' \
      |sed 's/%25/%/g' \
      |tr '\012' '&' \
      |sed 's/&$//';
      echo
      } \
      |sed '
      s,%3D,=,g;
      s,%3A,:,g;
      s,%2F,/,g;
      s,%3F,?,g;
      s/^M//g;
      ' \
      |sed '
      s/&https/\
      \
      https/g;' \
      |sed 's/\\u0026.*//' \
      |sed '/itag='"${1-.}"'/!d;'|{
      read a;
      exec $curl -4o $file $a;}
      ;;
      *)
      exec echo \
      "usage:   $0 itagno [outfile]
      outfile: $file"
      esac

</comment></comment><comment><USER7> Do these tools violate the YouTube TOS?

Has anyone found a solution for building your own YouTube powered mobile app with Chromecast support? It seems the only way to do this is to use a tool like this to cast the raw video URL.

<comment><USER5> _Do these tools violate the YouTube TOS?_

They do, but it's not like YT can do anything about it except adding some obfuscation and changing that periodically. If it can be viewed on one machine, it can also be recorded. Hence the War on General-Purpose Computing.

I still remember when all you needed to do to download was change "watch?v=" into "get_video?video_id=" in the URL...

</comment></comment><comment><AUTHOR> I noticed that youtube-dl now converts the webm to mp4 with ffmpeg after the download.

It tries also to merge similar files to an mkv (not sure).

<comment><USER3> There's a wealth of options to control this. I prefer going with MP4 for various reasons except if the source is available as a 1440p 60fps file, which I think is Webm only right now. Mix and match to your hearts content!</comment></comment>


Software Capital – Achievement and Leverage - <AUTHOR> https://medium.com/@DeanZarras/software-capital-achievement-and-leverage-2c30f6f01ed9 <comment><AUTHOR> This short paper should be of interest to many for the simple fact that it describes what is not uncommon today, but was written 20 years ago when it was quite uncommon.</comment>


Ask HN: (What) would you use a sub $9 disposeable location tracker for? - <AUTHOR> I have a prototype location tracker that costs <$4 to build. It can track any item's location every hour in urban areas for 30 days world wide (connects via wifi). Its smaller than a walnut. Would you use it? If so what for? <comment><USER2> If it could work in rural areas, then cows... my uncle spends several days on horseback every year trying to round up his cows. If he could know exactly where the cows were it could save him days. If I'm stuck to urban areas, maybe look at dogs cats and carrier pigeons.

<comment><USER3> This seems like a solvable problem. Can you tell me more about the use case? For example:

\- how accurate would you need?

\- how often an update?

\- updates all the time or only after X days, then start updating?

\- every cow or a representative from the herd?

\- how much would this market pay?

</comment></comment><comment><USER4> How much longer could it run for it used some energy harvesting and/or only reported once every 6 hours?

What if an open wi-fi network is not close?

Seems it will only work around your house or maybe Maccas, really needs 3G to be useful.

</comment><comment><USER5> My dog's collar. My car. My camping backpack.

</comment><comment><USER6> Stalking.</comment>


Ask HN: Questions about Global Warming - <AUTHOR> I trust the scientific consensus, that is, global warming poses a real threat. I've eagerly read the comments in https://news.ycombinator.com/item?id=13941923 as well as Dr. Guy McPherson's statements. Climate science is not my field, so I'd appreciate if you could answer the following questions. No sugarcoating. 1) What are practical, in hand solutions to such threat, if any? 2) How can I prepare myself to survive through the worst-case scenario? 3) Where's the best place to move preemptively? I imagine that the means of food production will be in the hands of a few countries. <comment><USER2> I've been wondering about this more and more. I feel like I'm watching an 18-wheeler just drive closer and closer to the edge of a cliff. The driver is under the influence of media and money.</comment>