# Zwillingssterns Weltenwald

Willkommen im Weltenwald! Auf diesen Seiten schreibt Arne Babenhauserheide alias Draketo alias Zwillingsstern alias ((λ()'Dr.ArneBab)).

Ich hoffe, Du findest hier Anregungen zum Denken und Träumen!

## Neuste Beiträge

### Demos, bei denen Hygieneauflagen missachtet werden, verursachen Corona-Infektionen

Dass Demos, bei denen Hygieneauflagen missachtet wurden, Corona-Ansteckungen verursachen, ist inzwischen erwiesen:

### Programming with Wisp, Quick start from zero to best practices

Wisp is an extension to Guile Scheme that implements Scheme request for implementation 119. It uses fewer parentheses than typical Scheme-code but has the same expressive power. Here I want to show you how to use it and then build a more complex application to show it in real use.

### Jetzt zu öffnen riskiert Mutationen, gegen die die Impfungen nicht wirken

Deutschland hat zur Zeit bei den Mutationen einen R-Wert über 1 — das heißt die Mutationen verbreiten sich, und sobald sie dominant sind, wird auch der gemittelte R-Wert über 1 liegen.

### Grüne Maßnahmen und No-Covid sollten der Minimalkonsens sein

Die Taz brachte heute einen längeren Artikel von T. Gesterkamp, der mal wieder den Grünen Panikmache vorwarf, aber (oder wie zu erwarten) in sich selbst unlogisch war. (link)

### Links und Neuigkeiten zum Stand des Klimas

Hier sammle ich Quellen und Neuigkeiten zum Klimawandel.

### Verteilte Systeme an der Dualen Hochschule BW

Teil der angewandten Informatik an der DHBW Karlsruhe, 2019, 2020, 2021. Sie wurde bis 2020 mit Carlo Götz gehalten und entwickelt.

### Was will welche App, und will ich es ihr geben?

Informationsquellen für Lehrende, die sich fragen, warum Eltern bestimmte Apps nicht erlauben.

### m3u-Playlist player in Vanilla Javascript

Websites could be an awesome tool for simple radio, if only playlists in video- or audio-tags would just work. Here I’m creating a script that when imported turns every media-tag which points to an m3u-file into a player that allows playing the playlist.

### Mathe Ass

Löse die Aufgaben und steige Stufen auf.

## Neuste Beiträge woanders

(weitere auf meiner alten Seite, auf der ganz alten Seite, auf meinem GNU social, im Forum Tanelorn und auf rollenspiel.social).

### The greenhouse effect, calculated again

[2019-11-08 Fr 23:41] New version: draketo.de/wissen/greenhouse-effect-calculated

PDF

PDF (drucken)

Org (ändern)

I did not want to talk about the greenhouse effect without having checked the math and physics. Therefore I calculated it myself.

The greenhouse effect describes the effect of the atmosphere on Earth’s surface temperature. The simplest example contrasts the surface temperature of a planet without atmosphere to the surface temperature with a single insulating layer above the surface.

The incoming radiation from the Sun provides the earth with a constant source of energy. If it would not get rid of that energy somehow, it would get hotter everyday, eventually melt and vaporize. It’s evident that this does not happen (otherwise we would not be here to think about it).

As shown by citet{Stefan1879} and citet{Boltzmann1884}, the total energy emission from a perfect black body (a body which absorbs all incoming radiation) per unit area is given by

$$E = \sigma T^4$$

with the Stefan–Boltzmann constant

$$\sigma = \frac{2 pi^5 k^4}{15 c^2 h^3} \approx 5.67 cdot 10^{-8} W m^{-2} K^{-4}$$

From satellite measurements in the Earth’s orbit we know that the incident solar radiation delivers an average energy flux (j) between 1361 (Wm^{-2}) during the solar minimum and to 1363 (Wm^{-2}) during the solar maximum citep{KoppSolarConstant2011}.

This radiation hits the cross section of the Earth, the area of a circle with the radius of the Earth: (pi R^2). This is also the energy radiated by the Earth system, as evidenced by the Earth neither melting nor freezing. But this outgoing radiation is perpendicular to the surface, not to the cross section of the Earth. The total surface of a sphere is (4 imes pi R^2), or (4 imes) its cross section. So the energy radiated per area is just 25% of the incoming energy: (σT_{out}^4 = 0.25 imes σT_{in}^4)

The incident radiation delivers an Energy flux of (E_i = 1362 Wm^{2}), so the outgoing radiation of a perfect black body would be (E_o = 340.5 Wm^{-2}), which is consistent with a temperature of

$$T = \left(\frac{E}{σ}\right)^{\frac{1}{4}} = \left(\frac{340.5 cdot 15 c^2 h^3}{2 pi^5 k^4}\right)^{\frac{1}{4}} K \approx \left(\frac{340.5}{5.67 cdot 10^{-8}}\right)^{\frac{1}{4}} K = 278.623 K$$

This gives an average surface temperature of

$$(278.62 - 273.15) ^\circ C = 5.47 ^\circ C$$

for a perfectly black Earth without atmosphere.

Due to the simplifications used, this value is (8 K) lower than the measured mean sea and land surface temperature of (14 ^ˆ C) for the base period 1961-90 citep{Jones1999,Rayner2006}.

Historically the next step after the black body estimation was to take the albedo into account: The amount of incoming radiation reflected directly back into space.

If we take into account that the Earth surface and clouds reflect roughly 30% of the visible light back into space, the Earth only receives roughly 70% of the energy which it needs to radiate back. For details, see citet{Muller2012} and citet{Muller2013}.1 The equilibrium temperature changes to 255 Kelvin, which is just about -18 °C. Note that changing the albedo by 1 percent point (to 29% or 31%) would change the temperature by roughly 1 K.

(let* ((albedo 0.3) (sol 1362) (incoming-watt (* (- 1 albedo) (/ sol 4))) (c 3e8) (h 6.62607e-34) (k 1.38065e-23) (pi 3.14159)) (expt (/ (* incoming-watt 15 c c (expt h 3)) (* 2 (expt pi 5) (expt k 4))) 0.25))

254.61953320379396

$$T = \left(\frac{E}{σ}\right)^{\frac{1}{4}} = \left(\frac{0.7 cdot 340.5 cdot 15 c^2 h^3}{2 pi^5 k^4}\right)^{\frac{1}{4}} K \approx \left(\frac{238.0}{5.67 cdot 10^{-8}}\right)^{\frac{1}{4}} K = 254.6 K$$

There are small additional factors in play:

• effective temperature (radiation from a star) to air temperature (measured on Earth)
• emissivity: Common values range from 0.90 to 0.98, with forests and urban areas staying close around 0.95, grassland peaking at 0.95 but with a noticeable tail towards 0.90 and barren soil and sparsely vegetated areas forming a broad distribution between 0.92 and 0.96 citep{Jin2006}. Snow 0.99 (Wan2002).

But with these we’re still roughly 30 Kelvin away from actual temperatures. These are reached through absorption and radial re-radiation of outgoing energy, which effectively provides the Earth with insulation, most effective in the infrared.

This is what is typically called the greenhouse effect: Infra-red emissions by the Earth are absorbed by greenhouse gases in the atmosphere, so the Earth needs to be warmer to get rid of the same amount of received energy.

Greenhouse gases have a net effect on the temperature, because the outgoing radiation mostly consists of thermal infrared light (TIR), while the incoming radiation mostly consists of near infrared (NIR) visible (VIS) and ultraviolet (UV) light. Let’s take the oldest account of this absorption: citet[“On the Influence of Carbonic Acid in the Air upon the Temperature of the Ground”]{Arrhenius1896} describes different absorption of moonlight depending on the wavelength of the light. Half this light absorbed in the atmosphere is radiated outwards, the other half inwards.

For the actual calculation, we use more recent results: citet[„The natural greenhouse effect of atmospheric oxygen (O2)and nitrogen (N2)“]{Hoepfner2012}. They take into account the structure of the atmosphere by building on the well-established Karlsruhe Optimized and Precise Radiative transfer Algorithm (KOPRA).

The publication by citet[]{Hoepfner2012} showed that Outgoing Longrange Radiation without gas would be 365.7 W/m(^2), while with greenhouse gases it is 242.7 W/m(^2). That’s a 33.6 % decrease in emission, so we need 1.5 times higher emissions to reach equilibrium. Let’s factor this into the equations, and also use an emissivity of 0.95.

(let* ((albedo 0.3) (emiss 0.95) (sol 1362) (incoming-watt (* (- 1 albedo) (/ sol 4))) (c 3e8) (h 6.62607e-34) (k 1.38065e-23) (pi 3.14159)) (expt (/ (* (/ 365.7 242.7) incoming-watt (/ 1 emiss) 15 c c (expt h 3)) (* 2 (expt pi 5) (expt k 4))) 0.25)) ;; for the numerator ;; (* (/ 365.7 242.7) (/ 1 emiss) incoming-watt))

285.7423501045961

$$T = \left(\frac{E}{σ}\right)^{\frac{1}{4}} = \left(\frac{\frac{365.7}{242.7} cdot 0.7\frac{1}{0.95} cdot 340.5 cdot 15 c^2 h^3}{2 pi^5 k^4}\right)^{\frac{1}{4}} K \approx \left(\frac{377.49}{5.67 cdot 10^{-8}}\right)^{\frac{1}{4}} K = 285.74 K$$

We get 285.74 K as equilibrium temperature. That’s around 12.6°C, so now we’re just 1.4 Kelvin away from the actual (14 ^ˆ C) for the base period 1961-90 citep{Jones1999,Rayner2006}. There are still effects missing in the calculations, but the intention of this guide is not to create a new climate model, but to show the fundamental physical effects. Remember also that changing the surface albedo by 1 percent point (to 29% or 31%) would change the temperature by roughly 1 K, so getting within less than 2 °C of the measured temperature is already pretty good. Going further would require a much stricter treatment of surface albedo that goes into too much detail for an article.

Therefore we’ll round this up with an important test that is only weakly affected by the surface albedo:

What happens if we increase the absorption by CO(_2)? Do we see global warming?

For this test the result is already close enough to the measured temperature that we can take the difference between values with different parameters to get the effect of these parameters and remove biases which are present in both values.

To calculate global warming due to doubled CO₂, we cannot just double the absorption, because the absorption bands get saturated. The citet[IPCC working group 1 (physical science basis)]{IPCCRadiativeForcingMyhre2013} gives the increase in radiative forcing due to increased CO(_2) levels from the 1950 concentrations of about 310 ppm to the 2010 concentrations of 390 ppm as about 1.2 W/m(^2).2

So let us go at this backwards: citet{Hoepfner2012} showed the state for 2012, what do our calculations predict for 1950 when we reduce the absorption due to CO(_2) by the 1.2 W/m(^2) radiative forcing given in the IPCC?3

The unstable emissions would then not be 242.7 W/m(^2) as calculated by citet{Hoepfner2012}, but 243.9 W/m(^2).

(let* ((albedo 0.3) (sol 1362) (emiss 0.95) (incoming-watt (* (- 1 albedo) (/ sol 4))) (c 3e8) (h 6.62607e-34) (k 1.38065e-23) (pi 3.14159)) (expt (/ (* (/ 365.7 (+ 242.7 1.2)) incoming-watt (/ 1 emiss) 15 c c (expt h 3)) (* 2 (expt pi 5) (expt k 4))) 0.25)) ;; for the numerator ;; (* (/ 365.7 (+ 242.7 1.2)) incoming-watt (/ 1 emiss)))

