Category Archives: Software

Bundestag Videos in WordPress einbauen

WordPress verbietet aus Sicherheitsgründen das Einfügen von Javascript. Ich habe die Bundestagsverwaltung angeschrieben, ob sie nicht ähnlich wie Youtube einen Embed Code mit Iframe anbieten könnte, denn bisher bekommt man lediglich

<script id="tv6995628" src="https://webtv.bundestag.de/player/macros/bttv/hls/player.js?content=6995628&phi=default">
<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>
</script>

Natürlich könnten man in wp-config.php die Zeile define( ‘CUSTOM_TAGS’, true ); einfügen. Besser scheint mir aber, bis auf weiteres das Code Embed Plugin zu installieren und ein Custom Field für den Video Code anzulegen.

Das Ergebnis sieht dann so aus:

{{CODE1}}

Das ist aber auch nur so lange sicher, als der Bundestag nicht wieder gehackt wird.

 

CC-BY-NC Science Surf accessed 24.11.2025

What is principle component analysis?

There is a wonderful description at stats.stackexchange.com how science should be taught

Imagine a big family dinner, where everybody starts asking you about PCA. First you explain it to your great-grandmother; then to you grandmother; then to your mother; then to your spouse; finally, to your daughter (who is a mathematician). Each time the next person is less of a layman. Here is how the conversation might go

This science not by some older science journalists or some younger science slammers but a real expert.

 

CC-BY-NC Science Surf accessed 24.11.2025

Getting started with webRTC

While the protocol is already around for some time, webRTC isn’t been used so much although many browser are supporting it.

The basic webRTC samples of peer connection works well within the same browser window (showcase) while I need to connect sound + audio between two browser windows in a local network. After trying out several frameworks, I found the most easiest one easyRTCrtc. It works out of the box

git clone https://github.com/priologic/easyrtc.git
cd /Users/wjst/Desktop/easyrtc
cd /Users/wjst/Desktop/easyrtc/server_example
npm install express --save
node server.js

while pointing the browser to localhost:8080. Three weeks later, I find the sources poorly documented, connections are frequently broken, while Chrome explains it is moving soon to “Plan B”.

I could have been warned.

Will test now Ant Media Server.

 

CC-BY-NC Science Surf accessed 24.11.2025

Pages and Endnote

Just found a plugin from Apple that allows Endnote citations in Pages. So Apple is also interested in the science industry :-)

Just in case you arrive here from Google by trying to reformat footnotes as endnotes. Your cursor needs to be on an existing footnote, only then the formatting menu appears top right.

 

CC-BY-NC Science Surf accessed 24.11.2025

A mistake in the operating room

Found at https://www.nature.com/articles/ncpuro0294#article-info via https://twitter.com/MaartenvSmeden/status/1071138625415458817

A mistake in the operating room can threaten the life of one patient; a mistake in statistical analysis or interpretation can lead to hundreds of early deaths. So it is perhaps odd that, while we allow a doctor to conduct surgery only after years of training, we give SPSS® (SPSS, Chicago, IL) to almost anyone. Moreover, whilst only a surgeon would comment on surgical technique, it seems that anybody, regardless of statistical training, feels confident about commenting on statis- tical data. If we are to bring the vast efforts of research to fruition, and truly practice evidence- based medicine, we must learn to interpret the results of randomized trials appropriately.

 

CC-BY-NC Science Surf accessed 24.11.2025

ICMJE Conflicts of Interest – spyware?

I dont’t understand why the ICMJE Conflicts of Interest of the Vancouver group is NOT distributed as a standard PDF but as an Adobe Form that can be opened only after installing a lot of unnecessary software that opens a lot of unnesssary ports transmitting a lot of unnecessary data. This is how it looks natively on a Mac

 

and this is how it should look like

Adobe Acrobat Reader DC does not even allow printing into a PDF, clearly spyware behavior forcing data collection on an unknown destination.

 

CC-BY-NC Science Surf
accessed 24.11.2025

Embed youtube videos without pre-loading any data

This short script is quite useful for DSGVO complaint, aeh compliant websites. Just put a grey picture in /images/externalcontent.png or wherever you want

/images/externalcontent.png

and insert a short script in the wordpress header.