285.3902331695058

We get 285.39 Kelvin for 1950, about 0.35°C less than for

This gives an estimate of a 0.35°C increase in temperature from 1950 to 2010 due to increased CO(_2) levels alone. If we also remove the added absorption from methane, N (_{2}O) and other greenhouse gases emitted by humans (additional forcing of 0.75 W/m(^2)), we get 285.17 Kelvin.

So this calculation from basics yields an increase of the equilibrium temperature by 0.57 °C.

$$T_{2010} - T_{1950} = 285.74 K - 285.17 K = 0.57 K$$

This is a bit lower than the increase of 0.65 K to 0.75 K seen in the global temperature records by the Berkeley Earth project,4 and close to the 0.6 to 0.8 K increase shown in the Global (NH+SH)/2 temperature given by HadCRUT4 by the Met Office Hadley Centre by the National Meteorological Service of the United Kingdom.5 But for a calculation from basic principles, that’s pretty good.

So we can conclude that actual measurements match this physical explanation of global warming due to the greenhouse effect — or more exactly: due to increased absorption of infrared radiation by greenhouse gases, with the biggest effect due to CO(_2).

The source of climate-active human carbon emissions which influences the CO(_2) content of the atmosphere is mostly burning of fossil fuel which is taken from the crust of the Earth and introduced into the carbon cycle. This is what changes the CO(_2) concentration.

And with this, we are done.

Please reduce your carbon emissions and become active to get politicians to action on a national and global scale. We’re cutting the branch we live on.

If you want more details, have a look at the IPCC reports. Best start with the executive summary and then go into the details you’re most interested in:

IPCC Climate Change 2013: The Physical Science Basis: https://www.ipcc.ch/report/ar5/wg1/

An explanation how humans increase the CO₂-concentration of the atmosphere is available in my presentation The carbon cycle: https://www.draketo.de/licht/physik/kohlenstoffkreislauf-carbon-cycle

And if you want my best estimate of our current situation, have a look at the article Two visions of our future: https://www.draketo.de/english/politics/roll-a-die

Fußnoten:

1

You can check the albedo for several different spectral regions at http://www.globalbedo.org/

2

Robust data about changing CO(_2) levels is available from the Global Monitoring Division (GMD) of the Earth System Research Laboratory (ESRL) at the National Oceanic & Atmospheric Administration (NOAA).

3

We’re only going to 1950 and not back to 1850, because the temperature data at 1850 would mix in the effect of the declining little ice age.

4

Berkeley Earth provides a reevaluation of all the surface measurements without complex models.

5

HadCRUT4 combines sea surface temperature data from the Hadley Centre of the UK Met Office and the land surface air temperature records compiled by the Climatic Research Unit (CRU) of the University of East Anglia.