function showyou() {
  $('iframe[name*=".com"]').each(function(e) {
    var src=$(this).attr('name');
    $(this).attr('src',src);
    $(this).show();
  });
}
$(document).ready(function(){
  $('iframe[src*=".com"]').each(function(e) {
    var src=$(this).attr('src');
    $(this).attr('name',src );
    $(this).attr('src','');
    $(this).after('<img class="me" src="/images/externalcontent.png" onclick="$(\'.me\').hide();showyou();"/>
');
    $(this).hide();
  });
});

 

CC-BY-NC Science Surf
accessed 24.11.2025

Citizen Science: Feinstaubmessung in Eigenregie

Das Stuttgarter Messprojekt ist ausführlich auf https://luftdaten.info/ erklärt, die Feinstaub Theorie auf ruhrmobil-e.de/.

Dahinter steckt der Laser Staub Sensor SDS011.

Nova Fitness SDS011 is a professional laser dust sensor. Fan mounted on sensor automatically sucks air. Sensor uses laser light scattering principle to measure value of dust particles suspended in the air. Sensor provides high precision and reliable readings of PM2.5 and PM10 values. Any change in environment can be observed almost instantaneously – short respond time below 10 seconds. Sensor in standard mode reports reading with 1 second interval.
Measured values: PM2.5, PM10
Range: 0 – 999.9 μg /m³
Resolution: 0.3μg/m3
Work environment:-10 ~ +50°C
Counting yield: 70%@0.3μm, 98%@0.5μm
Relative error: Maximum of ± 15%, ±10μg/m3 25°C, 50%RH
Cycle: 1004ms±1%
Service life: up to 8000 hours
according http://www.segor.de/dokumente/sds011_pm2.5_v1.3.pdf

Mit 70mA Stromverbrauch kann der Sensor damit auch mobil mit einer gängigen Powerbank (zB 3.500 mAh) 50 Stunden lang betrieben werden, am besten parallel zu einem alten Mobilfunkgerät, das nicht nur einen GPS Track aufzeichnet, sondern auch per Wifi gleich die Daten speichert. Mehr zur Evaluation des Sensors auf luftdaten.info bzw lubw.baden-wuerttemberg.de Zusammengefasst

* zufriedenstellende Korrelation an Tagen mit mittlerer Luftfeuchtigkeit (50 – 70 % r. F.) und Konzentrationen kleiner 20 μg/m3
* deutliche Abweichungen bei Schwankungen der klimatischen Bedingungen (Luftfeuchte, Luftdruck, Lufttemperatur)
* Sensoren aus unterschiedlichen Chargen weisen unterschiedliche Messergebnisse auf
* undefinierter Probengasstrom durch ungeregelten Lüfter führt zu starken Schwankungen des Messvolumens

 

CC-BY-NC Science Surf
accessed 24.11.2025

Transdermal vitamin D patch

There is a new clinical trial D3ForMe that has a big benefit in my eyes: Avoiding the high local vitamin D in the gut Peyers’ Patch after oral supplementation.
Oral supplementation likely affects gut-specific homing leading activated T cells and antibody-secreting cells (ASCs) to both inflamed and non-inflamed regions of the gut. Also antigen recognition may be affected by inhibited DC maturation.
In an earlier vitamin D3 could be safely be delivered through the dermal route.

 

CC-BY-NC Science Surf
accessed 24.11.2025

Wahlen mit alphabetischer Reihenfolge

Es gibt in Deutschland immer noch viele Kammer-, Sozial- und Vorstandswahlen, die aus angeblichen Fairnessgründen die Kandidatenliste alphabetisch reihen. Dabei wissen die meisten Organisationen nicht, wie sie sich damit vor allem selbst, aber auch den Kandidaten schaden.

Wahlen von Kandidatenlisten in alphabetischer Reihenfolge sind nämlich vor allem dann ein Problem, wenn A. die Wähler die Kandidaten nicht kennen, es B. einen großen Überhang von Kandidaten im Verhältnis zu den Gewählten gibt, C. die Reihung als Empfehlung missverstanden wird und D. die Wahlergebnisse relativ nahe beieinander liegen.

In der englischen Literatur ist das alles als “Ballot Order Effect” bekannt und kann auf vielen Blogs nachgelesen werden:
https://daily.jstor.org/ballot-position/
https://www.pulj.org/the-roundtable/avoiding-election-bias
https://www.bbc.com/news/blogs-magazine-monitor-27426319
https://www.cbc.ca/news/politics/grenier-ballot-order-1.4608059
http://www.centerforpolitics.org/newslet_909cb.html

Der Effekt ist enorm, mit einem Buchstaben im vorderen Drittel liegt die Wahlchance bei ca 65%, im mittleren Drittel bei 25%, im letzten Drittel bei 10%. Am Ende der Liste zu stehen ist besonders schlecht, auch bekannt als “voter fatigue” (das ändert sich allerdings wenn die Liste sehr lange ist, dann wird man wieder etwas häufiger gewählt).

Das folgende Beispiel illustriert an einem praktischen Beispiel, wie eine Liste von 20 Kandidaten am besten unter den Wählern verteilt wird, um den “Ballot Order Effect” zu vermeiden.

l <- LETTERS[1:20]
l
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T"

# Zuerst wird die alphabetische Reihenfolge aufgelöst
l <- sample(l)
l
[1] "Q" "C" "K" "F" "L" "M" "J" "T" "B" "I" "G" "H" "O" "P" "N" "S" "R" "A" "E" "D"

# Dann wird der jeweils letzte Namen nach vorne gerückt
r &lt;- NULL
for (v in l[20:1]) {
  x <- c( l[grep(v,l):20], l[1:(grep(v,l)-1)] )[1:20]
  r <- rbind (r,x)
}
r

# Jede Zeile gibt nun einen von 20 Wahlvorschlägen aus
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
x "D"  "Q"  "C"  "K"  "F"  "L"  "M"  "J"  "T"  "B"   "I"   "G"   "H"   "O"   "P"   "N"   "S"   "R"   "A"   "E"  
x "E"  "D"  "Q"  "C"  "K"  "F"  "L"  "M"  "J"  "T"   "B"   "I"   "G"   "H"   "O"   "P"   "N"   "S"   "R"   "A"  
x "A"  "E"  "D"  "Q"  "C"  "K"  "F"  "L"  "M"  "J"   "T"   "B"   "I"   "G"   "H"   "O"   "P"   "N"   "S"   "R"  
x "R"  "A"  "E"  "D"  "Q"  "C"  "K"  "F"  "L"  "M"   "J"   "T"   "B"   "I"   "G"   "H"   "O"   "P"   "N"   "S"  
x "S"  "R"  "A"  "E"  "D"  "Q"  "C"  "K"  "F"  "L"   "M"   "J"   "T"   "B"   "I"   "G"   "H"   "O"   "P"   "N"  
x "N"  "S"  "R"  "A"  "E"  "D"  "Q"  "C"  "K"  "F"   "L"   "M"   "J"   "T"   "B"   "I"   "G"   "H"   "O"   "P"  
x "P"  "N"  "S"  "R"  "A"  "E"  "D"  "Q"  "C"  "K"   "F"   "L"   "M"   "J"   "T"   "B"   "I"   "G"   "H"   "O"  
x "O"  "P"  "N"  "S"  "R"  "A"  "E"  "D"  "Q"  "C"   "K"   "F"   "L"   "M"   "J"   "T"   "B"   "I"   "G"   "H"  
x "H"  "O"  "P"  "N"  "S"  "R"  "A"  "E"  "D"  "Q"   "C"   "K"   "F"   "L"   "M"   "J"   "T"   "B"   "I"   "G"  
x "G"  "H"  "O"  "P"  "N"  "S"  "R"  "A"  "E"  "D"   "Q"   "C"   "K"   "F"   "L"   "M"   "J"   "T"   "B"   "I"  
x "I"  "G"  "H"  "O"  "P"  "N"  "S"  "R"  "A"  "E"   "D"   "Q"   "C"   "K"   "F"   "L"   "M"   "J"   "T"   "B"  
x "B"  "I"  "G"  "H"  "O"  "P"  "N"  "S"  "R"  "A"   "E"   "D"   "Q"   "C"   "K"   "F"   "L"   "M"   "J"   "T"  
x "T"  "B"  "I"  "G"  "H"  "O"  "P"  "N"  "S"  "R"   "A"   "E"   "D"   "Q"   "C"   "K"   "F"   "L"   "M"   "J"  
x "J"  "T"  "B"  "I"  "G"  "H"  "O"  "P"  "N"  "S"   "R"   "A"   "E"   "D"   "Q"   "C"   "K"   "F"   "L"   "M"  
x "M"  "J"  "T"  "B"  "I"  "G"  "H"  "O"  "P"  "N"   "S"   "R"   "A"   "E"   "D"   "Q"   "C"   "K"   "F"   "L"  
x "L"  "M"  "J"  "T"  "B"  "I"  "G"  "H"  "O"  "P"   "N"   "S"   "R"   "A"   "E"   "D"   "Q"   "C"   "K"   "F"  
x "F"  "L"  "M"  "J"  "T"  "B"  "I"  "G"  "H"  "O"   "P"   "N"   "S"   "R"   "A"   "E"   "D"   "Q"   "C"   "K"  
x "K"  "F"  "L"  "M"  "J"  "T"  "B"  "I"  "G"  "H"   "O"   "P"   "N"   "S"   "R"   "A"   "E"   "D"   "Q"   "C"  
x "C"  "K"  "F"  "L"  "M"  "J"  "T"  "B"  "I"  "G"   "H"   "O"   "P"   "N"   "S"   "R"   "A"   "E"   "D"   "Q"  
x "Q"  "C"  "K"  "F"  "L"  "M"  "J"  "T"  "B"  "I"   "G"   "H"   "O"   "P"   "N"   "S"   "R"   "A"   "E"   "D"    
# Diese 20 Wahlvorschläge werden nun in gleicher Stückzahl ausgedruckt und verteilt

# Bei online Wahlen lässt man einen Counter mitlaufen oder noch einfacher, man wirft
# alle 3 Sekunden den nächsten Vorschlag aus
r[ floor(as.numeric(format(Sys.time(), "%S"))/3), ]
[1] "J" "T" "B" "I" "G" "H" "O" "P" "N" "S" "R" "A" "E" "D" "Q" "C" "K" "F" "L" "M"

Es sollte also nicht all zu schwer sein, faire Wahlen durchzuführen.

 

CC-BY-NC Science Surf
accessed 24.11.2025