Autor: Arne Babenhauserheide

### What I need from IntelliJ and what I deeply miss when I’m not using Emacs

[2019-10-27 So 22:05] Updates will be written on my new site: draketo.de/software/intellij-emacs

Inhaltsverzeichnis

What I really need from IntelliJ

1.1. inspection

1.2. refactor

1.3. run

1.4. debug

1.5. other

What I deeply miss when not using Emacs

2.1. keyboard shortcuts

2.2. editing

2.3. windows

2.4. files

2.5. interop

2.6. movement

2.7. Feeling fast

2.8. other

At work I’m using IntelliJ for Java development, but I’m not happy with the interface. It forces me out of my concentration and regularly breaks my flow by having stuff jump around and stealing focus.

But I cannot switch to something that works better for me, because there are features of IntelliJ that I require to work efficiently.

1 What I really need from IntelliJ

1.1 inspection

• Where is this called? — all callers
• Where is this implemented? Where is it declared? Or overridden?
• Visual indicator whether a method is overridden or whether it overrides
• Where is this defined (base method or concrete method)?

1.2 refactor

• rename symbol,
• change signature (with base method and overrides and callers),
• extract method from selection,
• extract variable / store selected expression in variable

1.3 run

• Run tests in changed modules or in file
• re-run test, restart current program
• re-build incrementally
• hot-swap without restart

1.4 debug

• set breakpoint and see breakpoints, set conditional breakpoint
• run project via eclipse run config main method (we replaced the eclipse stuff extracted with Eclipser by main methods)
• inspect stack and state at break point
• step over / in / out / continue

1.5 other

• Jump to definition / caller (also with mouse CTRL-click), even for xml, so colleagues can do it when working at the same box
• show all methods in file
• VCS: ignore changes in some files
• run Sonar Qube on changed files

2 What I deeply miss when not using Emacs

2.1 keyboard shortcuts

• mnemnonic keybindings: When I type C-x r t, I thing x-rectacngle-text. That is why it works accross different keyboard layouts.
• staying on the letter row

2.2 editing

• killing to the end of the line with C-k (I actually added that to IntelliJ now)
• cycling through the cut-paste list with M-y: Often I don’t need the last kill, but the one before. Yes, I can reach for the mouse and use klipper, but that slows me down and breaks my concentration. ——— C-S-v in IntelliJ uses paste from history
• storing and retrieving multiple values with registers.
• Completion which replaces the suffic, or at least M-d (Alt-d): kill world or rest of word. ——— You can remap Alt-d in IntelliJ to kill to word end
• Activate selection mark, navigate, kill all code in-between mark and current point. The Emacs live plugin is close, but not good enough.

2.3 windows

• Commands with M-x, fuzzy matched, and without settings-window-names getting in the way. I half-ways replace that with C-S-a
• closing other windows with x1 (actual "x1" thanks to key-chords-mode). Deeper: Natural use of multiple windows.
• storing a window configuration in a register and retrieving it later
• Truly having two windows side-by-side with two points and switching with xo or xö (C-x o).

2.4 files

• Fuzzy matching in buffer-list with bf (as chord or with C-x b).

2.5 interop

• Linking to code files from my org-mode planning file.

2.6 movement

• Navigation with C-n / C-p / M-b / M-f. That avoids having to move to the arrow keys.
• back to last edit which stays in the buffer. I can switch between buffers with bf, and after I just want to go back to where I last edited this buffer. Multi-file back-to-last-change is also nice (as IntelliJ provides it), but it’s not complete.

2.7 Feeling fast

• Somehow all the things I need to do in IntelliJ feel slow. Maybe that’s because a million lines of code is a lot. Maybe because it keeps a huge amount of state. Or because Maven is slow. But it feels like I’m regularly waiting for something to refresh itself.
• IntelliJ feels slow, because it often opens dialogs before they accept keyboard input. To reproduce: start a global search (with CTRL-shift-F) and start typing. It misses my first keystrokes. Emacs takes all keystrokes.

2.8 other

• Having the shell just an M-! away, in the same folder as the code file.
• ripgrep
• A colleague said today “I wish we had tabs grouped by type”. I could not suppress saying “emacs does this — with tabbar-mode”.
• Inline merge-conflict highlighting (I actually switch from IntelliJ to Emacs for that).
• glasses-mode to highlight capital letters in camelCase.

### Zitier keine Nazis

[2019-10-12 Sa 15:39] Atme kurz durch und frag dich: „was gibt es grade anderes wichtiges?“

Gerade habe ich gesehen, wie die Heute Show einen Rechtsextremen zitiert hat, weil dessen Satz so verlogen klang. Der Satz lässt sich allerdings auch als eine ironische Nachricht an seine Anhänger lesen.

Der Rechtsextreme hat also sehr geschickt eine Nachricht an seine Anhänger lanciert, die wieder mal durch alle Medien ging. Sie war damit ein riesiger Propaganda-Erfolg für den Rechtsextremen.

Daher möchte ich euch bitten: Zitiert keine Rechtsextremen. Sie sind propagandistisch besser als ihr. Wenn ihr wirklich über ihre Aussagen schreiben wollt, dann paraphrasiert sie. Damit vermeidet ihr zumindest, Botschaften weiterzugeben, die ihr nicht gesehen habt; z.B. weil sie Szenecodes verwenden.

Wenn ihr nicht die Zeit habt, ein Zitat vollständig zu analysieren und auseinanderzunehmen, dann vermeidet es.

Gebt lieber eine der vielen anderen wichtigen Neuigkeiten weiter.

Ein wichtiger Grund dafür ist, dass wir tendenziell dem zustimmen, das wir schon einmal gehört haben. Die Taz beschrieb das in einem Artikel über ein Experiment zum Glauben an Fake News: „Allgemein kann man sagen: Geschichten, die Menschen vertraut vorkommen, halten sie eher für wahr. Dieser Effekt ist unabhängig davon, ob man eher kritisch denkt oder nicht.“ (Quellartikel: Pennycook and Rand

Also: Bitte zitiert keine Rechtsextremen und gebt ihre Nachrichten nicht weiter; auch nicht ironisch, und erst Recht nicht, wenn ihr euch gerade über sie aufregt. Damit stärkt ihr sie.

Gebt lieber eine andere Neuigkeit weiter.

Atme kurz durch und frag dich: „was gibt es grade anderes wichtiges?“

### Immutable function arguments and variables

[2019-07-16 Di 21:42] 1 Dev A: “Fortran is totally outdated.”

2 Dev B: “I wish we could declare objects in function arguments or variable values as immutable in Java and Javascript.”

Fortran developer silently wheeps:

! immutable 2D array as argument in Fortran integer, intent(in) :: arg(:,:) ! constant value character(len=10), parameter :: numbers = "0123456789"

See parameter vs. intent(in).

(yes, I’m currently reading a Javascript book)

(es gibt übrigens auch noch meine ganz alte Seite)

Created: 2021-04-09 Fr 00:59

Validate