jotbehttps://jotbe.io/2023-11-18T23:40:00+01:00Testing POSSE - Publish (on your) Own Site, Syndicate Elsewhere2023-11-18T23:40:00+01:002023-11-18T23:40:00+01:00Jan Beilicketag:jotbe.io,2023-11-18:/blog/2023/11/testing-posse/I am tinkering with the idea of POSSE and want to share my blog posts also on Mastodon. What do you think about it?<hr>
<!--
<aside class="m-block m-default" markdown="1">
In this article I will not go into details about how to install Manjaro from an SD card to eMMC as the [Pinebook Pro](https://www.pine64.org/pinebook-pro/) comes with Manjaro Plasma/KDE edition preinstalled. You should know though that I did a clean install with [Manjaro ARM XFCE edition](https://wiki.pine64.org/wiki/Pinebook_Pro_Software_Release#Manjaro_ARM_with_GTK_.28XFCE.29_desktop_.5BmicroSD_.2F_eMMC_Boot.5D) using [manjaro-arm-flasher](https://forum.manjaro.org/t/manjaro-arm-20-08-released/1516). Please keep that in mind when applying this guide, your mileage may vary.
</aside>
-->
<h2 id="how-does-this-work">How does this work?</h2>
<p>I am using <a href="https://feed2toot.readthedocs.io/">feed2toot</a> to process my RSS feed and publish new posts to Mastodon. To not spam Mastodon with old articles, I have added old posts to the feed2toot cache.</p>
<h2 id="whats-posse">What's POSSE?</h2>
<p>The <a href="https://indieweb.org/POSSE">POSSE IndieWeb</a> website has you covered: The basic idea is to post your thoughts on your own site and then publish copies of it together with links back to your site on e.g. social media. It's cross-posting at the end but with your own site as the single source. The benefit is that you still have your content if a third party platform is no more or you don't want to use it anymore.</p>
<h2 id="what-about-a-posts-elsewhere">What about a "posts elsewhere"?</h2>
<p>"Posts elsewhere" is supposed to be a section usually under a blog post which lists the distributed copies or references, e.g. on the Fediverse, where readers can go and interact with. </p>
<p>Something I am going to look into for sure but let's start with posting to Mastodon first.</p>rC3: Ein paar Buchempfehlungen der Privacy Week2022-01-05T23:00:00+01:002022-01-05T23:00:00+01:00Jan Beilicketag:jotbe.io,2022-01-05:/blog/2022/01/rc3-nowhere-privacy-week-book-recommendations/index.de.html<p>Auf der <a href="https://links.rc3.world/">remote Chaos Experience (rC3)</a> bin ich in der Pixel-Heimat der <a href="https://privacyweek.at/">PrivacyWeek</a> über viele für mich neue Buchempfehlungen gestolpert:</p>
<ul>
<li><a href="https://www.diogenes.ch/leser/titel/george-orwell/der-weg-nach-wigan-pier-9783257602517.html">Der Weg nach Wigan Pier</a>, George Orwell </li>
<li><a href="https://janinaloh.de/beispiel-seite/roboterethik-robot-ethics/">Roboterethik</a>, Janina Loh</li>
<li><a href="https://www.gmeiner-verlag.de/buecher/titel/toedlicher-crash.html">Tödlicher Crash: Kriminalroman</a>, <a href="https://shroombab.at/">Barbara Wimmer</a></li>
<li><a href="https://shop.digitalcourage.de/smartlies.html">SMART LIES: ALLES SMART?</a> , <a href="https://shroombab.at/">Barbara Wimmer</a></li>
<li><a href="https://link.springer.com/book/10.1007/978-3-658-08719-7">Informantenschutz: Ethische, rechtliche und technische Praxis in Journalismus und Organisationskommunikation (Journalistische Praxis)</a>, <a href="https://www.welchering.de/">Peter Welchering</a> </li>
<li><a href="https://link.springer.com/book/10.1007/978-3-658-30977-0">Digitale Recherche: Verifikation und Fact Checking (essentials)</a>, <a href="https://www.welchering.de/">Peter Welchering</a> </li>
<li><a href="https://laurakalbag.com/book/">Accessibility for Everyone</a>, Laura Kalbag </li>
<li><a href="https://shop.digitalcourage.de/buch-hilfe-ich-habe-meine-privatsphaere-aufgegeben.html">Hilfe, ich habe meine Privatsphäre aufgegeben!</a>, <a href="https://shroombab.at/">Barbara Wimmer</a> </li>
</ul>rC3 NOW/HERE2022-01-05T22:00:00+01:002022-01-05T22:00:00+01:00Jan Beilicketag:jotbe.io,2022-01-05:/blog/2022/01/rc3-nowhere/<p>As we still struggle with the Coronavirus pandemic, the regular <a href="https://en.wikipedia.org/wiki/Chaos_Communication_Congress">Chaos
Communication Congress</a> at the end of 2021 could not take place on-site again, hence the need for yet another <a href="https://links.rc3.world/">remote Chaos Experience</a> (rC3),
themed “NOW/HERE”. I will provide a brief summary of what the
event was about and recommend a couple of talks that I’ve watched. In
further articles, I plan to share my impressions and highlights of
the 2D world.</p>
<section id="what-is-the-remote-chaos-experience">
<h2>What is the remote Chaos Experience?</h2>
<div class="m-row">
<div class="m-col-m-2">
<img alt="rC3 logo" class="m-image" src="https://jotbe.io/img/rc3-nowhere/RC3_PressKit_NOWHERE_Logo_150x150px_web.png" />
</div>
<div class="m-col-m-10">
Held almost entirely online, the <a href="https://links.rc3.world/">remote Chaos Experience</a>, or just rC3,
is a four-day virtual and distributed non-commercial congress with
talks, discussions, workshops, tinkering, and socialising. The event is
organized by the <a href="https://www.ccc.de/">Chaos Computer Club</a> and made possible through
tremendous work and contributions of hundreds of volunteers.</div>
</div>
<div class="aspect-ratio" style="margin-top: 2rem">
<iframe width="100%" height="450" src="https://media.ccc.de/v/rc3-2021-trailer/oembed" frameborder="0" allowfullscreen></iframe>
</div><section id="talks-free">
<h3>Talks (free)</h3>
<p>Over <a href="https://media.ccc.de/c/rc3-2021/rc3-2021">240 permanently public and free-of-charge
talks</a> were either
pre-recorded or held live in various distributed locations, in dedicated
studios provided by local hackspaces/<a href="https://www.ccc.de/en/club/erfas">CCC
Erfas</a>, or entirely remote wherever
a speaker was. A talk usually ended with a live Q&A, even for
pre-recorded content. Various topics were covered, e.g. IT security,
privacy, politics/society, the Coronavirus pandemic, sustainabilty, and even
<a href="https://media.ccc.de/c/rc3-2021/Chaosstudio%20Hamburg%20-%20Fascinating%20Astronomy">astronomy</a>.</p>
<p>The talks at Chaos events commonly address a diverse
audience, some talks are quite high-level and easy to follow for people
who are not very experienced with computers or technology in general,
others might lead you into a rabbit hole, of IT or science machine room
and require more effort or experience/knowledge in that field to follow.</p>
<div class="m-row">
<div class="m-col-m-8">
<p>Many talks (live or pre-recorded) have been simultaneously interpreted (at least to German and English) and often provide subtitles. Just have a look at the options in the control panel of the video player and select the source and captions.</p>
<p>A dedicated app to watch Chaos talks on mobile devices or the TV is <a href="https://github.com/NiciDieNase/chaosflix">Chaosflix</a>:</p>
<ul>
<li><a href="https://play.google.com/store/apps/details?id=de.nicidienase.chaosflix&hl=en_US">Chaosflix for Android</a> - unfortunately Chaosflix is not available on F-Droid yet, <a href="https://github.com/NiciDieNase/chaosflix/issues/18">maybe someone can help?</a></li>
<li><a href="https://www.amazon.com/gp/product/B06Y3GYYGB">Chaosflix for Amazon Fire TV</a></li>
</ul>
</div>
<div class="m-col-m-4">
<img alt="Image of the video player controls with caption selector (CC icon) and source selector (cog wheel icon)" class="m-image" src="https://jotbe.io/img/rc3-nowhere/media-ccc-de-source-selector.png" />
</div>
</div>
<p>Some recommended talks that I've watched (in parentheses the OV language):</p>
<ul>
<li><a href="https://media.ccc.de/v/rc3-2021-chaoszone-295-rebuilding-landkr">Rebuilding Landkreis Anhalt-Bitterfeld (after a ransomware
attack)</a>
(DE)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-xhain-278-deine-software-die-si">Deine Software, die Sicherheitslücken und
ich</a>
(DE)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-cwtv-272-listen-to-your-heart-s">Listen to Your Heart: Security and Privacy of Implantable Cardio
Foo</a>
(EN)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-chaosstudiohamburg-361-hinter-den-kulissen-des-pnv-2-0">Hinter den Kulissen des ÖPNV
2.0</a>
(DE)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-chaosstudiohamburg-414-auf-der-suche-nach-einer-neuen-erde">Auf der Suche nach einer neuen
Erde</a>
(DE)</li>
<li><a href="https://streaming.media.ccc.de/rc3/relive/410">Catching NSO Group’s Pegasus
spyware</a> (EN)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-cwtv-303-math-for-hackers">Math for
hackers</a>
(EN)</li>
<li><a href="https://streaming.media.ccc.de/rc3/relive/388">The Covid19-Diaries (2nd edition) – Erlebnisse aus Wissenschaft,
Medizin &
Aktivismus</a> (DE)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-chaosstudiohamburg-378-warum-personalisierte-werbung-verboten-werden-muss">Warum personalisierte Werbung verboten werden
muss</a>
(DE)</li>
<li><a href="https://streaming.media.ccc.de/rc3/relive/121">Digitale Souveränität nur mit Freier
Software!</a> (DE)</li>
<li><a href="https://streaming.media.ccc.de/rc3/relive/229">10 Mio€ für Open Source - jedes
Jahr</a>(DE)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-chaoszone-274-software-architec">Software Architecture 101 - A Software Architecture Primer for
Hackers and
Makers</a>
(EN)</li>
<li><a href="https://streaming.media.ccc.de/rc3/relive/247">Hacking Containers, Kubernetes and
Clouds</a> (EN)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-cwtv-228-lets-review-code-toget">Let’s review code
together</a>
(DE)</li>
<li><a href="https://streaming.media.ccc.de/rc3/relive/202">IT-Security Professionals - what are they actually
doing?</a> (DE)</li>
<li><a href="https://streaming.media.ccc.de/rc3/relive/446">Namensauflösung im Internet - ein neues
Geschäftsmodell?</a>
(DE)</li>
<li><a href="https://streaming.media.ccc.de/rc3/relive/287">Waldgärten - mit resilienten Systemen gegen die
Klimakrise</a> (DE)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-chaoszone-489-careables-online">Careables Online Exhibition - See you in
Singapore!</a>
(EN)</li>
<li><a href="https://media.ccc.de/v/rc3-2021-chaosstudiohamburg-475-towards-a-more-trustworthy-tor-network">Towards a more Trustworthy Tor
Network</a>
(EN)</li>
</ul>
</section>
<section id="rc3-world-supporter-ticket">
<h3>rC3 World (supporter ticket)</h3>
<p>The rC3 World, a self-hosted 2D adventure based on <a href="https://workadventu.re/">WorkAdventure</a> with
islands and villages, gave assemblies and visitors the opportunity to
stroll around, explore lovely curated maps, run into people and
socialise through ad-hoc video chats as well as provide or attend self-organized sessions.
The maps were provided by
assemblies and offered e.g. fireplaces, ball pits, and workshop rooms
with video conferencing and whiteboards, interactive stories, libraries,
museums, even various games, treasure hunts, and rallies.</p>
<div class="aspect-ratio" style="margin-bottom: 1rem">
<iframe src="https://press.rc3.world/world-footage/lounge.mp4" frameborder="0" allowfullscreen></iframe>
</div><p>Through all these possibilities the participants were able to learn new
things, nurture critical thinking, have exciting and fun discussions, a
good time with like-minded creatures - and they could
collect hundreds of badges!</p>
<p>The maps were updated, improved, and fixed
during the rC3 and the fellow visitor’s experience could change
dynamically. At night, the maps turned to night mode as well and on New
Year’s Eve: Fireworks! Way better for the environment than the real one
anyway. ;)</p>
<p>If you would like to know more about the current state of WorkAdventure,
I recommend the talk <a href="https://streaming.media.ccc.de/rc3/relive/499">Hacking WorkAdventure for fun and profit</a> with the
developer of WA.</p>
<p>If you are interested in the overall infrastructure, facts and figures
of the rC3, I recommend to watch the <a href="https://streaming.media.ccc.de/rc3/relive/910">Infrastructure Review</a> or
read this <a href="https://www.heise.de/news/Hackerkonferenz-rC3-Ueber-300-Gigabit-Bandbreite-200-Terabyte-fuer-Streaming-6315435.html">article on Heise</a> (DE).</p>
</section>
<section id="what-else">
<h3>What else?</h3>
<ul>
<li>The “organized Chaos” community provided various ways to communicate
and participate, ask questions, either through IRC, Mastodon,
Twitter, Rocket.Chat. Signal angels kept eyes on the channels,
collected feedback and questions.</li>
<li>Participants could call each other through SIP and sometimes even
GSM, made possible by the awesome
<a href="https://eventphone.de">Eventphone</a> POC (Phone Operation Center).</li>
<li><a href="https://links.rc3.world/">More resources!</a></li>
</ul>
</section>
</section>
Support Freedom, Privacy and Informational Self-Determination (2021)2021-12-19T21:30:00+01:002021-12-19T21:30:00+01:00Jan Beilicketag:jotbe.io,2021-12-19:/blog/2021/12/support-freedom-privacy-and-informational-self-determination-2021/<p>(Deutsch siehe unten)</p>
<p>Every year we have several ways to donate our hard-earned money for charity. We hope to help children in the third world, support efforts to treat deceases or rescue the wildlife. Well, or we just spend it for lots of socks, ties, champagne and fireworks.</p>
<p>This year again, I am going to support one or more of the following organizations/projects in their effort to protect freedom, privacy, the right to informational self-determination and/or a free and open (digital) society.</p>
<p>What about you?</p>
<hr>
<p>Deutsch:</p>
<p>Jedes Jahr können wir auf vielfältigen Wegen unser hartverdientes Geld für wohltätige Zwecke spenden. Wir hoffen damit Kindern in der Dritten Welt zu helfen, unterstützen die Bemühungen Krankheiten zu heilen oder die Tierwelt zu retten. Gut, wir können es natürlich auch einfach für Socken, Schlipse, Champagner und Böller ausgeben.</p>
<p>Ich werde in diesem Jahr wieder eine oder mehrere der folgenden Organisationen/Projekte in ihrem Bestreben unterstützen, die Freiheit, Privatsphäre, das Recht auf informationelle Selbstbestimmung und/oder eine freie und offene (digitale) Gesellschaft zu bewahren und zu fördern.</p>
<p>Was ist mit dir?</p>
<ul>
<li><a href="https://edri.org/">European Digital Rights (EDRi)</a></li>
<li><a href="https://freiheitsrechte.org/">GFF – Gesellschaft für Freiheitsrechte e.V. – Wir verhelfen dem Recht zu seinem Recht</a></li>
<li><a href="https://www.wauland.de/de/">Wau Holland Stiftung</a></li>
<li><a href="https://digitalcourage.de/">Digitalcourage</a></li>
<li><a href="https://netzpolitik.org/">netzpolitik.org</a></li>
<li><a href="https://digitalegesellschaft.de/">Digitale Gesellschaft</a></li>
<li><a href="https://www.humanistische-union.de/">Humanistische Union</a></li>
<li><a href="https://www.fiff.de/about/">Forum InformatikerInnen für Frieden und gesellschaftliche Verantwortung e.V.</a></li>
<li><a href="https://noyb.eu/en/support-us">noyb.eu</a></li>
<li><a href="https://epicenter.works/">epicenter.works | Zivilgesellschaft wirkt!</a></li>
<li><a href="https://www.eff.org/">Electronic Frontier Foundation | Defending your rights in the digital world</a></li>
<li><a href="https://opencollective.com/">Open Collective - Make your community sustainable. Collect and spend money transparently.</a></li>
<li><a href="https://fsfe.org/index.de.html">FSFE - Free Software Foundation Europe</a></li>
<li><a href="https://okfn.de/">Open Knowledge Foundation</a></li>
<li><a href="https://archive.org/donate">Internet Archive</a></li>
<li><a href="https://repair.eu/">Right to Repair Europe</a></li>
<li><a href="https://sea-shepherd.de/">Sea Shepherd - Aktiver Meeresschutz Weltweit</a></li>
<li><a href="https://sosmediterranee.de/">SOS MEDITERRANEE - Seenotrettung für Schiffbrüchige</a></li>
<li><a href="https://www.sea-watch.org/">Sea-Watch e.V. · Zivile Seenotrettung an Europas Grenzen</a></li>
<li><a href="https://mission-lifeline.de/">Mission Lifeline Seenotrettung: Wir retten Menschen!</a></li>
<li><a href="https://www.cadus.org/de/">Cadus e.V. - Redefine Global Solidarity</a></li>
<li><a href="https://www.article19.org/">ARTICLE 19 - Defending freedom of expression and information.</a></li>
<li><a href="https://gnupg.org/">The GNU Privacy Guard</a></li>
<li><a href="https://signal.org/">Signal - Speak Freely</a></li>
<li><a href="https://www.torproject.org/">Tor Project | Anonymity Online</a></li>
<li><a href="https://www.freebsd.org/">The FreeBSD Project</a></li>
<li><a href="https://manjaro.org/">Manjaro Linux</a></li>
<li><a href="https://archlinux.org/donate">Arch Linux</a></li>
<li><a href="https://dietpi.com/">DietPi - Lightweight justice for your SBC!</a></li>
</ul>Recommendations for divers after their COVID-19 vaccination2021-04-17T15:30:00+02:002021-04-17T15:30:00+02:00Jan Beilicketag:jotbe.io,2021-04-17:/blog/2021/04/about-resuming-diving-after-vaccination-against-covid-19/The vaccination against COVID-19 might have some side effects and you may want to consider some precautions before resuming diving after receiving the shot.<p>The Belgian Society for Diving and Hyperbaric Medicine (<a href="http://www.sbmhs.be/">SBMHS-BVOOG</a>) provided some recommendations which are currently being evaluated by <a href="http://www.eubs.org/">EUBS</a>, <a href="http://www.echm.org/">ECHM</a> and <a href="https://www.daneurope.org/home">DAN Europe</a>.</p>
<p>Here the summary of the recommendations, for the full version, please have a look at the <a href="#references">sources</a> below.</p>
<ol>
<li>Get vaccinated as soon as vaccines are available to help contain and hopefully end the pandemic.</li>
<li>After each dose of the vaccine, wait a minimum of 7 days before you dive with compressed gas or by breath-holding (Freediving).</li>
<li>Extend this interval to 14 days<ol>
<li>if you have side effect lasting more than 48 hours,</li>
<li>if you have personal health risk factors such as, but not limited to:<ol>
<li>excessive body weight</li>
<li>chronic metabolic disease (incl. diabetes)</li>
<li>smoking</li>
<li>use medication which may increase the risk of thromboembolic incidents (incl. oral contraceptives)</li>
</ol>
</li>
<li>if you want to dive requiring special technical skills or exceed the limits of recreational diving (technical diving, deep decompression diving)</li>
</ol>
</li>
<li>Visit a general practitioner in case of any side effects of the vaccination persisting more than 48 hours.</li>
<li>If you experience any symptoms, possibly related to diving disease, that appeared after low-risk dives in the 7-day period after your COVID-19 vaccination, it is advised that you consult with a diving medicine specialist. It might be useful to notify the event to a central diving safety organization such as DAN Europe Medical Division (<a href="https://www.daneurope.org/readarticle?p_p_id=web_content_reading&p_p_lifecycle=0&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&p_r_p_-1523133153_groupId=10103&p_r_p_-1523133153_articleId=14891675&p_r_p_-1523133153_articleVersion=1.0&p_r_p_-1523133153_articleType=General+Web+Content&p_r_p_-1523133153_commaCategories=NEWS&p_r_p_-1523133153_commaTags=&p_r_p_-1523133153_templateId=5993844">see this article for a mail address</a>). Get in contact with local scientific societies for diving medicine who may help you in that regard.</li>
<li>Vaccinated or not, it is possible that you transmit the SARS-CoV-2 virus to other people, hence continue to apply the protective measures such as<ul>
<li>keep the distance, </li>
<li>wear a mask,</li>
<li>hygiene for you and your equipment</li>
</ul>
</li>
</ol>
<h2 id="sourcesreferences">Sources/references<a href="#references"></a></h2>
<ul>
<li>Position of the SBMHS-BVOOG on diving after COVID-19 vaccination, PDF (<a href="http://www.sbmhs.be/2021%200326%20SBMHS%20-%20Vaccination%20COVID%20ENG%20final.pdf">EN</a>, <a href="http://www.sbmhs.be/2021%200326%20SBMHS%20-%20Vaccination%20COVID%20FR%20final.pdf">FR</a>, <a href="http://www.sbmhs.be/2021%200326%20SBMHS%20-%20Vaccination%20COVID%20NL%20final.pdf">NL</a>)</li>
<li>DAN Europe: <a href="https://www.daneurope.org/readarticle?p_p_id=web_content_reading&p_p_lifecycle=0&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&p_r_p_-1523133153_groupId=10103&p_r_p_-1523133153_articleId=14891675&p_r_p_-1523133153_articleVersion=1.0&p_r_p_-1523133153_articleType=General+Web+Content&p_r_p_-1523133153_commaCategories=NEWS&p_r_p_-1523133153_commaTags=&p_r_p_-1523133153_templateId=5993844">Diving After Your COVID-19 Vaccination: Guidelines</a></li>
</ul>OpenWrt router with Tor, SSH as hidden service2021-01-20T00:10:00+01:002021-01-20T00:10:00+01:00Jan Beilicketag:jotbe.io,2021-01-20:/blog/2021/01/openwrt-router-with-tor/<!--
<aside class="m-block m-default" markdown="1">
In this article I will not go into details about how to install Manjaro from an SD card to eMMC as the [Pinebook Pro](https://www.pine64.org/pinebook-pro/) comes with Manjaro Plasma/KDE edition preinstalled. You should know though that I did a clean install with [Manjaro ARM XFCE edition](https://wiki.pine64.org/wiki/Pinebook_Pro_Software_Release#Manjaro_ARM_with_GTK_.28XFCE.29_desktop_.5BmicroSD_.2F_eMMC_Boot.5D) using [manjaro-arm-flasher](https://forum.manjaro.org/t/manjaro-arm-20-08-released/1516). Please keep that in mind when applying this guide, your mileage may vary.
</aside>
-->
<h2 id="prerequisites">Prerequisites</h2>
<p>You will need a <strong>router with the open source firmware <a href="https://openwrt.org/start">OpenWrt</a></strong> installed (tested with OpenWrt 18.06.1).</p>
<p>If you don't want to flash a router with OpenWrt yourself or don't have a compatible router, check out e.g. <a href="https://www.gl-inet.com/">GL.iNet routers</a>. Their devices are well engineered, privacy-friendly, powered by OpenWrt and come in various form factors and flavours. The devices have built-in support for the VPNs <a href="https://www.wireguard.com/">Wireguard</a> and <a href="https://openvpn.net/">OpenVPN</a> or even Tor (which support is declared as beta and didn't work with my devices).</p>
<p><strong>SSH access</strong> has to be working (see: <a href="https://openwrt.org/docs/guide-quick-start/sshadministration">Guide for newcomers</a>) and the <strong>router must have internet access</strong>.</p>
<h2 id="install-required-packages">Install required packages</h2>
<ul>
<li>tor (tested with v0.4.2.7-1)</li>
<li>tor-geoip (tested with v0.4.2.7-1)</li>
</ul>
<p>If you have a GL-AR300M, these packages are already installed.</p>
<h3 id="via-luci">Via LuCi</h3>
<ul>
<li>Search and install the packages through <code>System > Software</code>.</li>
</ul>
<h3 id="via-clissh">Via CLI/SSH</h3>
<div class="highlight"><pre><span></span><code><span class="err">opkg update</span>
<span class="err">opkg install tor tor-geoip</span>
</code></pre></div>
<h2 id="configure-tor">Configure Tor</h2>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@GL</span><span class="o">-</span><span class="nl">AR300M</span><span class="p">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="n">mkdir</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="mi">0700</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="k">data</span><span class="w"> </span><span class="o">/</span><span class="nf">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">tor</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">hidden_service_ssh</span><span class="w"></span>
<span class="n">root</span><span class="nv">@GL</span><span class="o">-</span><span class="nl">AR300M</span><span class="p">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="n">chown</span><span class="w"> </span><span class="nl">tor</span><span class="p">:</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="k">data</span><span class="w"> </span><span class="o">/</span><span class="nf">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">tor</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">hidden_service_ssh</span><span class="w"></span>
<span class="n">root</span><span class="nv">@GL</span><span class="o">-</span><span class="nl">AR300M</span><span class="p">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="n">cat</span><span class="w"> </span><span class="o"><<</span><span class="n">EOF</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">torrc</span><span class="w"></span>
<span class="n">RunAsDaemon</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="n">AllowUnverifiedNodes</span><span class="w"> </span><span class="n">middle</span><span class="p">,</span><span class="n">rendezvous</span><span class="w"></span>
<span class="nf">Log</span><span class="w"> </span><span class="n">notice</span><span class="w"> </span><span class="n">syslog</span><span class="w"></span>
<span class="err">##</span><span class="w"> </span><span class="k">Only</span><span class="w"> </span><span class="n">run</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">never</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">relay</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="k">exit</span><span class="w"></span>
<span class="n">ClientOnly</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="n">DataDirectory</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="k">data</span><span class="o">/</span><span class="w"></span>
<span class="n">HiddenServiceDir</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">hidden_service_ssh</span><span class="o">/</span><span class="w"></span>
<span class="n">HiddenServicePort</span><span class="w"> </span><span class="mi">22</span><span class="w"> </span><span class="mf">127.0.0.1</span><span class="err">:</span><span class="mi">22</span><span class="w"></span>
<span class="k">User</span><span class="w"> </span><span class="n">tor</span><span class="w"></span>
<span class="n">SocksPort</span><span class="w"> </span><span class="mi">9050</span><span class="w"></span>
<span class="n">SocksPort</span><span class="w"> </span><span class="mf">192.168.8.1</span><span class="err">:</span><span class="mi">9050</span><span class="w"></span>
<span class="n">SocksPolicy</span><span class="w"> </span><span class="n">accept</span><span class="w"> </span><span class="mf">127.0.0.1</span><span class="o">/</span><span class="mi">32</span><span class="w"></span>
<span class="n">SocksPolicy</span><span class="w"> </span><span class="n">accept</span><span class="w"> </span><span class="mf">192.168.8.0</span><span class="o">/</span><span class="mi">24</span><span class="w"></span>
<span class="n">SocksPolicy</span><span class="w"> </span><span class="n">reject</span><span class="w"> </span><span class="o">*</span><span class="w"></span>
<span class="n">#AutomapHostsSuffixes</span><span class="w"> </span><span class="p">.</span><span class="k">exit</span><span class="p">,.</span><span class="n">onion</span><span class="w"></span>
<span class="n">AutomapHostsSuffixes</span><span class="w"> </span><span class="ss">"."</span><span class="w"></span>
<span class="n">AutomapHostsOnResolve</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="n">VirtualAddrNetworkIPv4</span><span class="w"> </span><span class="mf">10.192.0.0</span><span class="o">/</span><span class="mi">10</span><span class="w"></span>
<span class="n">TransPort</span><span class="w"> </span><span class="mf">192.168.8.1</span><span class="err">:</span><span class="mi">9040</span><span class="w"></span>
<span class="n">DNSPort</span><span class="w"> </span><span class="mf">192.168.8.1</span><span class="err">:</span><span class="mi">9053</span><span class="w"></span>
<span class="n">TruncateLogFile</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="n">LogMessageDomains</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="nf">Log</span><span class="w"> </span><span class="o">[</span><span class="n">control</span><span class="o">]</span><span class="n">notice</span><span class="w"> </span><span class="k">file</span><span class="w"> </span><span class="o">/</span><span class="nf">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">control</span><span class="p">.</span><span class="nf">log</span><span class="w"></span>
<span class="n">StrictNodes</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="n">ExitNodes</span><span class="w"> </span><span class="err">{</span><span class="k">IS</span><span class="err">}</span><span class="w"></span>
<span class="n">EOF</span><span class="w"></span>
</code></pre></div>
<!-- Not working
Add SSH as hidden onion service:
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@GL</span><span class="o">-</span><span class="nl">AR300M</span><span class="p">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="n">mkdir</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="mi">0700</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">hidden_service_ssh</span><span class="w"></span>
<span class="n">root</span><span class="nv">@GL</span><span class="o">-</span><span class="nl">AR300M</span><span class="p">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="n">chown</span><span class="w"> </span><span class="nl">tor</span><span class="p">:</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">hidden_service_ssh</span><span class="w"></span>
<span class="n">root</span><span class="nv">@GL</span><span class="o">-</span><span class="nl">AR300M</span><span class="p">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="n">cat</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">EOF</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">onion</span><span class="o">-</span><span class="n">ssh</span><span class="w"></span>
<span class="n">HiddenServiceDir</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">tor</span><span class="o">/</span><span class="n">hidden_service_ssh</span><span class="w"></span>
<span class="n">HiddenServicePort</span><span class="w"> </span><span class="mi">22</span><span class="w"> </span><span class="mf">127.0.0.1</span><span class="err">:</span><span class="mi">22</span><span class="w"></span>
<span class="n">EOF</span><span class="w"></span>
<span class="n">uci</span><span class="w"> </span><span class="n">del_list</span><span class="w"> </span><span class="n">tor</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">tail_include</span><span class="o">=</span><span class="ss">"/etc/tor/onion_ssh"</span><span class="w"></span>
<span class="n">uci</span><span class="w"> </span><span class="n">add_list</span><span class="w"> </span><span class="n">tor</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">tail_include</span><span class="o">=</span><span class="ss">"/etc/tor/onion_ssh"</span><span class="w"></span>
<span class="n">uci</span><span class="w"> </span><span class="k">commit</span><span class="w"> </span><span class="n">tor</span><span class="w"></span>
<span class="n">service</span><span class="w"> </span><span class="n">tor</span><span class="w"> </span><span class="n">restart</span><span class="w"></span>
</code></pre></div>
-->
<p>Create/Replace service script <code>/etc/init.d/tor</code> (changes the user to <code>tor</code>):</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39</pre></div></td><td class="code"><div class="highlight"><pre><span></span><code><span class="s s-Atom">#</span><span class="p">!</span><span class="o">/</span><span class="s s-Atom">bin</span><span class="o">/</span><span class="s s-Atom">sh</span> <span class="o">/</span><span class="s s-Atom">etc</span><span class="o">/</span><span class="s s-Atom">rc</span><span class="p">.</span><span class="s s-Atom">common</span>
<span class="s s-Atom">#</span> <span class="nv">Copyright</span> <span class="p">(</span><span class="nv">C</span><span class="p">)</span> <span class="mi">2006</span><span class="o">-</span><span class="mi">2011</span> <span class="nv">OpenWrt</span><span class="p">.</span><span class="s s-Atom">org</span>
<span class="nv">START</span><span class="o">=</span><span class="mi">50</span>
<span class="nv">STOP</span><span class="o">=</span><span class="mi">50</span>
<span class="nv">USE_PROCD</span><span class="o">=</span><span class="mi">1</span>
<span class="nv">SERVICE_USER</span><span class="o">=</span><span class="s s-Atom">tor</span>
<span class="nv">SERVICE_GROUP</span><span class="o">=</span><span class="s s-Atom">tor</span>
<span class="nf">start_service</span><span class="p">()</span> <span class="p">{</span>
<span class="s s-Atom">local</span> <span class="s s-Atom">enable=</span><span class="err">$</span><span class="p">(</span><span class="s s-Atom">uci</span> <span class="s s-Atom">get</span> <span class="s s-Atom">tor</span><span class="p">.</span><span class="s s-Atom">global</span><span class="p">.</span><span class="s s-Atom">enable</span><span class="p">)</span>
<span class="p">[</span> <span class="err">$</span><span class="s s-Atom">enable</span> <span class="p">!</span><span class="o">=</span> <span class="s2">"1"</span> <span class="p">]</span> <span class="s s-Atom">&&</span> <span class="s s-Atom">exit</span> <span class="mi">0</span>
<span class="s s-Atom">rm</span> <span class="o">-</span><span class="s s-Atom">rf</span> <span class="o">/</span><span class="s s-Atom">var</span><span class="o">/</span><span class="s s-Atom">lib</span><span class="o">/</span><span class="s s-Atom">tor</span><span class="cm">/*</span>
<span class="cm"> [ -f /var/run/tor.pid ] || {</span>
<span class="cm"> touch /var/run/tor.pid</span>
<span class="cm"> chown $SERVICE_USER:$SERVICE_GROUP /var/run/tor.pid</span>
<span class="cm"> }</span>
<span class="cm"> [ -d /var/lib/tor ] || {</span>
<span class="cm"> mkdir -m 0755 -p /var/lib/tor</span>
<span class="cm"> chmod 0700 /var/lib/tor</span>
<span class="cm"> chown $SERVICE_USER:$SERVICE_GROUP /var/lib/tor</span>
<span class="cm"> }</span>
<span class="cm"> [ -d /var/log/tor ] || {</span>
<span class="cm"> mkdir -m 0755 -p /var/log/tor</span>
<span class="cm"> chown $SERVICE_USER:$SERVICE_GROUP /var/log/tor</span>
<span class="cm"> }</span>
<span class="cm"> [ -f /var/lib/tor/control.log ] && {</span>
<span class="cm"> rm /var/lib/tor/control.log</span>
<span class="cm"> }</span>
<span class="cm"> procd_open_instance</span>
<span class="cm"> procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-0}</span>
<span class="cm"> procd_set_param stderr 1</span>
<span class="cm"> procd_set_param command /usr/sbin/tor --runasdaemon 0</span>
<span class="cm"> procd_close_instance</span>
<span class="cm">}</span>
</code></pre></div>
</td></tr></table>
<p>Ensure basic UCI Tor config in <code>/etc/config/tor</code>:</p>
<div class="highlight"><pre><span></span><code><span class="err">config global 'global'</span>
<span class="err"> option country 'CH'</span>
<span class="err"> option enable '1'</span>
</code></pre></div>
<p>Ensure that <code>/etc/config/firewall</code> contains:</p>
<div class="highlight"><pre><span></span><code><span class="n">config</span> <span class="k">rule</span> <span class="s1">'tor_dhcp'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Allow-Tor-DHCP'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'udp'</span>
<span class="k">option</span> <span class="n">dest_port</span> <span class="s1">'67'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'ACCEPT'</span>
<span class="n">config</span> <span class="k">rule</span> <span class="s1">'tor_dns'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Allow-Tor-DNS'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'udp'</span>
<span class="k">option</span> <span class="n">dest_port</span> <span class="s1">'9053'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'ACCEPT'</span>
<span class="n">config</span> <span class="k">rule</span> <span class="s1">'tor_tras'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Allow-Tor-Transparent'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'tcp'</span>
<span class="k">option</span> <span class="n">dest_port</span> <span class="s1">'9040'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'ACCEPT'</span>
<span class="n">config</span> <span class="k">rule</span> <span class="s1">'tor_socks'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Allow-Tor-SOCKS'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'tcp'</span>
<span class="k">option</span> <span class="n">dest_port</span> <span class="s1">'9050'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'ACCEPT'</span>
<span class="n">config</span> <span class="n">redirect</span> <span class="s1">'tor_allow_http'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Allow access http'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">src_ip</span> <span class="s1">'192.168.8.1/24'</span>
<span class="k">option</span> <span class="n">src_dip</span> <span class="s1">'192.168.8.1'</span>
<span class="k">option</span> <span class="n">src_dport</span> <span class="s1">'80'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'tcp'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'ACCEPT'</span>
<span class="n">config</span> <span class="n">redirect</span> <span class="s1">'tor_allow_ssh'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Allow access ssh'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">src_ip</span> <span class="s1">'192.168.8.1/24'</span>
<span class="k">option</span> <span class="n">src_dip</span> <span class="s1">'192.168.8.1'</span>
<span class="k">option</span> <span class="n">src_dport</span> <span class="s1">'22'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'tcp'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'ACCEPT'</span>
<span class="n">config</span> <span class="n">redirect</span> <span class="s1">'tor_allow'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Allow access tor domain'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">src_dport</span> <span class="s1">'9050'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'tcp'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'ACCEPT'</span>
<span class="n">config</span> <span class="n">redirect</span> <span class="s1">'dns_int'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Intercept-DNS'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">src_dport</span> <span class="s1">'53'</span>
<span class="k">option</span> <span class="n">dest_port</span> <span class="s1">'9053'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'udp'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'DNAT'</span>
<span class="n">config</span> <span class="n">redirect</span> <span class="s1">'tcp_int'</span>
<span class="k">option</span> <span class="n">name</span> <span class="s1">'Intercept-TCP'</span>
<span class="k">option</span> <span class="n">src</span> <span class="s1">'lan'</span>
<span class="k">option</span> <span class="n">dest_port</span> <span class="s1">'9040'</span>
<span class="k">option</span> <span class="n">family</span> <span class="s1">'ipv4'</span>
<span class="k">option</span> <span class="n">proto</span> <span class="s1">'tcp'</span>
<span class="k">option</span> <span class="n">extra</span> <span class="s1">'--syn'</span>
<span class="k">option</span> <span class="n">target</span> <span class="s1">'DNAT'</span>
</code></pre></div>
<p>If you have a GL.iNet router, use this slightly modified custom firewall script:</p>
<div class="highlight"><pre><span></span><code><span class="n">root</span><span class="nv">@GL</span><span class="o">-</span><span class="nl">AR300M</span><span class="p">:</span><span class="o">~</span><span class="err">#</span><span class="w"> </span><span class="n">cat</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">firewall</span><span class="p">.</span><span class="k">user</span><span class="w"></span>
<span class="n">force_dns</span><span class="p">()</span><span class="w"> </span><span class="err">{</span><span class="w"></span>
<span class="w"> </span><span class="err">#</span><span class="w"> </span><span class="n">lanip</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">ifconfig</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">|</span><span class="n">sed</span><span class="w"> </span><span class="o">-</span><span class="n">n</span><span class="w"> </span><span class="s1">'s/.*dr:\(.*\) Bc.*/\1/p'</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">lanip</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">uci</span><span class="w"> </span><span class="k">get</span><span class="w"> </span><span class="n">network</span><span class="p">.</span><span class="n">lan</span><span class="p">.</span><span class="n">ipaddr</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">tor</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">ps</span><span class="o">|</span><span class="n">grep</span><span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">sbin</span><span class="o">/</span><span class="n">tor</span><span class="o">|</span><span class="n">grep</span><span class="w"> </span><span class="o">-</span><span class="n">v</span><span class="w"> </span><span class="n">grep</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="o">[</span><span class="n"> "$1" = "add" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="err">{</span><span class="w"></span>
<span class="w"> </span><span class="n">ip</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">uci</span><span class="w"> </span><span class="k">get</span><span class="w"> </span><span class="n">glconfig</span><span class="p">.</span><span class="k">general</span><span class="p">.</span><span class="n">ipaddr</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="o">[</span><span class="n"> -z "$ip" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">ip</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">uci</span><span class="w"> </span><span class="k">get</span><span class="w"> </span><span class="n">network</span><span class="p">.</span><span class="n">lan</span><span class="p">.</span><span class="n">ipaddr</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">D</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $ip</span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">D</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $ip</span>
<span class="w"> </span><span class="n">uci</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="n">glconfig</span><span class="p">.</span><span class="k">general</span><span class="p">.</span><span class="n">ipaddr</span><span class="o">=</span><span class="err">$</span><span class="n">lanip</span><span class="w"></span>
<span class="w"> </span><span class="n">uci</span><span class="w"> </span><span class="k">commit</span><span class="w"> </span><span class="n">glconfig</span><span class="w"></span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">C</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $lanip</span>
<span class="w"> </span><span class="o">[</span><span class="n"> ! "$?" = "0" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">I</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $lanip</span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">C</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $lanip</span>
<span class="w"> </span><span class="o">[</span><span class="n"> ! "$?" = "0" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">I</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $lanip</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="n"> -n "$tor" </span><span class="o">]</span><span class="p">;</span><span class="k">then</span><span class="w"></span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">C</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 53 -j REDIRECT --to-ports 9053</span>
<span class="w"> </span><span class="o">[</span><span class="n"> ! "$?" = "0" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">I</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 53 -j REDIRECT --to-ports 9053</span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">C</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 9050 -j REDIRECT --to-ports 9050</span>
<span class="w"> </span><span class="o">[</span><span class="n"> ! "$?" = "0" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">I</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 9050 -j REDIRECT --to-ports 9050</span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">C</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="c1">--dport 53 -j REDIRECT --to-ports 9053</span>
<span class="w"> </span><span class="o">[</span><span class="n"> ! "$?" = "0" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">I</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="c1">--dport 53 -j REDIRECT --to-ports 9053</span>
<span class="w"> </span><span class="n">fi</span><span class="w"></span>
<span class="w"> </span><span class="err">}</span><span class="w"></span>
<span class="w"> </span><span class="o">[</span><span class="n"> "$1" = "remove" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="err">{</span><span class="w"></span>
<span class="w"> </span><span class="n">lanip</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">uci</span><span class="w"> </span><span class="k">get</span><span class="w"> </span><span class="n">glconfig</span><span class="p">.</span><span class="k">general</span><span class="p">.</span><span class="n">ipaddr</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="o">[</span><span class="n"> -z "$lanip" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">lanip</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">uci</span><span class="w"> </span><span class="k">get</span><span class="w"> </span><span class="n">network</span><span class="p">.</span><span class="n">lan</span><span class="p">.</span><span class="n">ipaddr</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">C</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $lanip</span>
<span class="w"> </span><span class="o">[</span><span class="n"> "$?" = "0" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">D</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $lanip</span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">C</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $lanip</span>
<span class="w"> </span><span class="o">[</span><span class="n"> "$?" = "0" </span><span class="o">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">D</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-+</span><span class="w"> </span><span class="o">-</span><span class="n">s</span><span class="w"> </span><span class="mi">0</span><span class="o">/</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 53 -j DNAT --to $lanip</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="n"> -n "$tor" </span><span class="o">]</span><span class="p">;</span><span class="k">then</span><span class="w"></span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">D</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 53 -j REDIRECT --to-ports 9053</span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">D</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">udp</span><span class="w"> </span><span class="c1">--dport 53 -j REDIRECT --to-ports 9053</span>
<span class="w"> </span><span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">nat</span><span class="w"> </span><span class="o">-</span><span class="n">D</span><span class="w"> </span><span class="n">PREROUTING</span><span class="w"> </span><span class="o">-</span><span class="n">i</span><span class="w"> </span><span class="n">br</span><span class="o">-</span><span class="n">lan</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 9050 -j REDIRECT --to-ports 9050</span>
<span class="w"> </span><span class="n">fi</span><span class="w"></span>
<span class="w"> </span><span class="err">}</span><span class="w"></span>
<span class="err">}</span><span class="w"></span>
<span class="n">force</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">uci</span><span class="w"> </span><span class="k">get</span><span class="w"> </span><span class="n">glconfig</span><span class="p">.</span><span class="k">general</span><span class="p">.</span><span class="n">force_dns</span><span class="p">)</span><span class="w"></span>
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="n"> -n "$force" </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span><span class="w"></span>
<span class="w"> </span><span class="n">force_dns</span><span class="w"> </span><span class="k">add</span><span class="w"></span>
<span class="k">else</span><span class="w"></span>
<span class="w"> </span><span class="n">force_dns</span><span class="w"> </span><span class="n">remove</span><span class="w"></span>
<span class="n">fi</span><span class="w"></span>
<span class="n">gl</span><span class="o">-</span><span class="n">firewall</span><span class="w"></span>
<span class="err">#</span><span class="w"> </span><span class="n">PPTP</span><span class="w"> </span><span class="n">Passthrough</span><span class="w"></span>
<span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">raw</span><span class="w"> </span><span class="o">-</span><span class="n">D</span><span class="w"> </span><span class="k">OUTPUT</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 1723 -j CT --helper pptp</span>
<span class="n">iptables</span><span class="w"> </span><span class="o">-</span><span class="n">t</span><span class="w"> </span><span class="n">raw</span><span class="w"> </span><span class="o">-</span><span class="n">A</span><span class="w"> </span><span class="k">OUTPUT</span><span class="w"> </span><span class="o">-</span><span class="n">p</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">tcp</span><span class="w"> </span><span class="c1">--dport 1723 -j CT --helper pptp</span>
</code></pre></div>
<p>Start tor:</p>
<div class="highlight"><pre><span></span><code><span class="err">root@GL-AR300M:~# service tor start</span>
</code></pre></div>
<p>Ensure that the service is running:</p>
<div class="highlight"><pre><span></span><code><span class="err">root@GL-AR300M:~# ps -w | grep /sbin/tor | grep -v grep</span>
<span class="err">24645 tor 31804 S /usr/sbin/tor --runasdaemon 0</span>
</code></pre></div>
<p>Get hostname:</p>
<div class="highlight"><pre><span></span><code><span class="err">root@GL-AR300M:~# cat /etc/tor/hidden_service_ssh/hostname</span>
<span class="err"><tor-address>.onion</span>
</code></pre></div>
<h2 id="ssh-access-via-tor-linux">SSH access via Tor (Linux)</h2>
<ul>
<li>Install <code>tor</code></li>
<li>Start tor: <code>sudo systemctl start tor</code></li>
<li>
<p>Ensure that tor is up and running:</p>
<div class="highlight"><pre><span></span><code><span class="err">curl --socks5 127.0.0.1:9050 -s https://check.torproject.org/ | cat | grep -m 1 Congratulations | xargs</span>
</code></pre></div>
</li>
<li>
<p>Edit <code>~/.ssh/config</code>:</p>
<div class="highlight"><pre><span></span><code><span class="err">Host my-router</span>
<span class="err"> User root</span>
<span class="err"> # Use the tor address from above</span>
<span class="err"> Hostname <tor-address>.onion</span>
<span class="err"> # If you are connected to the router's default Wifi and want to test it</span>
<span class="err"> #ProxyCommand=nc -X 5 -x 192.168.8.1:9050 %h %p</span>
<span class="err"> # Use the local tor proxy</span>
<span class="err"> ProxyCommand=nc -X 5 -x 127.0.0.1:9050 %h %p</span>
</code></pre></div>
</li>
</ul>
<p>Resources that helped me:</p>
<ul>
<li>OpenWrt User Guide<ul>
<li><a href="https://openwrt.org/docs/guide-user/services/tor/client">Tor Client</a></li>
<li><a href="https://openwrt.org/docs/guide-user/services/tor/extras">Tor Extras</a></li>
</ul>
</li>
<li>Leow Kah Man: <a href="https://www.leowkahman.com/2017/04/02/tor-proxy-on-openwrt/">Tor proxy on OpenWrt</a></li>
<li><a href="https://web.archive.org/web/20190312040653/https://bettersafe.io/weaponizing-a-micro-router-for-penetration-testing/">Weaponizing a micro router for pentesting</a></li>
<li><a href="https://web.archive.org/web/20190312040359/https://bettersafe.io/adding-a-hidden-tor-ssh-service-to-a-microrouter/">Adding a hidden Tor SSH service to a micro router</a></li>
<li><a href="https://www.mikeheijmans.com/sysadmin/2014/08/12/proxy-ssh-over-socks/">Proxy SSH over SOCKS (the easy way)</a></li>
<li>General tips regarding Tor: <a href="https://failsafe.writeas.com/how-to-get-the-most-out-of-tor-in-2020">How to get the most out of Tor in 2020</a></li>
</ul>Pinebook Pro: Manjaro Linux for ARM with full-disk encryption on eMMC2020-12-06T21:00:00+01:002020-12-06T21:00:00+01:00Jan Beilicketag:jotbe.io,2020-12-06:/blog/2020/12/pinebook-pro-manjaro-full-disk-encryption-luks/The Pinebook Pro is a very nice open source low-budget ARM notebook, comparable to a Chromebook - but way cooler ;) It has a vibrant community and various Linux/*BSD variants to choose from. The only problem is that it is quite difficult to enable full-disk encryption. Various approaches exist but none of them worked for me, until now ...<p>This slightly updated and for <a href="https://manjaro.org/">Manjaro</a> adapted guide is <a href="https://rudism.com/installing-arch-linux-on-the-pinebook-pro/">based on that one for Arch Linux</a>, kudos to Rudis Muiznieks for all the tinkering and sharing!</p>
<aside class="m-block m-default">
<p>In this article I will not go into details about how to install Manjaro from an SD card to eMMC as the <a href="https://www.pine64.org/pinebook-pro/">Pinebook Pro</a> comes with Manjaro Plasma/KDE edition preinstalled. You should know though that I did a clean install with <a href="https://wiki.pine64.org/wiki/Pinebook_Pro_Software_Release#Manjaro_ARM_with_GTK_.28XFCE.29_desktop_.5BmicroSD_.2F_eMMC_Boot.5D">Manjaro ARM XFCE edition</a> using <a href="https://forum.manjaro.org/t/manjaro-arm-20-08-released/1516">manjaro-arm-flasher</a>. Please keep that in mind when applying this guide, your mileage may vary.</p>
</aside>
<ol>
<li>Boot from an SD (assuming Manjaro)</li>
<li>
<p>Ensure that these tools are available:</p>
<div class="highlight"><pre><span></span><code>$ sudo pacman -S manjaro-tools gparted rsync f2fs-tools
</code></pre></div>
<ul>
<li><code>fstabgen</code> (formerly known as <code>genfstab</code>, part of <code>manjaro-tools</code>)</li>
<li><code>manjaro-chroot</code> (fka as <code>arch-chroot</code>, part of <code>manjaro-tools</code>)</li>
<li><code>gparted</code> (you can also use <code>fdisk</code> if you like)</li>
<li><code>rsync</code></li>
<li><code>f2fs-tools</code></li>
</ul>
</li>
<li>
<p>Ensure that the eMMC partitions are available</p>
<div class="highlight"><pre><span></span><code>$ lsblk
</code></pre></div>
<p>If there is no <code>mmcblk2</code> try to activate it:</p>
<div class="highlight"><pre><span></span><code><span class="err">$</span><span class="w"> </span><span class="n">echo</span><span class="w"> </span><span class="n">fe330000</span><span class="p">.</span><span class="n">sdhci</span><span class="w"> </span><span class="o">>/</span><span class="n">sys</span><span class="o">/</span><span class="n">bus</span><span class="o">/</span><span class="n">platform</span><span class="o">/</span><span class="n">drivers</span><span class="o">/</span><span class="n">sdhci</span><span class="o">-</span><span class="n">arasan</span><span class="o">/</span><span class="n">unbind</span><span class="w"></span>
<span class="err">$</span><span class="w"> </span><span class="n">echo</span><span class="w"> </span><span class="n">fe330000</span><span class="p">.</span><span class="n">sdhci</span><span class="w"> </span><span class="o">>/</span><span class="n">sys</span><span class="o">/</span><span class="n">bus</span><span class="o">/</span><span class="n">platform</span><span class="o">/</span><span class="n">drivers</span><span class="o">/</span><span class="n">sdhci</span><span class="o">-</span><span class="n">arasan</span><span class="o">/</span><span class="n">bind</span><span class="w"></span>
<span class="err">$</span><span class="w"> </span><span class="n">lsblk</span><span class="w"></span>
<span class="n">NAME</span><span class="w"> </span><span class="nl">MAJ</span><span class="p">:</span><span class="nf">MIN</span><span class="w"> </span><span class="n">RM</span><span class="w"> </span><span class="k">SIZE</span><span class="w"> </span><span class="n">RO</span><span class="w"> </span><span class="n">TYPE</span><span class="w"> </span><span class="n">MOUNTPOINT</span><span class="w"></span>
<span class="n">mmcblk1</span><span class="w"> </span><span class="mi">179</span><span class="err">:</span><span class="mi">0</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="mi">5</span><span class="n">G</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">disk</span><span class="w"> </span>
<span class="err">├─</span><span class="n">mmcblk1p1</span><span class="w"> </span><span class="mi">179</span><span class="err">:</span><span class="mi">1</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">213</span><span class="p">,</span><span class="mi">6</span><span class="n">M</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="n">part</span><span class="w"> </span><span class="o">/</span><span class="n">boot</span><span class="w"></span>
<span class="err">└─</span><span class="n">mmcblk1p2</span><span class="w"> </span><span class="mi">179</span><span class="err">:</span><span class="mi">2</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">59</span><span class="p">,</span><span class="mi">2</span><span class="n">G</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="n">part</span><span class="w"> </span><span class="o">/</span><span class="w"></span>
<span class="n">mmcblk2</span><span class="w"> </span><span class="mi">179</span><span class="err">:</span><span class="mi">32</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">116</span><span class="p">,</span><span class="mi">5</span><span class="n">G</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">disk</span><span class="w"> </span>
<span class="err">├─</span><span class="n">mmcblk2p1</span><span class="w"> </span><span class="mi">179</span><span class="err">:</span><span class="mi">33</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">213</span><span class="p">,</span><span class="mi">6</span><span class="n">M</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="n">part</span><span class="w"> </span>
<span class="err">└─</span><span class="n">mmcblk2p2</span><span class="w"> </span><span class="mi">179</span><span class="err">:</span><span class="mi">34</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">116</span><span class="p">,</span><span class="mi">2</span><span class="n">G</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="n">part</span><span class="w"> </span>
<span class="n">mmcblk2boot0</span><span class="w"> </span><span class="mi">179</span><span class="err">:</span><span class="mi">64</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">4</span><span class="n">M</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">disk</span><span class="w"> </span>
<span class="n">mmcblk2boot1</span><span class="w"> </span><span class="mi">179</span><span class="err">:</span><span class="mi">96</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">4</span><span class="n">M</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">disk</span><span class="w"> </span>
<span class="n">zram0</span><span class="w"> </span><span class="mi">252</span><span class="err">:</span><span class="mi">0</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="n">G</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">disk</span><span class="w"> </span><span class="o">[</span><span class="n">SWAP</span><span class="o">]</span><span class="w"></span>
</code></pre></div>
</li>
<li>
<p>Become root and create a backup directory on the SD card, e.g. in <code>~/backup</code></p>
<div class="highlight"><pre><span></span><code>$ sudo su
<span class="c1"># mkdir ~/backup</span>
</code></pre></div>
</li>
<li>
<p>Mount the partitions of <code>mmcblk2</code>:</p>
<div class="highlight"><pre><span></span><code><span class="err"># mount /dev/mmcblk2p2 /mnt</span>
<span class="err"># mount /dev/mmcblk2p1 /mnt/boot</span>
<span class="err"># ls /mnt/boot</span>
<span class="err">dtbs extlinux idbloader.img Image Image.gz initramfs-linux.img u-boot.itb</span>
<span class="err"># ls /mnt/</span>
<span class="err">bin boot dev etc home lib lost+found mnt opt overlay.txt proc root run sbin srv sys tmp usr var</span>
</code></pre></div>
</li>
<li>
<p>rsync the content of <code>mmcblk2</code> to the backup directory on the SD card:</p>
<div class="highlight"><pre><span></span><code><span class="err"># rsync -aAXv --exclude={"/mnt/dev/*","/mnt/proc/*","/mnt/sys/*","/mnt/tmp/*","/mnt/run/*","/mnt/mnt/*","/mnt/media/*","/mnt/lost+found"} /mnt/ ~/backup/</span>
</code></pre></div>
</li>
<li>
<p>Unmount the eMMC partitions:</p>
<div class="highlight"><pre><span></span><code><span class="err"># umount /mnt/boot</span>
<span class="err"># umount /mnt</span>
</code></pre></div>
</li>
<li>
<p>Delete the unencrypted root partition of the eMMC:</p>
<div class="highlight"><pre><span></span><code><span class="err"># fdisk /dev/mmcblk2</span>
<span class="err">p</span>
<span class="err">d 2</span>
<span class="err">n</span>
</code></pre></div>
<p>When creating the new partition, ensure that it begins after the boot partition <code>mmcblk2p1</code>, at least in my case I had a small amount of free space before the boot partition.</p>
<div class="highlight"><pre><span></span><code><span class="err">p</span>
<span class="err">w</span>
</code></pre></div>
</li>
<li>
<p>Create an encrypted partition according to the <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system">guide in the ArchWiki</a>:</p>
<div class="highlight"><pre><span></span><code><span class="err"># cryptsetup -y -v luksFormat /dev/mmcblk2p2</span>
<span class="err"># cryptsetup open /dev/mmcblk2p2 ROOT_MNJRO</span>
<span class="err"># mkfs.f2fs /dev/mapper/ROOT_MNJRO</span>
<span class="err"># umount /mnt</span>
<span class="err"># cryptsetup close /dev/mapper/ROOT_MNJRO</span>
<span class="err"># cryptsetup open /dev/mmcblk2p2 ROOT_MNJRO</span>
<span class="err"># mount /dev/mapper/ROOT_MNJRO /mnt</span>
</code></pre></div>
</li>
<li>
<p>Restore the backup to the mounted encrypted volume:</p>
<div class="highlight"><pre><span></span><code><span class="err"># rsync -aAXv ~/backup/ /mnt/</span>
</code></pre></div>
</li>
<li>
<p>Generate the fstab in <code>/mnt/etc/fstab</code>:</p>
<div class="highlight"><pre><span></span><code><span class="err"># fstabgen -U /mnt</span>
</code></pre></div>
</li>
<li>
<p>chroot into the restored installation:</p>
<div class="highlight"><pre><span></span><code><span class="err"># manjaro-chroot /mnt</span>
</code></pre></div>
</li>
<li>
<p>Edit <code>/etc/mkinitcpio.conf</code> and ensure that <code>HOOKS</code> and <code>MODULES</code> look like:</p>
<div class="highlight"><pre><span></span><code><span class="err">HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt filesystems fsck)</span>
<span class="err">MODULES=(panfrost rockchipdrm drm_kms_helper hantro_vpu analogix_dp rockchip_rga panel_simple arc_uart cw2015_battery i2c-hid iscsi_boot_sysfs jsm pwm_bl uhid)</span>
</code></pre></div>
</li>
<li>
<p>Edit <code>/boot/extlinux/extlinux.conf</code> (only the <code>APPEND</code> line) according to <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Configuring_the_boot_loader">"Configuring the boot loader"</a> in the ArchWiki. To figure out the UUID of the LUKS volume, use:</p>
<div class="highlight"><pre><span></span><code><span class="err"># blkid -s UUID | grep mmcblk2p2</span>
</code></pre></div>
</li>
<li>
<p>Ensure that the F2FS tools are available in the chroot environment:</p>
<div class="highlight"><pre><span></span><code><span class="err">sh-5.0# pacman -S f2fs-tools</span>
</code></pre></div>
</li>
<li>
<p>Rebuild initramfs images from within the chroot environment:</p>
<div class="highlight"><pre><span></span><code><span class="err">sh-5.0# mkinitcpio -P</span>
</code></pre></div>
<p>This process should run without errors.</p>
</li>
<li>
<p>Leave the chroot environment with <code>exit</code>, unmount properly:</p>
<div class="highlight"><pre><span></span><code><span class="err">sh-5.0# exit</span>
<span class="err"># umount /mnt/boot</span>
<span class="err"># umount /mnt</span>
</code></pre></div>
</li>
<li>
<p>Shutdown the machine, remove the SD card and ... engage!</p>
</li>
</ol>
<p>In general that was supposed to be enough to boot properly and get a prompt to enter a passphrase. Unfortunately, there seems to be a timing issue or something else which every now and then causes the boot process to wait for the eMMC, run into a timeout and drop into an emergency console. I tried <a href="https://forum.manjaro.org/t/booting-pinebook-pro-with-manjaro-is-a-real-torture/27906/6">this advice</a>, replaced <code>uboot-pinebookpro</code> package with <code>uboot-pinebookpro-bsp</code> and afterwards executed some <code>dd</code> instructions that were mentioned by the installer (compare below but when in doubt follow the ones from the installer):</p>
<div class="highlight"><pre><span></span><code><span class="err"># pacman -S uboot-pinebookpro-bsp</span>
<span class="err"># dd if=/boot/idbloader.img of=/dev/mmcblk2 seek=64 conv=notrunc</span>
<span class="err"># dd if=/boot/uboot.img of=/dev/mmcblk2 seek=16384 conv=notrunc</span>
<span class="err"># dd if=/boot/trust.img of=/dev/mmcblk2 seek=24576 conv=notrunc</span>
</code></pre></div>
<p>Since then, my Pinebook Pro boots reliably and always asks for the passphrase.</p>
<p>Happy encrypted hacking! :)</p>COVID-19: GUE veröffentlicht Richtlinien2020-05-22T23:30:00+02:002020-05-22T23:30:00+02:00Jan Beilicketag:jotbe.io,2020-05-22:/blog/2020/05/covid-19-gue-protocol-prevention-risk-mitigation/index.de.html<p><a href="https://jotbe.io/blog/2020/05/covid-19-dan-europe-guidelines-prevention-risk-mitigation/index.de.html">Neben DAN Europe</a> hat auch die GUE (Global Underwater Explorers) <a href="https://www.gue.com/gue-covid-19">nützliche Richtlinien veröffentlicht</a>, wie man sich und andere beim Tauchen gerade während der SARS-Cov-2 Pandemie keinen unnötigen Risiken aussetzt.</p>COVID-19: DAN Europe publishes guidelines for prevention and risk reduction (update)2020-05-17T15:15:00+02:002020-05-17T15:15:00+02:00Jan Beilicketag:jotbe.io,2020-05-17:/blog/2020/05/covid-19-dan-europe-guidelines-prevention-risk-mitigation/The uncertainty surrounding the coronavirus pandemic also affects divers. Can you go diving without worrying? Will the virus survive in water? What about the hygiene of the equipment, both your own and borrowed? How does the buddy check work?<p>The Divers Alert Network Europe has developed <a href="https://www.daneurope.org/readarticle?p_r_p_-1523133153_commaTags=&p_p_lifecycle=0&p_p_id=web_content_reading&p_r_p_-1523133153_articleVersion=1.0&p_p_col_count=1&p_p_col_id=column-1&p_r_p_-1523133153_commaCategories=NEWS&p_r_p_-1523133153_articleId=14155950&p_r_p_-1523133153_groupId=10103&p_r_p_-1523133153_articleType=General+Web+Content&p_p_mode=view&p_r_p_-1523133153_templateId=5993844">10 guidelines</a> to help divers and diving centers to implement preventive measures against the SARS-CoV-2 virus and to minimize risks as much as possible. The document should be updated as new knowledge is obtained.</p>
<p><strong>Update 22.5.2020:</strong> <a href="https://www.gue.com/gue-covid-19">The Global Underwater Explorer (GUE) has also published guidelines.</a></p>
<p><strong>Update 2.6.2020:</strong> <a href="https://www.greenfins.net/news/covid-19-resources">Green Fins has provided some information,</a> including additional guidelines on disinfection, environmental considerations, and a manual for diving centers that want to review and improve their sustainability measures. The manual can be read online for free and usually costs £20.</p>COVID-19: DAN Europe veröffentlicht Richtlinien der Prävention und Risikoreduktion (Update)2020-05-17T15:15:00+02:002020-05-17T15:15:00+02:00Jan Beilicketag:jotbe.io,2020-05-17:/blog/2020/05/covid-19-dan-europe-guidelines-prevention-risk-mitigation/index.de.htmlDie Unsicherheit in Bezug auf die Coronavirus-Pandemie macht auch vor Tauchern nicht halt. Kann man unbesorgt Tauchen gehen? Überlebt das Virus im Wasser? Wie schaut es gerade jetzt mit der Hygiene der Ausrüstung aus, eigene wie geliehene? Wie läuft der Buddy-Check ab?<p>Das Divers Alert Network Europe hat <a href="https://www.daneurope.org/readarticle?p_r_p_-1523133153_commaTags=&p_p_lifecycle=0&p_p_id=web_content_reading&p_r_p_-1523133153_articleVersion=1.0&p_p_col_count=1&p_p_col_id=column-1&p_r_p_-1523133153_commaCategories=NEWS&p_r_p_-1523133153_articleId=14155950&p_r_p_-1523133153_groupId=10103&p_r_p_-1523133153_articleType=General+Web+Content&p_p_mode=view&p_r_p_-1523133153_templateId=5993844">10 Richtlinien</a> erarbeitet, die Tauchern und Tauchzentren helfen sollen, vorbeugende Maßnahmen gegen das SARS-CoV-2 Virus umzusetzen und Risiken so gut wie möglich zu minimieren. Das Dokument soll bei neuen Erkenntnissen aktualisiert werden.</p>
<p><strong>Ergänzung 22.5.2020:</strong> Auch die <a href="https://www.gue.com/gue-covid-19">Global Underwater Explorer (GUE) hat Richtlinien veröffentlicht.</a></p>
<p><strong>Ergänzung 2.6.2020:</strong> <a href="https://www.greenfins.net/news/covid-19-resources">Green Fins hat einige Informationen bereitgestellt,</a> darunter ergänzende Richtlinien der Desinfektion mitsamt Umwelterwägungen sowie ein Handbuch für Tauchzentren, die ihre Nachhaltigkeitsmaßnahmen überprüfen und verbessern wollen. Das Handbuch kann online gelesen werden, es kostet regulär £20.</p>Jitsi - Fragen & Antworten (Update)2020-04-24T22:00:00+02:002020-04-24T22:00:00+02:00Jan Beilicketag:jotbe.io,2020-04-24:/blog/2020/04/jitsi-meet-questions-and-answers/index.de.htmlZu der Videokonferenzlösung Jitsi Meet erreichen mich immer mal wieder Fragen, die ich hier zu beantworten versuche.<p><a id="#top"></a>
(<a href="#%C3%9Cberarbeitungenupdates">Aktualisiert</a>: 26.7.2020)</p>
<div class="toc">
<ul>
<li><a href="#was-ist-jitsi-meet">Was ist Jitsi Meet?</a></li>
<li><a href="#wie-nutze-ich-jitsi-meet">Wie nutze ich Jitsi Meet?</a><ul>
<li><a href="#weitere-moglichkeiten-jitsi-zu-nutzen">Weitere Möglichkeiten Jitsi zu nutzen</a></li>
</ul>
</li>
<li><a href="#was-sind-die-vorteile-gegenuber-zoom-und-co">Was sind die Vorteile gegenüber Zoom und Co.?</a></li>
<li><a href="#vorteile-freier-und-quelloffener-software-open-source">Vorteile freier und quelloffener Software (Open Source)</a></li>
<li><a href="#wie-steht-es-um-den-datenschutz-und-die-sicherheit-bei-jitsi">Wie steht es um den Datenschutz und die Sicherheit bei Jitsi?</a></li>
<li><a href="#wie-sieht-es-mit-datenschutz-und-sicherheit-bei-proprietaren-alternativen-aus">Wie sieht es mit Datenschutz und Sicherheit bei proprietären Alternativen aus?</a></li>
<li><a href="#technik-woraus-besteht-jitsi">Technik: Woraus besteht Jitsi?</a></li>
<li><a href="#was-ist-webrtc">Was ist WebRTC?</a></li>
<li><a href="#wie-flieen-die-video-und-audiostrome-bei-webrtc">Wie fließen die Video- und Audioströme bei WebRTC?</a></li>
<li><a href="#welche-webrtc-topologie-verwendet-jitsi-meet">Welche WebRTC-Topologie verwendet Jitsi Meet?</a></li>
<li><a href="#last-wie-viele-teilnehmende-kann-ein-jitsi-meet-server-verkraften">Last: Wie viele Teilnehmende kann ein Jitsi Meet Server verkraften?</a></li>
<li><a href="#load-balancing-wie-skaliert-man-jitsi">Load-Balancing: Wie skaliert man Jitsi?</a></li>
<li><a href="#uberarbeitungenupdates">Überarbeitungen/Updates</a></li>
</ul>
</div>
<p><a id="was-ist-jitsi-meet"></a></p>
<h2 id="was-ist-jitsi-meet">Was ist Jitsi Meet?</h2>
<p><a href="https://jitsi.org/jitsi-meet/">Jitsi Meet</a> ist eine Videokonferenzlösung, die aus <a href="https://fsfe.org/freesoftware/">freien quelloffenen (Open Source)</a> Komponenten besteht und mit einem Browser oder mobilen Apps benutzt werden kann. Neben Audio- und Video kann auch der Bildschirm oder einzelne Anwendungsfenster geteilt, mit allen Teilnehmenden gechattet oder mit Etherpad gemeinsam an Dokumenten gearbeitet werden. Bei Bedarf kann Jitsi auf einem eigenen Server betrieben werden.</p>
<p><a id="wie-nutze-ich-jitsi-meet"></a></p>
<h2 id="wie-nutze-ich-jitsi-meet">Wie nutze ich Jitsi Meet?</h2>
<p>Hier empfehle ich die hervorragende <a href="https://www.kuketz-blog.de/kurzanleitung-jitsi-meet-videokonferenz-per-browser-oder-app/">Anleitung von Mike Kuketz</a>, die auch andere Fragen zu Jitsi Meet beantwortet.</p>
<p>Grundsätzlich reicht ein moderner Browser, empfohlen wird <a href="https://github.com/Eloston/ungoogled-chromium#downloads">Ungoogled Chromium</a>, Chromium, Chrome oder Firefox. Letzterer hat noch <a href="https://bugzilla.mozilla.org/buglist.cgi?columnlist=bug_type%2Cshort_desc%2Cproduct%2Ccomponent%2Cpriority%2Cassigned_to%2Ccf_status_firefox75%2Ccf_status_firefox76%2Ccf_status_firefox77%2Ccf_status_firefox_esr68%2Cbug_status%2Cresolution%2Cchangeddate&query_format=advanced&status_whiteboard=jitsi-meet&status_whiteboard_type=substring&query_based_on=">ein paar Probleme</a>, allerdings gehen die Arbeiten voran und mit Firefox 76 soll es bereits besser sein, das <a href="https://github.com/jitsi/jitsi-meet/issues/4758">dazugehörige Ticket bei Jitsi-Meet</a> ist schon geschlossen.</p>
<p><a id="weitere-m%C3%B6glichkeiten-jitsi-zu-nutzen"></a></p>
<h3 id="weitere-moglichkeiten-jitsi-zu-nutzen">Weitere Möglichkeiten Jitsi zu nutzen</h3>
<ul>
<li><a href="https://desktop.jitsi.org/">Offizielle Desktop-Anwendung</a> (Java)</li>
<li>Jitsi kann in diverse Dienste integriert werden (<a href="https://github.com/jitsi/jitsi-meet/blob/master/doc/integrations.md">auch in proprietäre</a>), hier ein paar Open Source Anwendungen:<ul>
<li><a href="https://moodle.org/plugins/mod_jitsi">Moodle</a></li>
<li><a href="https://matrix.org/blog/2020/04/06/running-your-own-secure-communication-service-with-matrix-and-jitsi">Riot/Matrix</a></li>
<li><a href="https://integrations.mattermost.com/jitsi/">Mattermost</a></li>
<li><a href="https://rocket.chat/docs/user-guides/voice-and-video-conferencing/">Rocket.Chat</a></li>
</ul>
</li>
</ul>
<p>Es gibt wohl auch eine <a href="https://github.com/jitsi/jitsi-meet-electron">Electron App</a>, wobei ich persönlich Bedenken gegenüber Electron Apps habe:</p>
<ul>
<li>Electron ist ein Framework für Web-Apps auf dem Desktop, letztlich bündelt es eine Web-App, NodeJS und die Chromium Rendering Engine sowie die von beiden benutze JavaScript-Engine V8.</li>
<li>Recht ressourcenhungrig, Jitsi selbst braucht bereits einige Ressourcen, da muss es m.E. nicht noch ein zusätzlicher Browser sein, der neben dem normalen mitläuft.</li>
<li>Jede Menge Bloat pro App, bei je nach Anwendung geringem Funktionsumfang.</li>
<li>Browser als Unterbau macht es Web-Entwicklern zwar einfacher, die Anwenderin hat damit aber auf ihrem Rechner zu leben, die Hardware-Industrie freut sich (mehr RAM, mehr CPU, mehr Speicherplatz - und letztlich höherer Stromverbrauch).</li>
<li><a href="https://www.electronjs.org/apps">Viele andere Web-Apps</a>, darunter populäre wie VS Code, Slack, Skype, WhatsApp, nutzen ebenfalls Electron, somit laufen im schlimmsten Fall einige Browser-Instanzen parallel.</li>
<li>Ich habe bislang keine Gründe gefunden, wieso ich neben einem Browser weitere brauche, in denen Web-Apps laufen.</li>
</ul>
<p><a id="was-sind-die-vorteile-gegen%C3%BCber-zoom-und-co"></a></p>
<h2 id="was-sind-die-vorteile-gegenuber-zoom-und-co">Was sind die Vorteile gegenüber Zoom und Co.?</h2>
<p>Häufig geht es um die Fragen</p>
<ul>
<li>ob eine Software offen und frei oder proprietär ist,</li>
<li>wo der Anspruch und die Grenze von Kontrolle und Freiheit verläuft,</li>
<li>ob es möglich ist, jemanden zu finden, der eine Anwendung betreiben und Support leisten kann und letztlich auch,</li>
<li>wer bei Missbrauch oder Schäden haftet.</li>
</ul>
<p>Bei Zoom und etlichen anderen Diensten (Microsoft Teams, Skype, Google Hangout, Slack, Facebook Messenger usw.) handelt es sich</p>
<ul>
<li>um amerikanische Unternehmen, die an amerikanische Gesetze gebunden sind.</li>
<li>Die Produkte sind proprietär,</li>
<li>man kann den Quellcode nicht überprüfen und</li>
<li>man muss den Anbietern vertrauen.</li>
<li>Die Datenhaltung erfolgt in deren Infrastruktur/Cloud.</li>
<li>Der Anbieter übt die volle Kontrolle über die Nutzung und die erhobenen Daten aus,</li>
<li>Alle Anbieter verwenden diverses Tracking, also die Überwachung der installierten und verwendeten Software bis auf die individuelle Benutzerebene, was sich nur begrenzt deaktivieren lässt.</li>
<li>Die Geschäftsbedingungen und Datenschutzerklärungen sind größtenteils gruselig,</li>
<li>Anbieter geben Daten an Dritte weiter, z.B. Facebook und Tracking-Firmen.</li>
<li>Konten können bei vermutetem Missbrauch schnell gesperrt werden. Da meist mehr an einem Konto hängt, z.B. bei Microsoft oder Google, findet man sich plötzlich ausgesperrt vor und kann weder auf Dokumente noch auf E-Mails zugreifen, insofern sie nur in der Cloud lagen.</li>
<li>Schwierig, die DSGVO durchzusetzen, das Privacy Shield ist problematisch. <a href="https://datenschutz-generator.de/dsgvo-video-konferenzen-online-meeting/">Wer eine Checkliste braucht ...</a></li>
<li>Nicht gerade preiswert.</li>
</ul>
<p>Verglichen dazu Jitsi:</p>
<ul>
<li>Alle Komponenten von Jitsi sind frei und quelloffen.</li>
<li>Fehler können von Interessierten gefunden und korrigiert werden.</li>
<li>Jeder kann und darf einen Server selbst betreiben,</li>
<li>das ganze ist <a href="https://www.kuketz-blog.de/jitsi-meet-server-einstellungen-fuer-einen-datenschutzfreundlichen-betrieb/">datenschutzfreundlich</a> möglich.</li>
<li>Die Weiterentwicklung wird neben der Community und den vielen Beitragenden auch durch einige größere <a href="https://desktop.jitsi.org/Main/Partners">Partner</a> ermöglicht.</li>
<li><a href="https://github.com/jitsi/jitsi-meet/wiki/Jitsi-Meet-Instances">Viele betreiben Server,</a> die kostenfrei genutzt werden können.</li>
<li>Es gibt Dienstleister, die bei dem Betrieb von Jitsi-Instanzen unterstützen bzw. gleich den Betrieb übernehmen.</li>
</ul>
<p><a id="vorteile-freier-und-quelloffener-software-open-source"></a></p>
<h2 id="vorteile-freier-und-quelloffener-software-open-source">Vorteile freier und quelloffener Software (Open Source)</h2>
<ul>
<li>Selbst betriebene Software fördert Dezentralität, zentrale Ansätze haben einen gemeinsamen Dreh- und Angelpunkt, der in mehrerer Hinsicht ein Problem darstellen kann.<ul>
<li>Dezentrale Ansätze sind ehrlicherweise auch nicht immer einfach, z.B. wenn Systeme miteinander sprechen sollen aber Protokolle in ihren Versionen abweichen. Über die Jahre und Jahrzehnte können sich Flickenteppiche entwickeln und es fällt schwer, alte Zöpfe abzuschneiden, Stichwort Rückwärts bzw. Abwärtskompatibilität. Siehe exemplarisch die Historie der <a href="https://de.wikipedia.org/wiki/E-Mail#Authentizit%C3%A4t,_Datenschutz_und_Integrit%C3%A4t">E-Mail und das Problem, nachträglich Datenschutz, Authentizität und Integrität einzuführen.</a></li>
</ul>
</li>
<li>Freie Software kann langfristig betrieben und entwickelt werden, während eine Firma das Produkt bzw. den Service einstellt - auch große Firmen und Plattformen gehen pleite. Häufig stirbt damit die Software, selten wird sie unter einer offenen Lizenz freigegeben.</li>
<li>Freie Software kann geforkt werden, siehe z.B. die historische Entwicklung von <a href="https://de.wikipedia.org/wiki/Nextcloud#Geschichte">Nextcloud</a> oder <a href="https://de.wikipedia.org/wiki/LibreOffice#Geschichte">LibreOffice</a>. Beide Versionen werden weiterentwickelt, solange sich Unterstützer finden, häufig in Forma von Organisationen aber auch Firmen.</li>
<li>Offene Schnittstellen bzw. Protokolle und entsprechende Lizenzen ermöglichen die Integration in fremde oder gar eigene entwickelte Anwendungen.</li>
<li>Neue Dienste/Anwendungen können dadurch entstehen, aufbauend auf Open Source Software.</li>
</ul>
<p><a id="wie-steht-es-um-den-datenschutz-und-die-sicherheit-bei-jitsi"></a></p>
<h2 id="wie-steht-es-um-den-datenschutz-und-die-sicherheit-bei-jitsi">Wie steht es um den Datenschutz und die Sicherheit bei Jitsi?</h2>
<p>Die wichtigsten Punkte, teilweise übernommen von <a href="https://jitsi.org/security/">Jitsi Meet Security & Privacy</a>, manche beziehen sich auf die Standard-Instanz auf <a href="https://meet.jit.si">https://meet.jit.si</a>:</p>
<ul>
<li><a href="https://www.kuketz-blog.de/jitsi-meet-server-einstellungen-fuer-einen-datenschutzfreundlichen-betrieb/">Jitsi lässt sich datenschutzkonform selbst betreiben.</a></li>
<li>Für Jitsi benötigt man standardmäßig kein Benutzerkonto. Dateneingaben, wie Benutzername oder Mail-Adresse sind optional und werden nur mit Teilnehmenden geteilt.</li>
<li>Passwortschutz wird bei Erstellung einer neuen Konferenz angeboten.</li>
<li>Authentifizierung ist möglich, z.B. über lokal einzurichtende Benutzer, nicht-authentifizierte Gäste müssen warten, bis die Gastgeberin sich eingeloggt hat. (🛈 Ich habe bislang noch keine praktische Erfahrung mit der Authentifizierung von Jitsi gesammelt, dies sind nur erste Rechercherergebnisse)<ul>
<li>Es werden <a href="https://modules.prosody.im/type_auth.html">Authentifizierungs-Module von Prosody</a> unterstützt, sodass man beispielsweise mit einem JWT-Token Zugriff auf spezifische Räume erhalten kann.</li>
<li>Enterprise-kompatible Funktionen wie LDAP, SAML sind möglich.</li>
<li><a href="https://github.com/D3473R/jitsi-keycloak">Keycloak</a>,</li>
<li><a href="https://shibboleth.net/">Shibboleth</a> (föderierter Identitätsprovider mit SAML) wird ebenfalls <a href="https://github.com/jitsi/jicofo/blob/master/doc/shibboleth.md">unterstützt</a>.</li>
</ul>
</li>
<li>Chats und Sprecherstatistiken werden nach Ende einer Konferenz gelöscht.</li>
<li>Falls Aufzeichnungen durchgeführt wurden, verbleiben diese erst einmal auf dem Server. Der Server-Betreibende muss sich um eine Bereinigung kümmern.</li>
<li>Jitsi-Instanzen haben standardmäßig kein Tracking, auf dem Server muss man z.B. Google Analytics erst aktivieren (kann ich nur von abraten). https://meet.jit.si <a href="https://jitsi.org/security/">verwendet Tracking</a>. Siehe zu deren Instanz bitte auch Angaben zu <a href="https://jitsi.org/meet-jit-si-privacy/">Privacy</a> und <a href="https://jitsi.org/meet-jit-si-terms-of-service/">Terms of Service.</a></li>
<li>Die Jitsi-Meet Apps für iOS und Android verwenden Third-Party-Tracking (siehe <a href="https://jitsi.org/meet-jit-si-privacy/">Privacy</a>), ein <a href="https://github.com/jitsi/jitsi-meet/issues/5799">Ticket dazu mit Verweis auf die DSGVO/GDPR</a> wurde nach etwas hitziger Debatte geschlossen. Empfehlung: Auch auf mobilen Geräten bei Bedenken lieber den Browser verwenden ("Desktop-Version" von Jitsi auswählen).</li>
<li>Die Kommunikation zwischen dem Browser und Jitsi-Server erfolgt in der Regel über eine verschlüsselte Verbindung (HTTPS, HTTP/2, Websockets über TLS, oder <a href="https://bloggeek.me/who-needs-quic-in-webrtc/">QUIC</a>). Der Grad der Transportverschlüsselung hängt vom jeweiligen Server-Betreiber ab.</li>
<li>Video- und Audio werden von WebRTC über <a href="https://de.wikipedia.org/wiki/Secure_Real-Time_Transport_Protocol">SRTP</a> und Daten über <a href="https://de.wikipedia.org/wiki/Datagram_Transport_Layer_Security">DTLS</a> verschlüsselt übertragen, der Schlüsselaustausch erfolgt über <a href="https://tools.ietf.org/html/rfc5764">DTLS-SRTP</a>.</li>
<li>Bei zwei Teilnehmenden erfolgt die WebRTC-Kommmunikation Ende-zu-Ende verschlüsselt von Browser zu Browser (Peer to Peer).</li>
<li>Bei mehr als zwei Teilnehmenden übernimmt die Videobridge die Durchleitung von Video und Audio, die Verschlüsselung endet derzeit auf der Videobridge. Es ist ratsam, einen eigenen Server zu betreiben, falls man den Server-Betreibenden nicht vertraut.</li>
<li><a href="https://jitsi.org/blog/e2ee/">Ende-zu-Ende-Verschlüsselung zwischen mehr als zwei Teilnehmenden ist in Arbeit</a>, eine Demo samt Video sowie eine <a href="https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/e2ee.md">Design-/Konzeptbeschreibung</a> existieren bereits (Stand: April 2020).</li>
<li>Unabhängig von Jitsi: WebRTC kann die privaten IP-Adresses von Teilnehmenden offenbaren, selbst wenn diese ein VPN einsetzen, was u.a. zum Fingerprinting, d.h. zur eindeutigen Identifizierung von Geräten über Website-Grenzen hinweg missbraucht wird. In Chromium wurde dies mittlerweile wohl mittels <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=878465">Ersetzung von privaten IP-Adressen mit mDNS-Hostnamen</a> adressiert, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1544770">Firefox scheint noch nicht so weit zu sein.</a></li>
<li>Die verwendeten <a href="https://en.wikipedia.org/wiki/STUN">STUN</a>-Server waren bislang auf Server von Google vorkonfiguriert, mittlerweile setzen sie auf meet-jit-si-turnrelay.jitsi.net, siehe z.B. in der <a href="https://github.com/jitsi/docker-jitsi-meet/blob/master/env.example">Docker-Variante</a>. Selbst betriebene STUN-Server sind natürlich ebenfalls möglich.</li>
<li>Bei Eingabe einer Mail-Adresse schaut Jitsi standardmäßig bei Gravatar vorbei. Auf dem Server können jedoch Third-Party-Requests und damit Gravatar per Konfiguration abgeschaltet werden.</li>
<li><a id="pflichten-als-telekommunkationsanbieter"></a>Reine Telekommunikationsanbieter müssen ab einer gewissen Größe Überwachungsschnittstellen bereithalten und unterliegen strengeren Auflagen beim Datenschutz. Ob Dienste wie Gmail darunter fallen, hatte im letzten Jahr der EUGH in einem Grundsatzurteil geklärt: <a href="https://netzpolitik.org/2019/eu-richter-gmail-ist-kein-telekommunikationsdienst/">Nein, Gmail ist kein Telekommunikationsdienst im Sinne des EU-Rechts.</a> Inwiefern eine große Jitsi-Instanz mit tausenden von Nutzern als einer betrachtet wird und welche Pflichten damit einhergehen ist mir unklar, vielleicht kann eine Leserin mit Erfahrung im Medienrecht hier etwas Klarheit bringen.</li>
<li>Darüber hinaus greifen sicherlich Auskunftspflichten ggü. Strafverfolgungsbehörden. Auch hier: Ich bin kein Anwalt, andere mit entsprechendem Hintergrund mögen sich gerne melden.</li>
</ul>
<p><a id="wie-sieht-es-mit-datenschutz-und-sicherheit-bei-propriet%C3%A4ren-alternativen-aus"></a></p>
<h2 id="wie-sieht-es-mit-datenschutz-und-sicherheit-bei-proprietaren-alternativen-aus">Wie sieht es mit Datenschutz und Sicherheit bei proprietären Alternativen aus?</h2>
<ul>
<li>Nicht öffentlicher Quellcode kann nicht unabhängig geprüft werden, man muss dem Anbieter vertrauen.</li>
<li>Anbieter sind verpflichtet mit Strafverfolgungsbehören gemäß der rechtlichen Rahmenbedingungen zu kooperieren, allerdings sind gerade Anbieter proprietärer Software dabei nicht immer transparent und sind manchmal nur zu schnell bereit, Daten ihrer Nutzerinnen weiterzugeben.</li>
<li>Auch hier gelten die oben gemachten <a href="#pflichten-als-telekommunkationsanbieter">Anmerkungen hinsichtlich Einstufungen als Telekommunikationsdienste und Auskunfstpflichten.</a></li>
<li>Neben den Strafverfolgungsbehörden gibt es noch viel weniger transparente Entitäten: Die <a href="https://de.wikipedia.org/wiki/Globale_%C3%9Cberwachungs-_und_Spionageaff%C3%A4re">Enthüllungen 2013 durch Edward Snowden</a> haben gezeigt, wie umfangreich Firmen mit Geheimdiensten kooperiert haben, bekannt geworden beispielsweise durch <a href="https://www.theguardian.com/world/2013/jul/11/microsoft-nsa-collaboration-user-data">PRISM</a>.<ul>
<li>Skype war eine Weile relativ dezentral und eher Peer to Peer, nach der Übernahme durch Microsoft wurden zentrale "Superknoten" eingeführt und dank Snowden kam raus, dass Microsoft Geheimdiensten breiten Zugriff auf diese Knoten und Kommunikationsinhalte gewährt hat (<a href="https://www.theguardian.com/world/2013/jul/11/microsoft-nsa-collaboration-user-data">Stichwort Prism</a>).</li>
<li>Als Gegeninitiative wurde u.a. die Website <a href="https://prism-break.org/en/">PRISM-Break</a> aus der Taufe gehoben.</li>
</ul>
</li>
<li>Eine zu installierende Anwendung sorgt für eine größere Angriffsfläche auf einem System.</li>
<li>Ein Browser muss robust und sicher sein, dafür sorgen ein paar wenige Hersteller, die viele Ressourcen in deren Entwicklung stecken.</li>
<li>Gerade Nicht-EU-Anbieter nehmen den Datenschutz häufig wenig ernst und tracken, was das Zeug hält.</li>
<li>Einige implementieren eigene Sicherheitsalgorithmen und verstoßen damit gegen die Grundregel, genau dies nicht zu tun, sondern auf etablierte Algorithmen und Lösungen zu setzen. Oder sie setzen darauf, aber implementieren sie falsch.</li>
<li>Microsoft, Apple, Amazon, Google lassen bzw. ließen Menschen zur Verbesserung von maschinellen Übersetzungen und "Sprachassistenten" Konversationen <a href="https://www.heise.de/newsticker/meldung/Microsoft-weist-auf-menschliches-Mithoeren-hin-4497764.html">mithören</a>.</li>
<li>Zoom machte seit einiger Zeit mit <a href="https://www.heise.de/security/meldung/Videokonferenz-Software-Ist-Zoom-ein-Sicherheitsalptraum-4695000.html">etlichen Sicherheits- und Datenschutzproblemen</a> auf sich aufmerksam und zeigte, was passiert, wenn Datensicherheit vernachlässigt wird, sodass vom <a href="https://blog.zoom.us/wordpress/2020/04/01/a-message-to-our-users/">Zoom-CEO die Notbremse gezogen und Besserung gelobt wurde</a>, hier ein paar Vorfälle:<ul>
<li>Zoom rühmte sich bis Anfang April 2020 damit, die Aufmerksamkeit von Teilnehmenden zu tracken. <a href="https://support.zoom.us/hc/en-us/articles/115000538083-Attendee-Attention-Tracking">Nach Protesten haben sie diese Funktion erstmal deaktiviert.</a></li>
<li><a href="https://www.heise.de/meldung/Bericht-Zoom-App-fuer-iOS-reicht-Daten-heimlich-an-Facebook-weiter-4691613.html">Die iOS App sendete bis Ende März Daten an Facebook.</a></li>
<li><a href="https://en.wikipedia.org/wiki/Zoombombing">"Zoombombing"</a> wurde eine Art Sport, wo Trolle Zoom-Konferenzen anhand deren IDs herausfanden, diese betraten und auf diverse Weise störten. Die IDs waren entweder direkt ersichtlich oder konnten über automatisierte Routinen berechnet werden. Ein Passwortschutz war standardmäßig nicht gegeben.<ul>
<li>Hier sei angemerkt, dass Jitsi Meet in der Standardkonfiguration auch keinen Passwortschutz erzwingt, allerdings wird beim Öffnen einer neuen Konferenz die Nutzung eines Passworts angeboten.</li>
</ul>
</li>
<li>Zoom gab an, die Videokonferenzen wären Ende-zu-Ende verschlüsselt, während <a href="https://theintercept.com/2020/03/31/zoom-meeting-encryption/">letztlich nur Transportverschlüsselung (TLS)</a> zum Einsatz kam. <a href="https://blog.zoom.us/wordpress/2020/04/01/facts-around-zoom-encryption-for-meetings-webinars/">Mittlerweile erfolgte eine Klarstellung seitens Zoom.</a></li>
<li>Eigene Videolösungen zu entwickeln, statt auf Standards wie WebRTC zu setzen, ist hart und endet oft in Hacks. Auf dem Mac öffnete sich Zoom nach einem Klick auf einen Link automatisch und aktivierte Kamera und Mikrofon. Zudem ließ sich die App nicht deinstallieren, da der gleiche Link die App wieder installierte, denn es wurde ein Webserver bei Deinstallation auf dem System gelassen, der auf diverse Kommandos lauscht, u.a. zur erneuten Installation von Zoom. <a href="https://medium.com/bugbountywriteup/zoom-zero-day-4-million-webcams-maybe-an-rce-just-get-them-to-visit-your-website-ac75c83f4ef5">Mehr dazu.</a></li>
<li><a href="https://dev.io/posts/zoomzoo/">Die Windows App wartete mit etlichen Sicherheitslücken auf</a>, ein Sicherheitsforscher benötigte dazu nur ein paar Stunden Zeit und etwas statische Code-Analyse.</li>
</ul>
</li>
</ul>
<p><a id="technik-woraus-besteht-jitsi"></a></p>
<h2 id="technik-woraus-besteht-jitsi">Technik: Woraus besteht Jitsi?</h2>
<p>Einfach betrachtet handelt es sich bei Jitsi Meet um einen Server, der eine Web-Oberfläche für die Teilnehmenden bereitstellt sowie weiteren Komponenten, die Videokonferenzen mit mehr als zwei Teilnehmenden koordinieren bzw. vermitteln:</p>
<ul>
<li><a href="https://jitsi.org/jitsi-meet/">Jitsi Meet:</a> WebRTC-Anwendung, die über den Browser verwendet wird oder über Apps für mobile Geräte (iOS bzw. Android), sie dient als Eingangstor zur Videokonferenz.</li>
<li><a href="https://github.com/jitsi/jitsi-videobridge">Jitsi Videobridge:</a> Server zur direkten Vermittlung von Video- und Audio zwischen mehr als zwei Teilnehmern.</li>
<li><a href="https://github.com/jitsi/jicofo">Jitsi Conference Focus (jicofo):</a> Verwaltet Sitzungen der Teilnehmenden und der Videobridge.</li>
<li><a href="https://github.com/jitsi/jibri">Jitsi Broadcasting Infrastruktur (jibri):</a> Ermöglicht die Aufzeichnung und Broadcasting von Videokonferenzen.</li>
<li><a href="https://github.com/jitsi/jigasi">Jitsi Gateway to SIP (jigasi):</a> Ermöglicht die Teilnahme an Videokonferenzen über SIP-Geräte (Voice over IP).</li>
</ul>
<p><a id="was-ist-webrtc"></a></p>
<h2 id="was-ist-webrtc">Was ist WebRTC?</h2>
<p><a href="https://webrtc.org/">WebRTC</a> ermöglicht die Echtzeit-Kommunikation zwischen Browsern und Geräten, meist Video und Audio, aber auch andere Daten sind möglich. WebRTC ist kostenlos und wird von modernen Browsern unterstützt. Software-Entwicklende können eigene WebRTC-Anwendungen umsetzen bzw. ihre Anwendungen um WebRTC erweitern, wobei die Anwendungen im Browser laufen können oder in Form von nativen Apps auf mobilen Geräten wie Google Android oder Apple iOS.</p>
<p>Mit WebRTC kann eine (Web-)Anwendung auf Kamera und Mikrofon des Geräts zugreifen oder dessen Bildschirm teilen. Dies erfolgt grundsätzlich nur mit Einverständnis der Anwenderin.</p>
<p><a id="wie-flie%C3%9Fen-die-video--und-audiostr%C3%B6me-bei-webrtc"></a></p>
<h2 id="wie-flieen-die-video-und-audiostrome-bei-webrtc">Wie fließen die Video- und Audioströme bei WebRTC?</h2>
<p>Drei Topologien stehen zur Auswahl:</p>
<ul>
<li><strong>Mesh</strong><br>
Alle Teilnehmer senden und empfangen zwischen allen Teilnehmern.<ul>
<li>Vorteil: Prinzipiell kein Server benötigt.</li>
<li>Nachteil: Sehr CPU- und bandbreitenintensiv (gleichermaßen Downstream und Upstream) bei den beteiligten Geräten.</li>
</ul>
</li>
<li><strong>Mixed (Multi-party Conferencing Unit, MCU)</strong><br>
Teilnehmende senden an einen Server, dieser kombiniert alle Video- und Audioströme und sendet sie an die Teilnehmer.<ul>
<li>Vorteil: Wenig Last bei den Geräten der Teilnehmer, geringste Bandbreite von allen genannten Topologien, geringste Anzahl an Verbindungen zwischen Server und Teilnehmenden.</li>
<li>Nachteil: Alle Video- und Audioströme zu kombininieren ist sehr ressourcenintensiv für den Server.</li>
</ul>
</li>
<li><strong>Routing (Selective Forwarding Unit, SFU)</strong><br>
Teilnehmende senden an einen Server, dieser reicht jeden Video- und Audiostrom an alle Teilnehmer durch.<ul>
<li>Vorteil: Teilnehmende benötigen wenig Upload-Bandbreite, der Server braucht relativ wenig CPU, da er nur durchreicht.</li>
<li>Nachteil: Teilnehmende benötigen mehr Downstream-Bandbreite, der Server die höchste Upstream-Bandbreite aller genannten Topologien, höchste Anzahl an Verbindungen zwischen Server und Teilnehmenden. Bei dem in Europa verbreiteten asymmetrischen DSL, mit deutlich mehr Downstream als Upstream, ist diese Variante praktikabler als Mesh. </li>
</ul>
</li>
</ul>
<div class="m-row">
<div class="m-col-s-4"><img src="https://jotbe.io/img/content/articles/jitsi-meet/jitsi-meet-topology-mesh.svg" style="width: 100%" /></div>
<div class="m-col-s-4"><img src="https://jotbe.io/img/content/articles/jitsi-meet/jitsi-meet-topology-mcu.svg" style="width: 100%" /></div>
<div class="m-col-s-4"><img src="https://jotbe.io/img/content/articles/jitsi-meet/jitsi-meet-topology-sfu.svg" style="width: 100%" /></div>
</div>
<p>Die Illustrationen entsprechen denen im <a href="https://vimeo.com/198382135">Video,</a> das die Topologien anschaulich erläutert.</p>
<p><a id="welche-webrtc-topologie-verwendet-jitsi-meet"></a></p>
<h2 id="welche-webrtc-topologie-verwendet-jitsi-meet">Welche WebRTC-Topologie verwendet Jitsi Meet?</h2>
<p>Bei zwei Teilnehmenden kommunizieren die Browser per WebRTC direkt miteinander.</p>
<p>Bei mehr als zwei Teilnehmenden laufen die Video- und Audioströme über die Videobridge, die sie an alle Teilnehmer durchleitet. Jitsi setzt auf die Routing-Topologie Selective Forwarding Unit (SFU, siehe oben).</p>
<p><a id="last-wie-viele-teilnehmende-kann-ein-jitsi-meet-server-verkraften"></a></p>
<h2 id="last-wie-viele-teilnehmende-kann-ein-jitsi-meet-server-verkraften">Last: Wie viele Teilnehmende kann ein Jitsi Meet Server verkraften?</h2>
<p>Zur Performance hat das Jitsi-Team einen <a href="https://jitsi.org/jitsi-videobridge-performance-evaluation/">ausführlichen Test durchgeführt und den Bericht veröffentlicht</a>, hier zusammengefasst:</p>
<ul>
<li>Server: Quad-core Intel Xeon E5-1620 v2 @ 3.70GHz CPU</li>
<li>Komponenten: Jitsi Meet, Nginx Web-Server, Prosody XMPP-Server und Jitsi Videobridge</li>
<li>Sie haben die Anzahl an Konferenzen, lastgenerierenden Endpunkte, CPU-Verbrauch sowie ein- und ausgehenden Netzwerkverkehr gemessen und daraus Bitrate und Anzahl der Video-/Audioströme berechnet, die von der Videobridge gesendet wurden.</li>
<li>Es wurden pro Endpunkt voraufgezeichnete Audio- und Videodaten mit durchschnittlich 512 Kbps gesendet, in einer Chrome-Instanz lief die Jitsi-Meet Web-Anwendung.</li>
</ul>
<p>Das Ergebnis gerundet: <strong>1000 Videostreams mit 550 Megabit pro Sekunde bei 20% CPU.</strong></p>
<p>Konkret: 1056 Video- und Audioströme wurden von der Videobridge versandt, was in etwa Bitraten von</p>
<ul>
<li>528 Konferenzen mit zwei Personen,</li>
<li>176 Konferenzen mit drei Personen oder</li>
<li>53 Konferenzen mit 5 Personen entspricht.</li>
</ul>
<p>Sie weisen darauf hin, dass im normalen Betrieb bei großen Konferenzen nie alle Teilnehmenden als Video sichtbar wären, sondern automatisch nur die letzten N Sprechenden als Video übertragen würden, alle anderen Videoströme sind deaktiviert, bis jemand spricht. Dies lässt sich pro Jitsi-Instanz konfigurieren, standardmäßig ist die dazugehörige Konfigurationsoption <code>channelLastN</code> mit <code>-1</code> belegt, d.h. alle Teilnehmer sind sichtbar.</p>
<p>Die Videobridge läuft mit Java und war auf 3 GB Arbeitsspeicher limitiert, der zugewiesene Speicher (Resident Set Size) überschritt nicht 1,5 GB.</p>
<p>Genereller Tipp: Wenn besonders viele Teilnehmer in einer Konferenz sind oder auf dem Server, kann die Videoqualität reduziert werden. Steht der Server generell unter Last, kann die (maximale) Videoauflösung per Konfiguration reduziert werden, z.B. von 720p auf 480p.</p>
<p><a id="load-balancing-wie-skaliert-man-jitsi"></a></p>
<h2 id="load-balancing-wie-skaliert-man-jitsi">Load-Balancing: Wie skaliert man Jitsi?</h2>
<p>Das Jitsi-Team stellt eine <a href="https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-scalable">Anleitung zur Skalierung von Jitsi</a> bereit.</p>
<p>Das Setup besteht grob aus einem Server mit allen Jitsi-Komponenten außer der Videobridge und beliebig viele Videobridge-Server.</p>
<p>Die Videobridge hat die meiste Arbeit zu leisten. Sie sollte entsprechend gut ausgestattet sein, mit 4 oder 8 CPU-Kernen und 8 GB RAM pro Server. Hier möchte ich ergänzen: 4 Kerne erscheinen mir arg wenig, wenn die Videobridge belastbar sein soll. Am besten soviele CPUs/Kerne wie möglich.</p>
<p>Der Server mit der Web-Applikation, Prosody usw. ist genügsamer, solange nicht allzu viele Konferenzen gleichzeitig laufen. Hier reichen 4 CPU-Kerne und 8 GB Ram.</p>
<p>Die aktuelle <a href="https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-scalable">Anleitung</a> ersetzt <strong>veraltete Tutorials</strong> zum Load-Balancing für <a href="https://www.youtube.com/watch?v=Jj8a6ZRgehI">Cloud</a> und <a href="https://www.youtube.com/watch?v=LyGV4uW8km8">Server-Farm</a>, die ich an sich ganz anschaulich fand. Ich würde ergänzen wollen, dass die Bandbreite der Videobridge der kritische Punkt ist und der begrenzende Faktor für die Größe einer einzelnen Konferenz. Man sollte mindestens 1 Gbps pro Server an Bandbreite vorsehen.</p>
<p>Eine Konferenz kann m.W. nur auf einer Videobridge laufen, es können jedoch mehrere Konferenzen über mehrere Videobridges verteilt werden.</p>
<ul>
<li><a href="https://www.netways.de/blog/2020/03/27/jitsi-best-practice-und-skalierung/">Eine weitere Anleitung findet sich bei Netways.</a></li>
<li><a href="https://blog.scaleway.com/2020/building-jitsi-solution-powered-by-scaleway/">Hier von Scaleway</a> und das Ergebnis: Deren <a href="https://ensemble.scaleway.com/">Eingangstor zu Jitsi-Instanzen.</a></li>
</ul>
<p><a id="%C3%9Cberarbeitungenupdates"></a></p>
<h2 id="uberarbeitungenupdates">Überarbeitungen/Updates</h2>
<p><a href="#top">Nach oben</a></p>
<ul>
<li>26.07.2020:<ul>
<li>Zwischenzeitlich verweisten Link zur Skalierung von Jitsi korrigiert. Vielen Dank für den Hinweis, M.!</li>
</ul>
</li>
<li>02.05.2020:<ul>
<li>Rechtschreibfehler korrigiert</li>
</ul>
</li>
<li>01.05.2020:<ul>
<li>Präzisierung des Absatzes bezgl. Anbietern und ihrer Zusammenarbeit mit Strafverfolgern</li>
<li>Kleine Ergänzung: <a href="#pflichten-als-telekommunkationsanbieter">Pflichten für Telekommunikationsanbieter</a> und offene Frage zur Einstufung von Jitsi</li>
<li>Ergänzung <a href="#weitere-m%C3%B6glichkeiten-jitsi-zu-nutzen">weiterer Optionen zur Nutzung von Jitsi</a></li>
<li>Weiteres Beispiel zum <a href="#load-balancing-wie-skaliert-man-jitsi">Load-Balancing von Jitsi</a></li>
<li>Verdeutlichung <a href="#last-wie-viele-teilnehmende-kann-ein-jitsi-meet-server-verkraften">Last</a>: <code>channelLastN</code> ist standardmäßig unbeschränkt</li>
<li>Technische Absätze gebündelt und ans Ende verschoben, um Lesende mit wenig Technikinteresse nicht direkt abzuhängen.</li>
</ul>
</li>
</ul>
<p><a href="#top">Nach oben</a></p>Scuba divers: Be cautious after recovery from Covid-19! (Update)2020-04-22T23:00:00+02:002020-04-22T23:00:00+02:00Jan Beilicketag:jotbe.io,2020-04-22:/blog/2020/04/scuba-divers-be-cautious-after-recovery-from-covid-19/Even if you are young, fit and considered as recovered, your lungs might have suffered some long-lasting damage.<p><a href="https://www.tauchmedizin-tirol.com/team">Dr. Frank Hartig</a> heads the emergency department in Innsbruck (Austria, Tyrol) and is the responsible crisis coordinator / disaster officer for Covid-19 patients. Around six divers, which his team took care of, recovered from Covid-19 but they received preliminary bad news regarding their medical fitness to dive:</p>
<ul>
<li><a href="https://www.wetnotes.eu/tauchen-nach-covid-19-erkrankung/">German source</a></li>
<li><a href="https://translate.google.com/translate?hl=&sl=de&tl=en&u=https%3A%2F%2Fwww.wetnotes.eu%2Ftauchen-nach-covid-19-erkrankung%2F">English translation</a></li>
</ul>
<p>Bottom line is: If you are an active diver who survived Covid-19, get thourougly examined by an experienced diving doctor, even if your medical fitness to dive certificate is still valid!</p>
<p><strong>Update (3.6.2020):</strong> </p>
<ul>
<li><a href="https://taucher.net/diveinside-auch_das_noch__taucher-spaetschaeden_nach_ueberstandener_covid-19_krankheit__-kaz8230">Here a German report</a> (<a href="https://translate.google.com/translate?hl=&sl=de&tl=en&u=https%3A%2F%2Ftaucher.net%2Fdiveinside-auch_das_noch__taucher-spaetschaeden_nach_ueberstandener_covid-19_krankheit__-kaz8230&sandbox=1">English translation</a>) about an entrepreneur and diving instructor, who returned from Mexico after a three weeks diving vacation. He suffered from Covid-19, had severe symptoms and spent five days in the ICU.</li>
<li><a href="http://divemagazine.co.uk/skills/8907-serious-problems-diving-after-covid19">An article by DIVE Magazine</a> referencing the aforementioned article by Dr. Hartig as well as a <a href="http://www.sbmhs-bvoog.be/">report by the Belgian Society for Diving and Hyperbaric Medicine</a> that gives advice to scuba divers who may have had Covid-19.</li>
<li><a href="http://www.eubs.org/?p=1209">A position paper by the European Underwater and Baromedical Society</a> in various languages.</li>
<li><a href="https://www.gtuem.org/files/1011/20200424-gemeinsame-stellungnahme-tauchen-und-covid19-gt-m-dlrg-vdst.pdf">A joint position paper by DLRG/GTÜM/VDST (PDF, DE)</a>, where they also point out that the article by Dr. Hartig is based on professional observations and not a scientific study. </li>
</ul>36C32020-01-05T19:40:00+01:002020-01-05T19:40:00+01:00Jan Beilicketag:jotbe.io,2020-01-05:/blog/2020/01/36c3/I attended the Chaos Communication Congress which took place between the 27th to 30th of Dec in Leipzig, Germany, this time in its 36th iteration. It is an annual conference with currently around 17.000 visitors, over 140 talks/lectures and hundreds of workshops about technology, security, freedom of speech, privacy, and society. In this post you will find a couple of recommended talks.<p>I attended the <a href="https://events.ccc.de/congress/2019/wiki/index.php/Main_Page">Chaos Communication Congress</a> which took place between the 27th to 30th of Dec in Leipzig, Germany, this time in its 36th iteration. It is an annual conference with currently around 17.000 visitors, over 140 talks/lectures and hundreds of workshops about technology, security, freedom of speech, privacy, and society. The not-for-profit congress is entirely organised and run by thousands of volunteers called <a href="https://events.ccc.de/congress/2019/wiki/index.php/Static:Volunteers">Angels</a>.</p>
<p>Most of the talks have been recorded and you can <a href="https://media.ccc.de/c/36c3">watch them online or download them.</a> If you want to have a more comfortable way of watching the talks on an Android phone/tablet/TV or Amazon Fire TV, I recommend this app:</p>
<ul>
<li><a href="https://play.google.com/store/apps/details?id=de.nicidienase.chaosflix&hl=en_US">Chaosflix for Android</a></li>
<li><a href="https://www.amazon.com/gp/product/B06Y3GYYGB">Chaosflix for Amazon Fire TV</a></li>
</ul>
<div class="m-imagegrid m-container-inflate">
<div>
<figure style="width: 39.024%">
<a href="https://jotbe.io/img/36c3/005-web.jpg"><img src="https://jotbe.io/img/36c3/005-web.t.jpg" /><div>
</div>
</a>
</figure>
<figure style="width: 39.024%">
<a href="https://jotbe.io/img/36c3/002-web.jpg"><img src="https://jotbe.io/img/36c3/002-web.t.jpg" /><div>
</div>
</a>
</figure>
<figure style="width: 21.951%">
<a href="https://jotbe.io/img/36c3/009-web.jpg"><img src="https://jotbe.io/img/36c3/009-web.t.jpg" /><div>
</div>
</a>
</figure>
</div>
<div>
<figure style="width: 50.000%">
<a href="https://jotbe.io/img/36c3/008-web.jpg"><img src="https://jotbe.io/img/36c3/008-web.t.jpg" /><div>
</div>
</a>
</figure>
<figure style="width: 50.000%">
<a href="https://jotbe.io/img/36c3/001-web.jpg"><img src="https://jotbe.io/img/36c3/001-web.t.jpg" /><div>
</div>
</a>
</figure>
</div>
</div>
<p>The talks are usually available in various languages and have subtitles. Check out the video settings (gear icon) to find out about the available translations. Missing subtitles might be added later. You can also help adding/improving the subtitles, just check out the corresponding link for subtitles below each video.</p>
<ul>
<li><a href="https://media.ccc.de/v/36c3-11097-von_menschen_radikalisiert_uber_rassismus_im_internet">Von Menschen radikalisiert: Über Rassismus im Internet</a> (Michael Kreil)</li>
<li><a href="https://media.ccc.de/v/36c3-10541-hacking_the_media_gefluchtete_schmuggeln_nazis_torten_passe_falschen">Hacking the Media: Geflüchtete schmuggeln, Nazis torten, Pässe fälschen - Warum wir zivilen Ungehorsam und Subversion mehr brauchen…</a> (Conny Runner and Ronny Sommer)</li>
<li><a href="https://media.ccc.de/v/36c3-11114-die_affare_hannibal">Die Affäre Hannibal - Eine erste Bilanz</a> (Sebastian Erb and Daniel Schulz)</li>
<li><a href="https://media.ccc.de/v/36c3-10595-hacker_hin_oder_her_die_elektronische_patientenakte_kommt">"Hacker hin oder her": Die elektronische Patientenakte kommt!</a> (Martin Tschirsich, cbro - Dr. med. Christian Brodowski and Dr. André Zilch)</li>
<li><a href="https://media.ccc.de/v/36c3-11217-finfisher_verklagen">Finfisher verklagen - Rechtsbrüche beim Export von Überwachungssoftware</a> (Thorsten Schröder and Ulf Buermeyer)</li>
<li><a href="https://media.ccc.de/v/36c3-10652-bahnmining_-_punktlichkeit_ist_eine_zier">BahnMining - Pünktlichkeit ist eine Zier</a> (David Kriesel)</li>
<li><a href="https://media.ccc.de/v/36c3-11175-hirne_hacken">Hirne Hacken - Menschliche Faktoren der IT-Sicherheit</a> (Linus Neumann)</li>
<li><a href="https://media.ccc.de/v/36c3-11235-36c3_infrastructure_review">36C3 Infrastructure Review</a></li>
<li><a href="https://media.ccc.de/v/36c3-10496-das_mauern_muss_weg">Das Mauern muss weg - Best of Informationsfreiheit</a> (Arne Semsrott)</li>
<li><a href="https://media.ccc.de/v/36c3-10963-der_netzpolitische_jahresruckblick">Der netzpolitische Jahresrückblick - War alles schon mal besser</a> (Markus Beckedahl)</li>
<li><a href="https://media.ccc.de/v/36c3-11218-weichenstellung">Weichenstellung - In welcher digitalen Welt werden wir leben?</a> (Ulrich Kelber)</li>
<li><a href="https://media.ccc.de/v/36c3-11008-server_infrastructure_for_global_rebellion">Server Infrastructure for Global Rebellion</a> (Julian Oliver)</li>
<li><a href="https://media.ccc.de/v/36c3-119-fernostwrts-digitale-widerstandsstrategien-in-hongkong">Fernostwärts: Digitale Widerstandsstrategien in Hongkong</a> (Katharin Tai)</li>
<li><a href="https://media.ccc.de/v/36c3-10961-boeing_737max_automated_crashes">Boeing 737MAX: Automated Crashes - Underestimating the dangers of designing a protection system</a> (Bernd Sieker)</li>
<li><a href="https://media.ccc.de/v/36c3-10689-on_the_insecure_nature_of_turbine_control_systems_in_power_generation">On the insecure nature of turbine control systems in power generation</a> (repdet, @_moradek_ and c0rs)</li>
<li><a href="https://media.ccc.de/v/36c3-10565-what_s_left_for_private_messaging#t=74">What's left for private messaging?</a> (Will Scott)</li>
<li><a href="https://media.ccc.de/v/36c3-10852-wie_klimafreundlich_ist_software">Wie klimafreundlich ist Software?</a> (Marina Köhn and Eva Kern)</li>
<li><a href="https://media.ccc.de/v/36c3-11119-energiespeicher_von_heute_fur_die_energie_von_morgen">Energiespeicher von heute für die Energie von morgen - Wohin eigentlich mit all der erneuerbaren Energie?</a> (Sebastian Pischel)</li>
</ul>
How to clone a LUKS-encrypted HDD to a larger SSD2019-03-20T22:00:00+01:002019-03-20T22:00:00+01:00Jan Beilicketag:jotbe.io,2019-03-20:/blog/2019/03/how-to-clone-a-luks-encrypted-hhd-to-a-larger-ssd/<p>Migrating LUKS-encrypted drive to a larger one is actually quite simple if you have <code>gparted</code>:</p>
<ol>
<li>If the drive is not unlocked, unlock it as usual.</li>
<li>If the unlocked drive is mounted, unmount it: <code>sudo umount /path/to/unencrypted-volume</code></li>
<li>Figure out the device name: <code>lsblk</code>, look for type <code>crypt</code>, e.g. <code>/dev/sdb</code>, and check which device name is the last one.</li>
<li>Plug in the new drive and run <code>lsblk</code> again, a new device, e.g. <code>/dev/sdc</code> or simply <code>sdc</code> has been added.</li>
<li>Clone drive <code>sdb</code> to <code>sdc</code> (CAREFUL, ALL DATA WILL BE OVERWRITTEN ON THE TARGET DRIVE!):
<code>time sudo dd if=/dev/sdb of=/dev/sdc bs=64K conv=sync,noerror status=progress</code></li>
<li>Afterwards you will have to resize the larger target drive: <code>sudo gparted</code> will open the partition editor.</li>
<li>Select the target drive that you want to extend. The LUKS partition on that drive will likely have a warning icon right next to the partion name. Using the menu select <code>Partition > Check</code> and click the check mark icon to run the check and repair routines.</li>
<li>After those routines have finished, the partition should be extended.</li>
</ol>Provision a new Ansible node without SSH public key and Python2019-02-25T23:58:00+01:002019-02-25T23:58:00+01:00Jan Beilicketag:jotbe.io,2019-02-25:/blog/2019/02/bootstrap-ansible-without-public-key-and-python/<p>Let's assume that we want to provision a new node <code>targethost-01.tld</code> which will likely be a fresh VM somewhere.</p>
<p>The base setup resembles:</p>
<ul>
<li>a minimal Ubuntu environment,</li>
<li>without an appropriate Python version,</li>
<li>without any SSH public keys and</li>
<li>no dedicated Ansible user (just <code>root</code>).</li>
</ul>
<p>Our goals are:</p>
<ul>
<li>Install the required Python dependencies</li>
<li>Setup users <code>ansible</code> and <code>dev</code> with SSH access using public keys</li>
</ul>
<p>We will have to create four files:</p>
<ul>
<li><code>ansible.cfg</code></li>
<li><code>inventory</code></li>
<li><code>playbooks/bootstrap-python.yml</code></li>
<li><code>playbooks/bootstrap.yml</code></li>
</ul>
<p>Furthermore we should have a folder <code>public</code> which contains our SSH public keys that we want to store in the corresponding <code>authorized_keys</code> file on the node. For the convenience, we store the SSH private key of the <code>ansible</code> user in <code>private/id_rsa</code>. IF the file should be stored somewhere else, just edit <code>ansible.cfg</code> accordingly.</p>
<p>The <code>ansible.cfg</code> contains:</p>
<div class="highlight"><pre><span></span><code><span class="k">[defaults]</span>
<span class="na">inventory</span> <span class="o">=</span> <span class="s">./inventory</span>
<span class="na">remote_user</span> <span class="o">=</span> <span class="s">ansible</span>
<span class="c1">#forks = 20</span>
<span class="c1">#gathering = smart</span>
<span class="c1">#fact_caching = jsonfile</span>
<span class="c1">#fact_caching_connection = ./facts</span>
<span class="c1">#fact_caching_timeout = 600</span>
<span class="na">log_path</span> <span class="o">=</span> <span class="s">./ansible.log</span>
<span class="na">nocows</span> <span class="o">=</span> <span class="s">1</span>
<span class="na">private_key_file</span> <span class="o">=</span> <span class="s">./private/id_rsa</span>
<span class="na">host_key_checking</span> <span class="o">=</span> <span class="s">false</span>
<span class="k">[privilege_escalation]</span>
<span class="na">become</span> <span class="o">=</span> <span class="s">false</span>
<span class="k">[ssh_connection]</span>
<span class="na">ssh_args</span> <span class="o">=</span> <span class="s">-o ControlMaster=auto -o ControlPersist=600s -o ServerAliveInterval=60</span>
<span class="na">control_path</span> <span class="o">=</span> <span class="s">%(directory)s/%%h-%%r</span>
<span class="na">pipelining</span> <span class="o">=</span> <span class="s">True</span>
<span class="na">timeout</span> <span class="o">=</span> <span class="s">10</span>
</code></pre></div>
<p>This configuration comes with sane defaults and some performance optimizations for SSH connections. For even better performance, <code>forks</code>, <code>gathering</code> and <code>fact_*</code> settings could be enabled.</p>
<p>We also need an <code>inventory</code> file containing:</p>
<div class="highlight"><pre><span></span><code><span class="k">[ubuntu]</span>
<span class="na">targethost-01.tld ansible_python_interpreter</span><span class="o">=</span><span class="s">/usr/bin/python2.7</span>
</code></pre></div>
<p>Playbook <code>bootstrap-python.yml</code>:</p>
<div class="highlight"><pre><span></span><code><span class="err">- hosts: ubuntu</span>
<span class="err"> gather_facts: false</span>
<span class="err"> become: true</span>
<span class="err"> pre_tasks:</span>
<span class="err"> - name: Generate locals</span>
<span class="err"> raw: export LC_ALL="de_DE.UTF-8"; locale-gen de_DE.UTF-8</span>
<span class="err"> changed_when: false</span>
<span class="err"> - name: install python 2</span>
<span class="err"> raw: test -e /usr/bin/python || (apt -y update && apt -y install python-minimal)</span>
<span class="err"> changed_when: false</span>
<span class="err"> - setup: # gather facts</span>
<span class="err">- hosts: alpine</span>
<span class="err"> gather_facts: false</span>
<span class="err"> become: true</span>
<span class="err"> pre_tasks:</span>
<span class="err"> - name: install python 2</span>
<span class="err"> raw: test -e /usr/bin/python || (apk --update add python)</span>
<span class="err"> changed_when: false</span>
<span class="err"> - setup: # gather facts</span>
</code></pre></div>
<p>Playbook <code>bootstrap.yml</code>:</p>
<div class="highlight"><pre><span></span><code><span class="x">---</span>
<span class="x">- import_playbook: bootstrap-python.yml</span>
<span class="x">- hosts: all</span>
<span class="x"> vars:</span>
<span class="x"> users:</span>
<span class="x"> - ansible</span>
<span class="x"> - dev</span>
<span class="x"> tasks:</span>
<span class="x"> - name: 'Create users with corresponding groups'</span>
<span class="x"> user:</span>
<span class="x"> name: "</span><span class="cp">{{</span> <span class="nv">item</span> <span class="cp">}}</span><span class="x">"</span>
<span class="x"> groups: "users"</span>
<span class="x"> with_items: "</span><span class="cp">{{</span> <span class="nv">users</span> <span class="cp">}}</span><span class="x">"</span>
<span class="x"> - name: 'Add corresponding authorized_keys to each user'</span>
<span class="x"> authorized_key:</span>
<span class="x"> user: "</span><span class="cp">{{</span> <span class="nv">item</span> <span class="cp">}}</span><span class="x">"</span>
<span class="x"> state: present</span>
<span class="x"> # Public key file has to be named according to the user, </span>
<span class="x"> # e.g. 'ansible.ssh.pub'</span>
<span class="x"> key: "</span><span class="cp">{{</span> <span class="nv">lookup</span><span class="o">(</span><span class="s1">'file'</span><span class="o">,</span> <span class="s1">'../public/'</span> <span class="o">+</span> <span class="nv">item</span> <span class="o">+</span> <span class="s1">'.ssh.pub'</span><span class="o">)</span> <span class="cp">}}</span><span class="x">"</span>
<span class="x"> with_items: "</span><span class="cp">{{</span> <span class="nv">users</span> <span class="cp">}}</span><span class="x">"</span>
</code></pre></div>
<p>Execute the following command on your Ansible control machine (e.g. your local machine):</p>
<div class="highlight"><pre><span></span><code>$ ansible-playbook <span class="se">\</span>
--inventory-file<span class="o">=</span>my-inventory <span class="se">\</span>
--ask-pass <span class="se">\</span>
--user root <span class="se">\</span>
playbooks/bootstrap.yml <span class="se">\</span>
--limit targethost-01.tld
</code></pre></div>
<p>This is what happens as a result:</p>
<ul>
<li>Ansible connects to the node <code>targethost-01.tld</code> via SSH using password credentials.</li>
<li>It bootstraps Python if the binary cannot be found. As the node is in the host group <code>ubuntu</code>, Python will be installed using <code>apt</code>. </li>
<li>Ansible then creates the users, adds them to their corresponding groups and provisions the <code>authorized_keys</code> with the public keys under <code>public/</code>.</li>
</ul>
<p>If the provisioning was successful, any subsequent run of Ansible against that node should use the SSH key:</p>
<div class="highlight"><pre><span></span><code>$ ansible targethost-01.tld -m ping
</code></pre></div>Neue Aufgaben2019-02-09T14:00:00+01:002019-02-09T14:00:00+01:00Jan Beilicketag:jotbe.io,2019-02-09:/blog/2019/02/neue-aufgaben/<div class="m-row">
<div class="m-col-m-2">
<img alt="Zühlke Logo" class="m-image" src="https://jotbe.io/img/zuehlke_logo_rgb.png" />
</div>
<div class="m-col-m-10">
Nach zweieinhalb Jahren Arbeit an <a href="https://www.24contenthub.com/">24|contenthub</a> mit mehreren gleichzeitigen Rollen, wollte ich mich wieder auf einen Bereich fokussieren. Fortan unterstütze ich daher die <a href="https://www.zuehlke.com/">Zühlke Gruppe</a> als DevOps Engineer bei <a href="https://en.wikipedia.org/wiki/CI/CD">CI/CD</a> und <a href="https://en.wikipedia.org/wiki/Application_service_management">ASM</a>.</div>
</div>
Website-Relaunch2019-02-03T23:55:00+01:002019-02-03T23:55:00+01:00Jan Beilicketag:jotbe.io,2019-02-03:/blog/2019/02/website-relaunch-pelican/<p>Nach etlichen Jahren musste endlich mal ein neuer Unterbau samt Gewand her. Meine Website inkl. Blog wird zukünftig mittels <a href="https://getpelican.com/">Pelican</a> statisch generiert.</p>
<p>Als Template-Basis habe ich mich für <a href="https://mcss.mosra.cz/">m.css</a> entschieden, das sehr schlank ist und ohne JS-Schnickschnack daher kommt, was sich auch auf die Ladezeit auswirken sollte. Gleichzeitig bietet es unter der Haube ein paar Pelican-Plugins, mit denen man wunderbar Bilder in Artikel integrieren kann.</p>
<p>Inhaltlich wird sich hier in der nächsten Zeit voraussichtlich auch wieder mehr tun. Angefangen habe ich im Rahmen des Neustarts mit ein paar <a href="https://jotbe.io/diving/">Artikeln zum Thema Tauchen</a>, eine Sportart, die ich übrigens wärmstens empfehlen kann!</p>Neuer GPG-Key2018-05-25T22:51:00+02:002018-05-25T22:51:00+02:00Jan Beilicketag:jotbe.io,2018-05-25:/blog/2018/05/neuer-gpg-key/<p>Bitte <a href="/contact/">hier entlang</a> oder <a href="http://keybase.io/jotbe">hier.</a></p>Firefox 57: viele Add-Ons funktionieren nicht mehr - Downgrade hilft2017-11-14T22:21:00+01:002017-11-14T22:21:00+01:00Jan Beilicketag:jotbe.io,2017-11-14:/blog/2017/11/firefox-57-viele-add-ons-funktionieren-nicht-mehr-downgrade-hilft/<p>Wer wie ich seit Jahren auf Mozilla Firefox schwört, vor allem auf den reichhaltigen Fundus an nützlichen Add-Ons, der wird möglicherweise vorerst an Firefox 57 wenig Freude haben. Der neue Browser ist zwar rasend schnell dank <a href="https://blog.mozilla.org/blog/2017/11/14/introducing-firefox-quantum/">Quantum</a>, allerdings setzt die Version auf die <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions">WebExtension API</a>, die inkompatibel zur bisherigen API …</p><p>Wer wie ich seit Jahren auf Mozilla Firefox schwört, vor allem auf den reichhaltigen Fundus an nützlichen Add-Ons, der wird möglicherweise vorerst an Firefox 57 wenig Freude haben. Der neue Browser ist zwar rasend schnell dank <a href="https://blog.mozilla.org/blog/2017/11/14/introducing-firefox-quantum/">Quantum</a>, allerdings setzt die Version auf die <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions">WebExtension API</a>, die inkompatibel zur bisherigen API ist. Alle alten Add-Ons werden mit Firefox 57 nicht mehr funktionieren. Viele Entwickler haben ihre Add-Ons bereits angepasst bzw. neu geschrieben, viele arbeiten noch daran, oder finden <a href="https://web.archive.org/web/20170914192149/http://fasezero.com/">keinen Weg oder haben verständlicherweise keine Muße mehr</a>, dies zu tun.</p>
<p>Wer weiterhin Legacy Add-Ons verwenden will oder keine Alternative hat, der muss vorerst ein <a href="https://www.mozilla.org/en-US/firefox/organizations/all/">Downgrade auf die ESR-Version</a> durchführen.</p>TLS/SSL über Let's Encrypt2017-02-12T21:58:00+01:002017-02-12T21:58:00+01:00Jan Beilicketag:jotbe.io,2017-02-12:/blog/2017/02/tlsssl-uber-lets-encrypt/<p>Seit ein paar Jahren hatte ich hier <a href="https://blog.jotbe-fx.de/ssl-cacert-mit-pfs.html">CAcert im Einsatz</a>. An sich finde ich die nicht-kommerziellen Zertifizierungsstelle sehr unterstützenswert, nur leider hat es CAcert bislang nicht geschafft, wieder Eingang in die Truststores der Browser zu finden.</p>
<p>Zwischenzeitlich wurde die offene CA <a href="https://letsencrypt.org/">Let’s Encrypt</a> (LE) aus der Taufe gehoben, mit …</p><p>Seit ein paar Jahren hatte ich hier <a href="https://blog.jotbe-fx.de/ssl-cacert-mit-pfs.html">CAcert im Einsatz</a>. An sich finde ich die nicht-kommerziellen Zertifizierungsstelle sehr unterstützenswert, nur leider hat es CAcert bislang nicht geschafft, wieder Eingang in die Truststores der Browser zu finden.</p>
<p>Zwischenzeitlich wurde die offene CA <a href="https://letsencrypt.org/">Let’s Encrypt</a> (LE) aus der Taufe gehoben, mit denen man kostenfreie, automatisiert bereitgestellte Domain-basierte TLS-Zertifikate verwenden kann. Bei einigen Projekten habe ich LE bereits erfolgreich eingesetzt und bin generell sehr zufrieden damit, von sporadischen Problemen bei der automatischen Erneuerung mal abgesehen.</p>
<p>Mein aktuelles CAcert-Zertifikat hätte in Kürze wieder erneuert werden müssen, was ich nun zum Anlass genommen habe, für meine Hauptdomain LE einzusetzen. Damit kann ich nun problemlos standardmäßig TLS anbieten und nebenbei macht sich der CA-Wechsel positiv beim <a href="https://www.ssllabs.com/ssltest/analyze.html?d=jotbe%2dfx.de&s=95.143.172.187&hideResults=on&latest">SSL Server Test</a> bemerkbar.</p>Auf zu neuen Ufern!2016-07-01T21:04:00+02:002016-07-01T21:04:00+02:00Jan Beilicketag:jotbe.io,2016-07-01:/blog/2016/07/auf-zu-neuen-ufern/<p>Nach zehn Jahren wird es Zeit für eine neue berufliche Herausforderung. Ich war <a href="http://www.stroeerdigitalmedia.de">hier</a>, nun bin ich <a href="http://www.24technology.de/">hier</a>.</p>nginx configuration with FastCGI for osTicket2016-02-14T01:36:00+01:002016-02-14T01:36:00+01:00Jan Beilicketag:jotbe.io,2016-02-14:/blog/2016/02/nginx-configuration-with-fastcgi-for-osticket/<p>I set up <a href="http://osticket.com/">osTicket</a> on a <a href="https://www.freebsd.org/">FreeBSD</a> server and wanted to have it served by <a href="http://nginx.org/">nginx</a> and FastCGI. I ran into some problems with the <a href="http://www.osticket.com/forum/discussion/86282/client-side-only-file-attachment-to-ticket-causes-file-upload-error-undefined-403">approaches</a> other people described and even with the <a href="https://www.nginx.com/resources/wiki/start/topics/recipes/osticket/">recipe found on the nginx website</a>. These problems resulted in errors logged as <code>FastCGI sent in stderr …</code></p><p>I set up <a href="http://osticket.com/">osTicket</a> on a <a href="https://www.freebsd.org/">FreeBSD</a> server and wanted to have it served by <a href="http://nginx.org/">nginx</a> and FastCGI. I ran into some problems with the <a href="http://www.osticket.com/forum/discussion/86282/client-side-only-file-attachment-to-ticket-causes-file-upload-error-undefined-403">approaches</a> other people described and even with the <a href="https://www.nginx.com/resources/wiki/start/topics/recipes/osticket/">recipe found on the nginx website</a>. These problems resulted in errors logged as <code>FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream</code> when I tried to upload an attachment to a ticket that I created on the client's side (not on the agent's side, i.e. <code>/scp</code>). The client/reporter received something like <code>File Upload error <filename-here> undefined400</code> in an alert box. Additionally the WYSIWYG icons in the issue description area were missing. Some things need to be added to the corresponding <code>server</code>-block of the nginx configuration to fix these issues. I will only show the relevant parts of that block.</p>
<p><code>/path/to/nginx/conf/nginx.conf</code>:</p>
<div class="highlight"><pre><span></span><code><span class="err">#</span> <span class="o">...</span> <span class="nt">more</span> <span class="nt">server</span> <span class="nt">block</span> <span class="nt">options</span> <span class="o">...</span>
<span class="nt">root</span> <span class="o">/</span><span class="nt">usr</span><span class="o">/</span><span class="nt">local</span><span class="o">/</span><span class="nt">www</span><span class="o">/</span><span class="nt">myhost</span><span class="o">/</span><span class="nt">osticket</span><span class="o">/;</span>
<span class="nt">set</span> <span class="o">$</span><span class="nt">path_info</span> <span class="s2">""</span><span class="o">;</span>
<span class="nt">location</span> <span class="o">~</span> <span class="o">/</span><span class="nt">include</span> <span class="p">{</span>
<span class="err">deny</span> <span class="err">all</span><span class="p">;</span>
<span class="err">return</span> <span class="err">403</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">location</span> <span class="o">/</span> <span class="p">{</span>
<span class="err">try_files</span> <span class="err">$uri</span> <span class="err">$uri/</span> <span class="err">index.php</span><span class="p">;</span>
<span class="err">index</span> <span class="err">index.php</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">if</span> <span class="o">($</span><span class="nt">request_uri</span> <span class="o">~</span> <span class="s2">"^/api(/</span><span class="cp">[</span><span class="p">^</span><span class="o">\?</span><span class="cp">]</span><span class="s2">+)"</span><span class="o">)</span> <span class="p">{</span>
<span class="err">set</span> <span class="err">$path_info</span> <span class="err">$1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">if</span> <span class="o">($</span><span class="nt">request_uri</span> <span class="o">~</span> <span class="s2">"^/scp/.*\.php(/</span><span class="cp">[</span><span class="p">^</span><span class="o">\?</span><span class="cp">]</span><span class="s2">+)"</span><span class="o">)</span> <span class="p">{</span>
<span class="err">set</span> <span class="err">$path_info</span> <span class="err">$1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">if</span> <span class="o">($</span><span class="nt">request_uri</span> <span class="o">~</span> <span class="s2">"^/.*\.php(/</span><span class="cp">[</span><span class="p">^</span><span class="o">\?</span><span class="cp">]</span><span class="s2">+)"</span><span class="o">)</span> <span class="p">{</span>
<span class="err">set</span> <span class="err">$path_info</span> <span class="err">$1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">location</span> <span class="o">~</span> <span class="o">^/</span><span class="nt">scp</span><span class="o">/</span><span class="nt">ajax</span><span class="p">.</span><span class="nc">php</span><span class="o">/.*$</span> <span class="p">{</span>
<span class="err">try_files</span> <span class="err">$uri</span> <span class="err">$uri/</span> <span class="err">/scp/ajax.php?$query_string</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">location</span> <span class="o">~</span> <span class="o">^/</span><span class="nt">ajax</span><span class="p">.</span><span class="nc">php</span><span class="o">/.*$</span> <span class="p">{</span>
<span class="err">try_files</span> <span class="err">$uri</span> <span class="err">$uri/</span> <span class="err">/ajax.php?$query_string</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">location</span> <span class="o">~</span> <span class="o">^/</span><span class="nt">api</span><span class="o">/(?</span><span class="p">:</span><span class="nd">tickets</span><span class="o">|</span><span class="nt">tasks</span><span class="o">).*$</span> <span class="p">{</span>
<span class="err">try_files</span> <span class="err">$uri</span> <span class="err">$uri/</span> <span class="err">/api/http.php?$query_string</span><span class="p">;</span>
<span class="p">}</span>
<span class="err">#</span> <span class="nt">pass</span> <span class="nt">the</span> <span class="nt">PHP</span> <span class="nt">scripts</span> <span class="nt">to</span> <span class="nt">FastCGI</span> <span class="nt">server</span> <span class="nt">listening</span> <span class="nt">on</span> <span class="nt">127</span><span class="p">.</span><span class="nc">0</span><span class="p">.</span><span class="nc">0</span><span class="p">.</span><span class="nc">1</span><span class="p">:</span><span class="nd">9000</span>
<span class="err">#</span> <span class="nt">or</span> <span class="nt">a</span> <span class="nt">unix</span> <span class="nt">socket</span><span class="o">.</span>
<span class="err">#</span>
<span class="nt">location</span> <span class="o">~</span> <span class="err">\</span><span class="p">.</span><span class="nc">php</span><span class="o">$</span> <span class="p">{</span>
<span class="err">include</span> <span class="err">fastcgi_params</span><span class="p">;</span>
<span class="err">fastcgi_param</span> <span class="err">SCRIPT_FILENAME</span> <span class="err">$request_filename</span><span class="p">;</span>
<span class="err">#</span> <span class="err">fastcgi_pass</span> <span class="err">127.0.0.1:9000</span><span class="p">;</span>
<span class="err">#</span> <span class="err">The</span> <span class="err">socket</span> <span class="err">approach</span> <span class="err">requires</span> <span class="err">the</span> <span class="err">module</span> <span class="err">php5-fpm</span>
<span class="err">fastcgi_pass</span> <span class="n">unix</span><span class="p">:</span><span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">run</span><span class="o">/</span><span class="n">php-fpm</span><span class="o">.</span><span class="n">sock</span><span class="p">;</span>
<span class="p">}</span>
<span class="err">#</span> <span class="nt">deny</span> <span class="nt">access</span> <span class="nt">to</span> <span class="p">.</span><span class="nc">htaccess</span> <span class="nt">files</span><span class="o">,</span> <span class="nt">if</span> <span class="nt">Apache</span><span class="s1">'s document root</span>
<span class="s1"># concurs with nginx'</span><span class="nt">s</span> <span class="nt">one</span>
<span class="err">#</span>
<span class="nt">location</span> <span class="o">~</span> <span class="o">/</span><span class="err">\</span><span class="p">.</span><span class="nc">ht</span> <span class="p">{</span>
<span class="err">deny</span> <span class="err">all</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<p><code>/path/to/nginx/conf/fastcgi_params</code>:</p>
<div class="highlight"><pre><span></span><code><span class="n">fastcgi_param</span> <span class="n">QUERY_STRING</span> <span class="err">$</span><span class="n">query_string</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">REQUEST_METHOD</span> <span class="err">$</span><span class="n">request_method</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">CONTENT_TYPE</span> <span class="err">$</span><span class="n">content_type</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">CONTENT_LENGTH</span> <span class="err">$</span><span class="n">content_length</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">SCRIPT_FILENAME</span> <span class="err">$</span><span class="n">document_root$fastcgi_script_name</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">SCRIPT_NAME</span> <span class="err">$</span><span class="n">fastcgi_script_name</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">PATH_INFO</span> <span class="err">$</span><span class="n">path_info</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">REQUEST_URI</span> <span class="err">$</span><span class="n">request_uri</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">DOCUMENT_URI</span> <span class="err">$</span><span class="n">document_uri</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">DOCUMENT_ROOT</span> <span class="err">$</span><span class="n">document_root</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">SERVER_PROTOCOL</span> <span class="err">$</span><span class="n">server_protocol</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">HTTPS</span> <span class="err">$</span><span class="n">https</span> <span class="n">if_not_empty</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">GATEWAY_INTERFACE</span> <span class="n">CGI</span><span class="o">/</span><span class="mi">1</span><span class="p">.</span><span class="mi">1</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">SERVER_SOFTWARE</span> <span class="n">nginx</span><span class="o">/</span><span class="err">$</span><span class="n">nginx_version</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">REMOTE_ADDR</span> <span class="err">$</span><span class="n">remote_addr</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">REMOTE_PORT</span> <span class="err">$</span><span class="n">remote_port</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">SERVER_ADDR</span> <span class="err">$</span><span class="n">server_addr</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="n">SERVER_PORT</span> <span class="err">$</span><span class="n">server_port</span><span class="p">;</span>
<span class="n">fastcgi_param</span> <span class="k">SERVER_NAME</span> <span class="err">$</span><span class="k">server_name</span><span class="p">;</span>
<span class="o">#</span> <span class="n">PHP</span> <span class="k">only</span><span class="p">,</span> <span class="n">required</span> <span class="k">if</span> <span class="n">PHP</span> <span class="n">was</span> <span class="n">built</span> <span class="k">with</span> <span class="c1">--enable-force-cgi-redirect</span>
<span class="n">fastcgi_param</span> <span class="n">REDIRECT_STATUS</span> <span class="mi">200</span><span class="p">;</span>
</code></pre></div>GESTOHLEN: Stevens X Premium 7X SX Disc, Rahmennummer S13CEYPA2015-08-15T12:58:00+02:002015-08-15T12:58:00+02:00Jan Beilicketag:jotbe.io,2015-08-15:/blog/2015/08/gestohlen-stevens-x-premium-7x-sx-disc-rahmennummer-s13ceypa/<p>Mir wurde am 14.8.2015 zwischen 19 und 22 Uhr mein Crossbike gestohlen.</p>
<p><strong>Ort:</strong> Feldstern, Sternstr. 2, 20357 Hamburg<br>
<strong>Typ:</strong> Allround X Premium 7X SX Disc<br>
<strong>Farbe:</strong> Velvet Steel Gray<br>
<strong>Rahmennummer:</strong> <code>S13CEYPA</code><br>
<strong>Besonderheiten:</strong> schwarzer Gepäckträger, schwarze Klemmschutzbleche, Halterungen für batteriebetriebene Strahler vorne und hinten.<br>
<strong>Sicherung:</strong> ABUS Bügelschloss, verbunden mit …</p><p>Mir wurde am 14.8.2015 zwischen 19 und 22 Uhr mein Crossbike gestohlen.</p>
<p><strong>Ort:</strong> Feldstern, Sternstr. 2, 20357 Hamburg<br>
<strong>Typ:</strong> Allround X Premium 7X SX Disc<br>
<strong>Farbe:</strong> Velvet Steel Gray<br>
<strong>Rahmennummer:</strong> <code>S13CEYPA</code><br>
<strong>Besonderheiten:</strong> schwarzer Gepäckträger, schwarze Klemmschutzbleche, Halterungen für batteriebetriebene Strahler vorne und hinten.<br>
<strong>Sicherung:</strong> ABUS Bügelschloss, verbunden mit Hinterrad, Rahmen und fest verankertem Radständer.<br>
<strong>Diebstahl polizeilich gemeldet:</strong> 14.8. gegen 22:30 Uhr,<br>
AZ <code>016/1K/0543837/2015</code></p>
<p>Bilder:</p>
<p><a href="https://blog.jotbe-fx.de/uploads/IMG_20130617_145116.jpg"><img alt="Bild1" src="https://blog.jotbe-fx.de/uploads/IMG_20130617_145116.serendipityThumb.jpg"></a> <a href="https://blog.jotbe-fx.de/uploads/IMG_20130617_143813.jpg"><img alt="Bild2" src="https://blog.jotbe-fx.de/uploads/IMG_20130617_143813.serendipityThumb.jpg"></a> <a href="https://blog.jotbe-fx.de/uploads/IMG_20130617_135449.jpg"><img alt="Bild3" src="https://blog.jotbe-fx.de/uploads/IMG_20130617_135449.serendipityThumb.jpg"></a> <a href="https://blog.jotbe-fx.de/uploads/IMG_20130617_135151.jpg"><img alt="Bild4" src="https://blog.jotbe-fx.de/uploads/IMG_20130617_135151.serendipityThumb.jpg"></a></p>
<p>Gemeldet:</p>
<ul>
<li>Fahrradjäger</li>
<li><a href="https://bikeindex.org/bikes/54713">Bike Index</a></li>
<li><a href="http://www.bikeshepherd.org/bikes/view/ag5zfmJpa2VzaGVwaGVyZHINCxIEQmlrZRi5rrcmDA">Bike Shepherd</a></li>
<li><a href="https://twitter.com/jotbe/status/632338048513085440">Twitter</a></li>
</ul>
<p>Bitte <a href="https://blog.jotbe-fx.de/kontakt.html">bei mir</a> oder der Polizei melden, wenn es irgendwo auftaucht.</p>Thinkpad in Dock: Stuttering USB input after resume2015-08-10T16:30:00+02:002015-08-10T16:30:00+02:00Jan Beilicketag:jotbe.io,2015-08-10:/blog/2015/08/thinkpad-in-dock-stuttering-usb-input-after-resume/<p>One of my machines is a Lenovo Thinkpad T420s running Sabayon Linux. For a long time I experienced issues with my USB mouse and keyboard after resuming from standby, while the notebook and the input devices were plugged into the dock. Both devices stuttered occasionally, i.e. the first key …</p><p>One of my machines is a Lenovo Thinkpad T420s running Sabayon Linux. For a long time I experienced issues with my USB mouse and keyboard after resuming from standby, while the notebook and the input devices were plugged into the dock. Both devices stuttered occasionally, i.e. the first key stroke or move of the mouse were not recognized. Sometimes I was able to fix the issues by disconnecting and reconnecting the dock’s power connector. Sometimes only a restart helped.</p>
<p>After doing lots of research in the web, I stumbled over a <a href="https://lists.debian.org/debian-user/2015/03/msg00859.html">mailinglist post</a> that suggested to remove the package <code>laptop-mode-tools</code>, if installed.</p>
<p>Guess what, the particular package was installed, I removed it and the issues have not reappeared since then.</p>Watch output of a running cronjob process2015-07-17T14:36:00+02:002015-07-17T14:36:00+02:00Jan Beilicketag:jotbe.io,2015-07-17:/blog/2015/07/watch-output-of-a-running-cronjob-process/<p>Sometimes you might want to hook into the output (stdout or stderr) of a running process, eg. of some periodically triggered script.</p>
<ol>
<li>
<p>Find out the process id:</p>
<p><code>ps ax | grep ‘processname’</code></p>
</li>
<li>
<p>Watch the I/O stream (replace <code>PROCID</code> with the process id from (1) and <code>NUM</code> with the desired I …</p></li></ol><p>Sometimes you might want to hook into the output (stdout or stderr) of a running process, eg. of some periodically triggered script.</p>
<ol>
<li>
<p>Find out the process id:</p>
<p><code>ps ax | grep ‘processname’</code></p>
</li>
<li>
<p>Watch the I/O stream (replace <code>PROCID</code> with the process id from (1) and <code>NUM</code> with the desired I/O stream, where 0: stdin, 1: stdout and 2: stderr):</p>
<p><code>tail -f /proc/PROCID/fd/NUM</code></p>
</li>
</ol>
<p><a href="http://stackoverflow.com/a/17790708">Source</a></p>Werdet aktiv: Vorratsdatenspeicherung kommt schnell2015-05-15T11:16:00+02:002015-05-15T11:16:00+02:00Jan Beilicketag:jotbe.io,2015-05-15:/blog/2015/05/werdet-aktiv-vorratsdatenspeicherung-kommt-schnell/<p><a href="https://netzpolitik.org/2015/jetzt-aktiv-werden-das-gesetz-zur-vorratsdatenspeicherung-kommt-schon-in-zwei-wochen/">Wie Netzpolitik berichtet</a>, soll die Bundesregierung die Vorratsdatenspeicherung bereits zur ihrer Kabinettssitzung am 27. Mai auf den Weg bringen. Bis Ende Juni soll das Gesetz durch den Bundestag, damit es noch vor der Sommerpause am 3. Juli beschlossen werden kann.</p>
<p>Das an den Tag gelegte Tempo ist beachtlich, es bleibt …</p><p><a href="https://netzpolitik.org/2015/jetzt-aktiv-werden-das-gesetz-zur-vorratsdatenspeicherung-kommt-schon-in-zwei-wochen/">Wie Netzpolitik berichtet</a>, soll die Bundesregierung die Vorratsdatenspeicherung bereits zur ihrer Kabinettssitzung am 27. Mai auf den Weg bringen. Bis Ende Juni soll das Gesetz durch den Bundestag, damit es noch vor der Sommerpause am 3. Juli beschlossen werden kann.</p>
<p>Das an den Tag gelegte Tempo ist beachtlich, es bleibt daher nicht viel Zeit, gegen die VDS vorzugehen. <a href="https://netzpolitik.org/2015/jetzt-aktiv-werden-das-gesetz-zur-vorratsdatenspeicherung-kommt-schon-in-zwei-wochen/">Was ihr aktiv tun könnt, erfahrt ihr bei Netzpolitik</a>, <a href="http://wiki.vorratsdatenspeicherung.de/Argumente_gegen_die_Vorratsdatenspeicherung">Argumente gegen die Vorratsdatenspeicherung liefert der AK Vorrat.</a></p>
<p>Wenn die Politik bloß so zügig und konsequent in der Aufarbeitung der BND/NSA-Affäre wäre!</p>re:publica 2015: Selected Talks2015-05-14T23:07:00+02:002015-05-14T23:07:00+02:00Jan Beilicketag:jotbe.io,2015-05-14:/blog/2015/05/republica-2015-selected-talks/<ul>
<li><a href="https://re-publica.de/session/fremd-gehen-immer-nur-anderen-liebe-und-beziehung-zeiten-digitalitaet">Journelle_: Fremd gehen immer nur die anderen – Liebe und Beziehung in Zeiten der Digitalität</a> (<a href="https://www.youtube.com/watch?v=Ji8JrpeuHfM">Mirror</a>) (31’ 56’’)</li>
<li><a href="https://re-publica.de/session/system-broken-and-thats-good-news">Ethan Zuckerman: The system is broken – and that’s the good news</a> (<a href="https://www.youtube.com/watch?v=CJAJ8CNAT3A">Mirror</a>) (1h 2’ 51’’)</li>
<li><a href="https://re-publica.de/session/nsa-are-not-stasi-godwin-mass-surveillance">Cory Doctorow: The NSA are not the Stasi: Godwin for mass surveillance</a> (<a href="https://www.youtube.com/watch?v=l8Q0Mme33bM">Mirror</a>) (55’ 38’’)</li>
<li><a href="https://re-publica.de/session/fighting-terminator-our-pockets">Jérémie Zimmermann …</a></li></ul><ul>
<li><a href="https://re-publica.de/session/fremd-gehen-immer-nur-anderen-liebe-und-beziehung-zeiten-digitalitaet">Journelle_: Fremd gehen immer nur die anderen – Liebe und Beziehung in Zeiten der Digitalität</a> (<a href="https://www.youtube.com/watch?v=Ji8JrpeuHfM">Mirror</a>) (31’ 56’’)</li>
<li><a href="https://re-publica.de/session/system-broken-and-thats-good-news">Ethan Zuckerman: The system is broken – and that’s the good news</a> (<a href="https://www.youtube.com/watch?v=CJAJ8CNAT3A">Mirror</a>) (1h 2’ 51’’)</li>
<li><a href="https://re-publica.de/session/nsa-are-not-stasi-godwin-mass-surveillance">Cory Doctorow: The NSA are not the Stasi: Godwin for mass surveillance</a> (<a href="https://www.youtube.com/watch?v=l8Q0Mme33bM">Mirror</a>) (55’ 38’’)</li>
<li><a href="https://re-publica.de/session/fighting-terminator-our-pockets">Jérémie Zimmermann: Fighting that Terminator in our Pockets</a> (<a href="https://www.youtube.com/watch?v=rHdCo9w7bT4">Mirror</a>) (28’ 35’’)</li>
<li><a href="https://re-publica.de/session/warum-wir-aufhoeren-muessen-versuchen-technologien-solche-regulieren">Frank Rieger: Warum wir aufhören müssen, zu versuchen, Technologien als solche zu regulieren.</a> (<a href="https://www.youtube.com/watch?v=Bx16PeiLg5s">Mirror</a>) (23’ 45’’)</li>
<li><a href="https://re-publica.de/session/cryptocalypse-now">Anna Biselli, Rüdiger Weis: Cryptocalypse now</a> (<a href="https://www.youtube.com/watch?v=0D7vKb0MW38">Mirror</a>) (43’ 49’’)</li>
<li><a href="https://re-publica.de/session/hacktivism-or-fifty-shades-grey-hat">Stefania Milan, Gabriella Coleman, Frank Rieger, Oxblood Ruffin: Hacktivism, or Fifty Shades of Grey Hat</a> (<a href="https://www.youtube.com/watch?v=hfjQoHWUOzQ">Mirror</a>) (59’ 35’’)</li>
<li><a href="https://re-publica.de/session/deeper-frontier-freedom-state-deepweb">Heiko Rittelmeier, Jacob Applebaum, Max Hoppenstedt, Joana Varon: A Deep Frontier of Freedom - The State of the Deepweb</a> (<a href="https://www.youtube.com/watch?v=D8JSb1v9D_o">Mirror</a>) (1h 1’ 21’’)</li>
</ul>Deep Lab Documentary2015-05-14T22:11:00+02:002015-05-14T22:11:00+02:00Jan Beilicketag:jotbe.io,2015-05-14:/blog/2015/05/deep-lab-documentary/<iframe src="https://player.vimeo.com/video/116314844" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<p><a href="https://vimeo.com/116314844">Deep Lab</a> from <a href="https://vimeo.com/deepspeed">Deepspeed media</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
<p><a href="https://en.wikipedia.org/wiki/Deep_Lab">WP: Deep Lab</a></p>Support Freedom, Privacy and Informational Self-Determination (Update)2014-12-17T18:13:00+01:002014-12-17T18:13:00+01:00Jan Beilicketag:jotbe.io,2014-12-17:/blog/2014/12/support-freedom-privacy-and-informational-self-determination-update/<p>(Deutsch siehe unten)</p>
<p>Every year we have several ways to donate our hard-earned money for charity. We hope to help children in the third world, support efforts to treat deceases or rescue the wildlife. Well, or we just spend it for lots of socks, ties, champagne and fireworks.</p>
<p>This year …</p><p>(Deutsch siehe unten)</p>
<p>Every year we have several ways to donate our hard-earned money for charity. We hope to help children in the third world, support efforts to treat deceases or rescue the wildlife. Well, or we just spend it for lots of socks, ties, champagne and fireworks.</p>
<p>This year again, I am going to support one or more of the following organizations/projects in their effort to protect freedom, privacy, the right to informational self-determination and/or a free and open (digital) society.</p>
<p>What about you?</p>
<hr>
<p>Deutsch:</p>
<p>Jedes Jahr können wir auf vielfältigen Wegen unser hartverdientes Geld für wohltätige Zwecke spenden. Wir hoffen damit Kindern in der Dritten Welt zu helfen, unterstützen die Bemühungen Krankheiten zu heilen oder die Tierwelt zu retten. Gut, wir können es natürlich auch einfach für Socken, Schlipse, Champagner und Böller ausgeben.</p>
<p>Ich werde in diesem Jahr wieder eine oder mehrere der folgenden Organisationen/Projekte in ihrem Bestreben unterstützen, die Freiheit, Privatsphäre, das Recht auf informationelle Selbstbestimmung und/oder eine freie und offene (digitale) Gesellschaft zu bewahren und zu fördern.</p>
<p>Was ist mit dir?</p>
<ul>
<li><a href="http://www.laquadrature.net/en">La Quadrature du Net</a></li>
<li><a href="https://www.wauland.de/en/">Wau Holland Stiftung</a> (supports a couple of projects)</li>
<li><a href="https://ccc.de">Chaos Computer Club e.V.</a> - hope to see you at the <a href="https://events.ccc.de/congress/2014/wiki/Main_Page">31C3</a> in Hamburg, Germany!</li>
<li><a href="http://www.humanistische-union.de/wir_ueber_uns/">Humanistische Union</a></li>
<li><a href="https://gnupg.org/">Gnu Privacy Guard</a></li>
<li><a href="https://www.torproject.org/about/overview.html.en">The Tor Project</a></li>
<li><a href="https://www.eff.org/about">Electronic Frontier Foundation</a></li>
<li><a href="https://www.fsf.org/about/">Free Software Foundation</a></li>
<li><a href="https://fsfe.org/index.en.html">Free Software Foundation Europe</a></li>
<li><a href="https://digitalcourage.de/">Digitalcourage e.V.</a></li>
<li><a href="http://fiff.de/about/">Forum InformatikerInnen für Frieden und gesellschaftliche Verantwortung e.V.</a></li>
<li><a href="https://digitalegesellschaft.de/">Digitale Gesellschaft e.V.</a></li>
<li><a href="https://edri.org/campaign/support-digital-rights-europe/">European Digital Rights</a></li>
<li><a href="https://creativecommons.net/donate/">Creative Commons</a></li>
<li><a href="http://wikimediafoundation.org/wiki/WMFJA085/en">Wikimedia Foundation</a></li>
</ul>
<p><strong>Updated 19.12.2014:</strong> Added some organizations<br>
<strong>Updated 20.12.2014:</strong> Added <a href="http://www.laquadrature.net/en/who-are-we">La Quadrature du Net</a>, the french non-profit organzation defends the rights and the freedom of citizens on the internet. It is running extremely short of money and faces an operational shutdown within the next two weeks, according to a <a href="http://paigrain.debatpublic.net/?p=9042">blog post</a> (FR) of one of its founders and current president Philippe Aigrain.</p>web2py: Normalized many-to-many model with multiselect drop-down2014-12-11T19:34:00+01:002014-12-11T19:34:00+01:00Jan Beilicketag:jotbe.io,2014-12-11:/blog/2014/12/web2py-normalized-many-to-many-model-with-multiselect-drop-down/<p>The Python framework <a href="http://web2py.com/">web2py</a> is pretty powerful when it comes to automagical form and data handling. A quite common use case in an application is the need to manage a business object that might have many relations to some other business object, e.g. one package might consist of many …</p><p>The Python framework <a href="http://web2py.com/">web2py</a> is pretty powerful when it comes to automagical form and data handling. A quite common use case in an application is the need to manage a business object that might have many relations to some other business object, e.g. one package might consist of many components. If you use one database table for each object there are at least two approaches to create a many-to-many relation in web2py. ## Approach One (simple): <code>list:reference</code></p>
<p>Let us have a look at this DAL (<a href="http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer">Database Abstraction Layer</a>) <strong>model</strong>:</p>
<div class="highlight"><pre><span></span><code><span class="n">db</span><span class="p">.</span><span class="n">define_table</span><span class="p">(</span><span class="err">’</span><span class="n">component</span><span class="err">’</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">a_component_field</span><span class="err">’</span><span class="p">),</span>
<span class="n">format</span><span class="o">=</span><span class="err">’</span><span class="o">%</span><span class="p">(</span><span class="n">a_component_field</span><span class="p">)</span><span class="n">s</span><span class="err">’</span><span class="p">)</span>
<span class="n">db</span><span class="p">.</span><span class="n">define_table</span><span class="p">(</span><span class="err">’</span><span class="n">package_one</span><span class="err">’</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">a_package_field</span><span class="err">’</span><span class="p">),</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">component_ids</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">list</span><span class="p">:</span><span class="n">reference</span> <span class="n">component</span><span class="err">’</span><span class="p">)</span>
<span class="n">format</span><span class="o">=</span><span class="err">’</span><span class="o">%</span><span class="p">(</span><span class="n">a_package_field</span><span class="p">)</span><span class="n">s</span><span class="err">’</span><span class="p">)</span>
</code></pre></div>
<p>When you open the <code>appadmin</code> database administration section of the application, the form to add a new package should look like this, given there are some components already:</p>
<p><img alt="Manage packages form screenshot" src="https://blog.jotbe-fx.de/uploads/m2m_manage_packages_form.png"></p>
<p>You just have to use <code>list:reference component</code> and you will get a multiselect drop-down.</p>
<p>The <code>list:reference</code> is described in the <a href="http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#list--type--and-contains">web2py manual</a> as:</p>
<blockquote>
<p>The <code>list:reference</code> and the <code>contains(value)</code> operator are particularly useful to de-normalize many-to-many relations. [...]</p>
<p>Notice that a <code>list:reference</code> tag field get a default constraint</p>
<div class="highlight"><pre><span></span><code><span class="err">requires = IS_IN_DB(db,’tag.id’,db.tag._format,multiple=True)</span>
</code></pre></div>
<p>that produces a SELECT/OPTION multiple drop-box in forms.</p>
</blockquote>
<p>Why might that approach be problematic in a relational database?</p>
<p><code>list:reference</code> stores the referenced IDs in the corresponding field as a string, concatenated by a vertical bar (or pipe). This is a classical SQL antipattern (<a href="https://pragprog.com/book/bksqla/sql-antipatterns">book recommendation</a>) for various reasons, some of them are:</p>
<ul>
<li>You cannot ensure uniqueness.</li>
<li>It violates the <a href="http://en.wikipedia.org/wiki/1NF">first normal form (1NF)</a>.</li>
<li>It is not possible to delete values without reading all values, parsing them and storing all but the obsolete values again.</li>
<li>Counting is difficult.</li>
<li>Query performance might be an issue when the table contains lots of these values.</li>
<li>A string field of an SQL table has a limited size depending on its data type. If not chosen properly, this will literally cut references.</li>
<li>The relation between the objects cannot have specific properties.</li>
</ul>
<p>Some issues are fortunately treated by the DAL, transparent to the developer, some cannot be solved that way. There are also times where you might want to query the database directly using plain SQL or some other query tool (Adminer, PhpMyAdmin, DB Manager in your IDE) which requires a consistent database structure independent from DAL.</p>
<p>I recommend to carefully think about the entity relationship model and try to estimate the likely amount of data and the type of data you want to store with this approach. web2py also offers <a href="http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#list--type--and-contains">other <code>list</code> types</a> like <code>list:string</code> and <code>list:integer</code> that might be used for a small amount of denormalized data.</p>
<p>A clear advantage of this approach: It takes almost no time to implement and is therefore definitely useful for quick prototypes or small applications.</p>
<h2>Approach two (failed): Intersection table and <code>IS_IN_DB</code> requirement</h2>
<p>The next option naturally comes in mind: Create an intersection table and use the <code>IS_IN_DB</code> validator to create a multiselect drop-down. Unfortunately, this approach fails and causes an exception when the form is processed:</p>
<div class="highlight"><pre><span></span><code><span class="err">int() argument must be a string or a number, not ‘list’</span>
</code></pre></div>
<p><strong>Model:</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">db</span><span class="p">.</span><span class="n">define_table</span><span class="p">(</span><span class="err">’</span><span class="n">component</span><span class="err">’</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">a_component_field</span><span class="err">’</span><span class="p">),</span>
<span class="n">format</span><span class="o">=</span><span class="err">’</span><span class="o">%</span><span class="p">(</span><span class="n">a_component_field</span><span class="p">)</span><span class="n">s</span><span class="err">’</span><span class="p">)</span>
<span class="n">db</span><span class="p">.</span><span class="n">define_table</span><span class="p">(</span><span class="err">’</span><span class="n">package</span><span class="err">’</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">a_package_field</span><span class="err">’</span><span class="p">),</span>
<span class="n">format</span><span class="o">=</span><span class="err">’</span><span class="o">%</span><span class="p">(</span><span class="n">a_package_field</span><span class="p">)</span><span class="n">s</span><span class="err">’</span><span class="p">)</span>
<span class="n">db</span><span class="p">.</span><span class="n">define_table</span><span class="p">(</span><span class="err">’</span><span class="n">component_package_association</span><span class="err">’</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">component_id</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">reference</span> <span class="n">component</span><span class="err">’</span><span class="p">),</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">package_id</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">reference</span> <span class="n">package</span><span class="err">’</span><span class="p">))</span>
<span class="n">db</span><span class="p">.</span><span class="n">component_package_association</span><span class="p">.</span><span class="n">component_id</span><span class="p">.</span><span class="n">requires</span> <span class="o">=</span> <span class="n">IS_IN_DB</span><span class="p">(</span>
<span class="n">db</span><span class="p">,</span> <span class="err">‘</span><span class="n">component</span><span class="p">.</span><span class="n">id</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="o">%</span><span class="p">(</span><span class="n">a_component_field</span><span class="p">)</span><span class="n">s</span><span class="err">’</span><span class="p">,</span> <span class="n">multiple</span><span class="o">=</span><span class="k">True</span><span class="p">)</span>
</code></pre></div>
<p><strong>Controller:</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">def</span> <span class="n">manage_packages</span><span class="p">():</span>
<span class="k">if</span> <span class="n">request</span><span class="p">.</span><span class="n">args</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">==</span> <span class="err">‘</span><span class="k">new</span><span class="err">’</span> <span class="k">and</span> <span class="n">request</span><span class="p">.</span><span class="n">args</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="err">‘</span><span class="n">package</span><span class="err">’</span><span class="p">:</span>
<span class="n">form</span> <span class="o">=</span> <span class="n">SQLFORM</span><span class="p">.</span><span class="n">factory</span><span class="p">(</span><span class="n">db</span><span class="p">.</span><span class="n">package</span><span class="p">,</span> <span class="n">db</span><span class="p">.</span><span class="n">component_package_association</span><span class="p">)</span>
<span class="k">if</span> <span class="n">form</span><span class="p">.</span><span class="n">process</span><span class="p">().</span><span class="n">accepted</span><span class="p">:</span>
<span class="o">#</span> <span class="n">Code</span> <span class="k">to</span> <span class="n">store</span> <span class="n">the</span> <span class="k">new</span> <span class="n">package</span> <span class="k">and</span> <span class="n">associations</span> <span class="k">to</span> <span class="n">components</span>
<span class="o">#</span> <span class="p">...</span>
<span class="n">response</span><span class="p">.</span><span class="n">flash</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Package</span> <span class="n">has</span> <span class="n">been</span> <span class="n">created</span> <span class="n">successfully</span><span class="p">.</span><span class="err">’</span>
<span class="n">content</span> <span class="o">=</span> <span class="n">form</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">content</span> <span class="o">=</span> <span class="n">SQLFORM</span><span class="p">.</span><span class="n">grid</span><span class="p">(</span><span class="n">db</span><span class="p">.</span><span class="n">package</span><span class="p">)</span>
<span class="k">return</span> <span class="n">dict</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">content</span><span class="p">)</span>
</code></pre></div>
<p>web2py’s DAL does not know how to validate <code>component_package_association.component_id</code> when a list of IDs is supplied. I could not find a way to get it working.</p>
<h2>Approach three (recommended): Intersection table with custom insert handling</h2>
<p>This way takes into account the problems mentioned above while retaining the view and behaviour for the user. Caveat: The admin will not have a multiple drop-down in the <code>appadmin</code> database administration section since a modified controller is needed.</p>
<p><strong>Model:</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">db</span><span class="p">.</span><span class="n">define_table</span><span class="p">(</span><span class="err">’</span><span class="n">component</span><span class="err">’</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">a_component_field</span><span class="err">’</span><span class="p">),</span>
<span class="n">format</span><span class="o">=</span><span class="err">’</span><span class="o">%</span><span class="p">(</span><span class="n">a_component_field</span><span class="p">)</span><span class="n">s</span><span class="err">’</span><span class="p">)</span>
<span class="n">db</span><span class="p">.</span><span class="n">define_table</span><span class="p">(</span><span class="err">’</span><span class="n">package</span><span class="err">’</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">a_package_field</span><span class="err">’</span><span class="p">),</span>
<span class="n">format</span><span class="o">=</span><span class="err">’</span><span class="o">%</span><span class="p">(</span><span class="n">a_package_field</span><span class="p">)</span><span class="n">s</span><span class="err">’</span><span class="p">)</span>
<span class="n">db</span><span class="p">.</span><span class="n">define_table</span><span class="p">(</span><span class="err">’</span><span class="n">component_package_association</span><span class="err">’</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">component_id</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">reference</span> <span class="n">component</span><span class="err">’</span><span class="p">),</span>
<span class="n">Field</span><span class="p">(</span><span class="err">’</span><span class="n">package_id</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">reference</span> <span class="n">package</span><span class="err">’</span><span class="p">))</span>
</code></pre></div>
<p><strong>Controller:</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">def</span> <span class="n">manage_packages</span><span class="p">():</span>
<span class="k">if</span> <span class="n">request</span><span class="p">.</span><span class="n">args</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">==</span> <span class="err">‘</span><span class="k">new</span><span class="err">’</span> <span class="k">and</span> <span class="n">request</span><span class="p">.</span><span class="n">args</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="err">‘</span><span class="n">package</span><span class="err">’</span><span class="p">:</span>
<span class="o">#</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">Get</span> <span class="n">available</span> <span class="n">components</span>
<span class="n">components</span> <span class="o">=</span> <span class="p">[(</span><span class="n">r</span><span class="p">.</span><span class="n">id</span><span class="p">,</span> <span class="n">r</span><span class="p">.</span><span class="n">a_component_field</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="k">in</span> <span class="n">db</span><span class="p">(</span><span class="n">db</span><span class="p">.</span><span class="n">component</span><span class="p">).</span><span class="k">select</span><span class="p">()]</span>
<span class="o">#</span> <span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="n">Build</span> <span class="n">the</span> <span class="n">form</span>
<span class="n">form</span> <span class="o">=</span> <span class="n">SQLFORM</span><span class="p">.</span><span class="n">factory</span><span class="p">(</span>
<span class="n">db</span><span class="p">.</span><span class="n">package</span><span class="p">,</span>
<span class="n">Field</span><span class="p">(</span>
<span class="err">‘</span><span class="n">components</span><span class="err">’</span><span class="p">,</span>
<span class="n">requires</span><span class="o">=</span><span class="n">IS_IN_SET</span><span class="p">(</span><span class="n">components</span><span class="p">,</span> <span class="n">multiple</span><span class="o">=</span><span class="k">True</span><span class="p">)</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="o">#</span> <span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="n">Validate</span> <span class="n">form</span> <span class="k">data</span>
<span class="k">if</span> <span class="n">form</span><span class="p">.</span><span class="n">process</span><span class="p">().</span><span class="n">accepted</span><span class="p">:</span>
<span class="o">#</span> <span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="k">Insert</span> <span class="n">package</span>
<span class="n">package_id</span> <span class="o">=</span> <span class="n">db</span><span class="p">.</span><span class="n">package</span><span class="p">.</span><span class="k">insert</span><span class="p">(</span>
<span class="o">**</span><span class="n">db</span><span class="p">.</span><span class="n">package</span><span class="p">.</span><span class="n">_filter_fields</span><span class="p">(</span><span class="n">form</span><span class="p">.</span><span class="n">vars</span><span class="p">))</span>
<span class="k">if</span> <span class="n">package_id</span> <span class="k">and</span> <span class="n">form</span><span class="p">.</span><span class="n">vars</span><span class="p">.</span><span class="n">components</span><span class="p">:</span>
<span class="o">#</span> <span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="k">Insert</span> <span class="n">component</span> <span class="n">package</span> <span class="n">associations</span>
<span class="k">for</span> <span class="n">component_id</span> <span class="k">in</span> <span class="n">form</span><span class="p">.</span><span class="n">vars</span><span class="p">.</span><span class="n">components</span><span class="p">:</span>
<span class="n">existing_component</span> <span class="o">=</span> <span class="n">db</span><span class="p">.</span><span class="n">component</span><span class="p">(</span><span class="n">component_id</span><span class="p">)</span>
<span class="k">if</span> <span class="n">existing_component</span><span class="p">:</span>
<span class="n">db</span><span class="p">.</span><span class="n">component_package_association</span><span class="p">.</span><span class="k">insert</span><span class="p">(</span>
<span class="n">package_id</span><span class="o">=</span><span class="n">package_id</span><span class="p">,</span>
<span class="n">component_id</span><span class="o">=</span><span class="n">existing_component</span>
<span class="p">)</span>
<span class="n">response</span><span class="p">.</span><span class="n">flash</span> <span class="o">=</span> <span class="err">‘</span><span class="n">Package</span> <span class="n">has</span> <span class="n">been</span> <span class="n">created</span> <span class="n">successfully</span><span class="p">.</span><span class="err">’</span>
<span class="n">content</span> <span class="o">=</span> <span class="n">form</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">content</span> <span class="o">=</span> <span class="n">SQLFORM</span><span class="p">.</span><span class="n">grid</span><span class="p">(</span><span class="n">db</span><span class="p">.</span><span class="n">package</span><span class="p">)</span>
<span class="k">return</span> <span class="n">dict</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">content</span><span class="p">)</span>
</code></pre></div>
<p>This sample controller can properly add new packages and list packages:</p>
<ol>
<li>It queries available components and builds a list containing sets with component primary keys and a description field.</li>
<li>It builds a custom field that is treated as a set. The <code>IS_IN_SET</code> validator creates the same multiselect drop-down as in the previous approaches, it is predestinated to be applied to lists containing sets and treats the ids and labels properly.</li>
<li>The form data is validated, the <code>IS_IN_SET</code> is truthy.</li>
<li>The package is inserted and the id is returned</li>
<li>Each <code>component_id</code> is stored together with the <code>package_id</code> as a new association</li>
</ol>
<p>Please note: The edit function of the <code>SQLFORM.grid</code> will use the default form to edit one element of a table. The code for adding packages should provide an idea of how to implement the same functionality for editing entries. In a real application additional checks and error handling are required.</p>
<p>If you find issues with my approach or know how to improve it further, please drop a comment.</p>Sabayon: syslog-ng 3.6.1 causes high CPU load2014-12-04T18:30:00+01:002014-12-04T18:30:00+01:00Jan Beilicketag:jotbe.io,2014-12-04:/blog/2014/12/sabayon-syslog-ng-361-causes-high-cpu-load/<p>After the last weekly update of my Sabayon Notebook I encountered a high CPU load of one core caused by <code>syslog-ng</code>. The process was literally flooding <code>/var/log/messages</code> and within a couple of minutes tens of Megabyte accumulated. <code>logrotate</code> did not help. The messages were months old, it appeared …</p><p>After the last weekly update of my Sabayon Notebook I encountered a high CPU load of one core caused by <code>syslog-ng</code>. The process was literally flooding <code>/var/log/messages</code> and within a couple of minutes tens of Megabyte accumulated. <code>logrotate</code> did not help. The messages were months old, it appeared as <code>syslog-ng</code> would be processing old logs from somewhere else.</p>
<p>I knew that <code>journald</code> was active too, complementing <code>syslog-ng</code> I thought. Some <a href="https://duckduckgo.com">ddg</a> searches later I stumbled over a <a href="https://bugs.gentoo.org/show_bug.cgi?id=529828">Gentoo bug report</a> confirming my issue.</p>
<p>Instead of masking <code>syslog-ng-3.6.1</code> I headed to <code>#sabayon</code> and asked around. Someone explicitly mentioned that <code>syslog-ng</code> is likely pulling logs from <code>journald</code>.</p>
<p>I ended up editing <code>/etc/syslog-ng/syslog-ng.conf</code> and replacing the default <code>source src</code>:</p>
<div class="highlight"><pre><span></span><code><span class="err">source src { system(); internal(); };</span>
</code></pre></div>
<p>with:</p>
<div class="highlight"><pre><span></span><code><span class="err">source src { unix-dgram("/run/systemd/journal/syslog"); internal(); };</span>
</code></pre></div>
<p>So the issue was somehow caused by <code>system()</code> which was even mentioned as a possible solution in the bug report.</p>
<p>Afterwards I ran <code>sudo systemctl restart syslog-ng</code> and the CPU load is since back to normal.</p>Light Table 0.7.0 now under MIT License and hosted by GitHub2014-11-20T12:30:00+01:002014-11-20T12:30:00+01:00Jan Beilicketag:jotbe.io,2014-11-20:/blog/2014/11/light-table-070-now-under-mit-license-and-hosted-by-github/<p>The code editor <a href="http://lighttable.com/">Light Table</a> is far from being abandoned:</p>
<ul>
<li>three new committers joined</li>
<li>team moved into a new office to accomodate new hires</li>
<li>Light Table website, docs and plugin metadata were put onto GitHub</li>
<li>code moved from GPLv3 to the more permissive MIT license</li>
</ul>
<p><a href="http://lighttable.com/2014/11/19/light-table-070/">Read more in their blog …</a></p><p>The code editor <a href="http://lighttable.com/">Light Table</a> is far from being abandoned:</p>
<ul>
<li>three new committers joined</li>
<li>team moved into a new office to accomodate new hires</li>
<li>Light Table website, docs and plugin metadata were put onto GitHub</li>
<li>code moved from GPLv3 to the more permissive MIT license</li>
</ul>
<p><a href="http://lighttable.com/2014/11/19/light-table-070/">Read more in their blog post.</a></p>Foto auf der elektronischen Gesundheitskarte ist rechtmäßig2014-11-18T17:26:00+01:002014-11-18T17:26:00+01:00Jan Beilicketag:jotbe.io,2014-11-18:/blog/2014/11/foto-auf-der-elektronischen-gesundheitskarte-ist-rechtmassig/<p>Das Foto auf der elektronischen Gesundheitskarte (eGK) verletzte laut einer Entscheidung des Bundessozialgerichts in Kassel nicht das Recht auf informationelle Selbstbestimmung.</p>
<p>Die weitere Begründung lässt einen ungläubig die Augen reiben:</p>
<blockquote>
<p>[...] Das Recht schützt bereits die betroffenen Daten vor unbefugtem Zugriff Dritter und vor missbräuchlicher Nutzung. Dass die Datensicherheit faktisch unzulänglich …</p></blockquote><p>Das Foto auf der elektronischen Gesundheitskarte (eGK) verletzte laut einer Entscheidung des Bundessozialgerichts in Kassel nicht das Recht auf informationelle Selbstbestimmung.</p>
<p>Die weitere Begründung lässt einen ungläubig die Augen reiben:</p>
<blockquote>
<p>[...] Das Recht schützt bereits die betroffenen Daten vor unbefugtem Zugriff Dritter und vor missbräuchlicher Nutzung. Dass die Datensicherheit faktisch unzulänglich ist, lässt sich zudem zur Zeit nicht feststellen: Die Telematikinfrastruktur ist noch im Teststadium. – <a href="http://juris.bundessozialgericht.de/cgi-bin/rechtsprechung/document.py?Gericht=bsg&Art=tm&Datum=2014&nr=13640">Pressemitteilung des BSG</a></p>
</blockquote>
<p><a href="http://www.heise.de/newsticker/meldung/Foto-fuer-elektronische-Gesundheitskarte-ist-Pflicht-2459842.html">Mehr dazu bei Heise.</a></p>Sabayon 14.11: nvidia-drivers 340.46 broke my multi-monitor setup2014-10-23T11:03:00+02:002014-10-23T11:03:00+02:00Jan Beilicketag:jotbe.io,2014-10-23:/blog/2014/10/sabayon-1411-nvidia-drivers-34046-broke-my-multi-monitor-setup/<p>One of my machines is a Lenovo T420s running on Sabayon Linux in a dual monitor setup with discrete graphics set up in the BIOS. The latest <code>sabayon-weekly</code> update (installed on 22.10.2014) shipped the <code>nvidia-drivers-340.46</code>, afterwards the graphics setup was messed up: The second monitor was not …</p><p>One of my machines is a Lenovo T420s running on Sabayon Linux in a dual monitor setup with discrete graphics set up in the BIOS. The latest <code>sabayon-weekly</code> update (installed on 22.10.2014) shipped the <code>nvidia-drivers-340.46</code>, afterwards the graphics setup was messed up: The second monitor was not recognized anymore while Xorg continued to handle the desktop as usual, i.e. expanded over two displays. Even after a reboot with detached monitor I just saw a background pattern on my integrated display where I should have a login box.</p>
<p>I tried a couple of approaches to fix this behaviour:</p>
<ul>
<li>
<p>Tried to downgrade the drivers to the previously installed version 340.32 by masking <code>nvidia-drivers-340.46</code> and <code>nvidia-userspace-340.46</code>. I could not go back to that version with Entropy, instead it installed 304.123. That version broke my Xorg completely with lots of slow flickering indicating a couple of tries to initialize the graphics adapter, eventually leading to a crashed Xorg startup.</p>
</li>
<li>
<p>Removed/modified/replaced <code>/etc/X11/xorg.conf</code> with previously working configurations and tried tips from various forums.</p>
</li>
</ul>
<p>I noticed that in <code>xrandr</code> the second monitor was detected as attached. I was just not able to configure it at all using <code>nvidia-settings</code>. That one was quite persistent in just offering me two display labeled with some Lenovo name.</p>
<p>Eventually I decided to get rid of the proprietary Nvidia drivers and give <a href="http://nouveau.freedesktop.org/wiki/">Nouveau</a> another try. I had tried Nouveau a couple of years ago and at that time I had trouble to get it up and running. Nouveau has since evolved and I was able to restore my graphics setup to a working state:</p>
<ol>
<li>
<p>Installed nouveau:</p>
<div class="highlight"><pre><span></span><code>$ sudo equo install nouveau
</code></pre></div>
</li>
<li>
<p>Checked available OpenGL implementations:</p>
<div class="highlight"><pre><span></span><code>$ sudo eselect opengl list
Available OpenGL implementations:
<span class="o">[</span><span class="m">1</span><span class="o">]</span> nvidia *
<span class="o">[</span><span class="m">2</span><span class="o">]</span> xorg-x11
</code></pre></div>
</li>
<li>
<p>Set the OpenGL implementation to <code>xorg-x11</code>:</p>
<div class="highlight"><pre><span></span><code>$ sudo eselect opengl <span class="nb">set</span> <span class="m">2</span>
</code></pre></div>
</li>
<li>
<p>Commented out the blacklisted <code>nouveau</code> in <code>/etc/modprobe.d/blacklist.conf</code>.</p>
</li>
<li>
<p>Moved <code>/etc/X11/xorg.conf</code> temporarily to have a fresh Xorg startup.</p>
</li>
<li>
<p>Uninstalled Nvidia drivers:</p>
<div class="highlight"><pre><span></span><code>$ sudo equo remove nvidia-drivers nvida-userspace nvidia-settings
</code></pre></div>
</li>
<li>
<p>Reboot</p>
</li>
</ol>
<p>These steps solved my issues.</p>
<p>One note: Step (4) is critical. I did not check the blacklisting and was wondering why Xorg was only using 1024x768 and the control center display settings in Gnome were just showing an "unknown monitor". Sabayon seems to blacklist <code>nouveau</code> by default.</p>The Tao of Programming2014-07-15T10:30:00+02:002014-07-15T10:30:00+02:00Jan Beilicketag:jotbe.io,2014-07-15:/blog/2014/07/the-tao-of-programming/<blockquote>
<p><strong>3.4</strong></p>
<p>A manager went to the Master Programmer and showed him the requirements document for a new application. The manager asked the Master: "How long will it take to design this system if I assign five programmers to it?"</p>
<p>"It will take one year," said the Master promptly.</p>
<p>"But …</p></blockquote><blockquote>
<p><strong>3.4</strong></p>
<p>A manager went to the Master Programmer and showed him the requirements document for a new application. The manager asked the Master: "How long will it take to design this system if I assign five programmers to it?"</p>
<p>"It will take one year," said the Master promptly.</p>
<p>"But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?"</p>
<p>The Master Programmer frowned. "In that case, it will take two years."</p>
<p>"And what if I assign a hundred programmers to it?"</p>
<p>The Master Programmer shrugged. "Then the design will never be completed," he said.</p>
</blockquote>
<p>– <a href="http://www.mit.edu/~xela/tao.html">The Tao of Programming</a></p>Heartbleed zwingt zu neuem Key und Zertifikat2014-04-09T19:35:00+02:002014-04-09T19:35:00+02:00Jan Beilicketag:jotbe.io,2014-04-09:/blog/2014/04/heartbleed-zwingt-zu-neuem-key-und-zertifikat/<p>Die Admins unter meinen Lesern werden es zwangsläufig bereits mitbekommen haben: Vor ein paar Tagen wurde eine kritische Sicherheitslücke in OpenSSL gefunden. <a href="http://heartbleed.com/">Heartbleed</a> ermöglicht es Angreifern, den Speicher von Systemen über TLS gesicherte Serververbindungen mit Heartbeat-Funktion auszulesen, solange sie eine anfällige OpenSSL-Version einsetzen. Auf diesem Wege können besipielsweise Benutzernamen, Passwörter …</p><p>Die Admins unter meinen Lesern werden es zwangsläufig bereits mitbekommen haben: Vor ein paar Tagen wurde eine kritische Sicherheitslücke in OpenSSL gefunden. <a href="http://heartbleed.com/">Heartbleed</a> ermöglicht es Angreifern, den Speicher von Systemen über TLS gesicherte Serververbindungen mit Heartbeat-Funktion auszulesen, solange sie eine anfällige OpenSSL-Version einsetzen. Auf diesem Wege können besipielsweise Benutzernamen, Passwörter, aktive Sitzungen und sogar private Server-Schlüssel abhanden kommen.</p>
<p>Anfällige OpenSSL-Versionen wurden bis zur Entdeckung zu Hunderttausenden verwendet, meist auf Webservern, aber auch auf Mailservern und VPN-Gateways. Da unklar ist, ob und welche Daten aufgrund der Lücke abgeschnorchelt worden sind, bleibt zur Sicherheit nach dem Patchen der Systeme nur:</p>
<p><strong>Passwörter sowie Schlüssel auf betroffenen Systemen austauschen!</strong></p>
<p>Weltweit rotieren seit der Entdeckung System-Administratoren, patchen Server, Clients und setzen Passwörter ihrer Anwender zurück.</p>
<p>Auch für meine Domains habe ich zur Sicherheit neue Server-Keys hinterlegt.</p>
<p>Ein Lob an <a href="https://uberspace.de/">Uberspace</a>, die bereits ein paar Stunden nach Bekanntwerden von Heartbleed die ersten Server patchten und seitdem gut ausgelastet sind mit dem Austauschen von Keys und Neustarten von Systemen. Klasse Leistung! <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></p>
<p>Mehr dazu:</p>
<ul>
<li><a href="http://heartbleed.com/">Heartbleed</a></li>
<li>NIST: <a href="https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0160">CVE-2014-0160</a></li>
<li>Uberspace: <a href="https://uberspace.de/dokuwiki/heartbleed">FAQ zu Heartbleed</a></li>
<li>Heise: <a href="http://www.heise.de/newsticker/meldung/SSL-Gau-So-testen-Sie-Programme-und-Online-Dienste-2165995.html">SSL-Gau: So testen Sie Programme und Online-Dienste</a></li>
<li>Golem: <a href="http://www.golem.de/news/openssl-wichtige-fragen-und-antworten-zu-heartbleed-1404-105740.html">Wichtige Fragen und Antworten zu Heartbleed</a></li>
</ul>Debian zukünftig ohne CAcert-Stammzertifikat2014-03-24T17:39:00+01:002014-03-24T17:39:00+01:00Jan Beilicketag:jotbe.io,2014-03-24:/blog/2014/03/debian-zukunftig-ohne-cacert-stammzertifikat/<p>Das Paket <code>ca-certificate</code> der Zweige Testing und Unstable der <a href="https://debian.org">Debian-Distribution</a> enthält <a href="http://www.heise.de/netze/meldung/Debian-verzichtet-auf-SSL-Root-Zertifikate-von-CAcert-2153353.html">kein CAcert-Stammzertifikat mehr</a>. Entfernt wurde das Zertifikat während einer laufenden <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718434">Diskussion zur Sicherheit und Vertrauenswürdigkeit der gemeinnützigen CA</a>. Über das Für und Wider lässt sich trefflich diskutieren, ich empfinde die Entfernung als unnötig. CAcert passt vom Grundgedanken her gut …</p><p>Das Paket <code>ca-certificate</code> der Zweige Testing und Unstable der <a href="https://debian.org">Debian-Distribution</a> enthält <a href="http://www.heise.de/netze/meldung/Debian-verzichtet-auf-SSL-Root-Zertifikate-von-CAcert-2153353.html">kein CAcert-Stammzertifikat mehr</a>. Entfernt wurde das Zertifikat während einer laufenden <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718434">Diskussion zur Sicherheit und Vertrauenswürdigkeit der gemeinnützigen CA</a>. Über das Für und Wider lässt sich trefflich diskutieren, ich empfinde die Entfernung als unnötig. CAcert passt vom Grundgedanken her gut zu Debian und trotz der geäußerten Bedenken vertraue ich der gemeinschaftlich betriebenen CA mehr als den anderen 154 hinterlegten kommerziellen CAs. Ich bitte allerdings um Aufnahme von <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=647959">Honest Achmed’s Used Cars and Certificates</a>! <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>
<p>Im Gegensatz zu dem Autor <a href="https://lists.cacert.org/wws/arc/cacert-de/2014-03/msg00030.html">dieser Mail</a> sehe ich noch kein Ende von CAcert.</p>
<p>Neil Wilson beschreibt in einem vorauseilenden Artikel, <a href="http://brightbox.com/blog/2014/03/04/add-cacert-ubuntu-debian/">wie man in Ubuntu/Debian CAcert nachträglich einrichtet</a>.</p>
<p><strong>Nachtrag 25.03.2014:</strong> <a href="http://www.golem.de/news/zertifizierungsstelle-ungewisse-zukunft-fuer-cacert-1403-105359.html">Golem berichtet ausführlicher darüber.</a></p>
<p>Du kannst CAcert durch eine <a href="http://www.cacert.org/index.php?id=13">Geldspende</a> unterstützen oder dich <a href="http://wiki.cacert.org/HelpingCAcert">aktiv beteiligen</a>. Hilf mit!</p>
<p><strong>Nachtrag 30.03.2014:</strong> <a href="http://www.heise.de/netze/meldung/CAcert-reagiert-auf-Zertifikatsrauswurf-2156226.html">CAcert reagiert auf die Entfernung des Zertifikats</a> mit einem geplanten internen Audit, zur Vorbereitung auf einen erneuten Anlauf zur Anerkennung als vertrauenswürdige CA durch Mozilla.</p>SSL-Zertifikate von CAcert2014-02-24T17:30:00+01:002014-02-24T17:30:00+01:00Jan Beilicketag:jotbe.io,2014-02-24:/blog/2014/02/ssl-zertifikate-von-cacert/<p>Meine Domains verwenden nun SSL-Zertifikate von <a href="https://www.cacert.org/">CAcert</a>. Zuvor wurde das Standard-Zertifikat meines <a href="https://uberspace.de">Hosters</a> für den Server verwendet, dies führte aufgrund des abweichenden Domain-Namens jedoch zwangsläufig zu Common-Name-Warnmeldungen. In meinem Standard-Browser hatte ich damals nach dem <a href="https://blog.jotbe-fx.de/permalink/umzug-zu-uberspace.html">Umzug zu Uberspace</a> die SSL-Warnung dauerhaft unterbunden, was zugegebenermaßen kurzsichtig war. Eine Fehler- oder Warnmeldung …</p><p>Meine Domains verwenden nun SSL-Zertifikate von <a href="https://www.cacert.org/">CAcert</a>. Zuvor wurde das Standard-Zertifikat meines <a href="https://uberspace.de">Hosters</a> für den Server verwendet, dies führte aufgrund des abweichenden Domain-Namens jedoch zwangsläufig zu Common-Name-Warnmeldungen. In meinem Standard-Browser hatte ich damals nach dem <a href="https://blog.jotbe-fx.de/permalink/umzug-zu-uberspace.html">Umzug zu Uberspace</a> die SSL-Warnung dauerhaft unterbunden, was zugegebenermaßen kurzsichtig war. Eine Fehler- oder Warnmeldung zu ignorieren behebt nunmal nicht das zugrundeliegende Problem. Dank eines <a href="https://twitter.com/c_probst/status/436775398567714816">Winks über Twitter</a> wurde mir dies wieder gewahr und ich habe kurzerhand eigene Zertifikate erstellt. <a href="https://uberspace.de/dokuwiki/webserver:https#nutzung_eigener_ssl-zertifikate">Eine Anleitung zur Integration eigener SSL-Zertifikate bei Uberspace findet man in deren Doku.</a> Die Einrichtung der Wildcard-Zertifikate im Server durch den Support war bereits ein paar Stunden nach meiner Mail erledigt. Klasse! Montag Früh folgten noch die Hauptdomains ohne Wildcard, die ich übersehen hatte. Ich erhielt noch den Tipp mit dem <a href="https://en.wikipedia.org/wiki/X.509">x.509</a>-Feature <a href="http://wiki.cacert.org/FAQ/subjectAltName"><code>subjectAltName</code></a>. Damit können <code>*.domain.tld</code>, <code>domain.tld</code> sowie bei Bedarf weitere Domains in einem Certificate Signing Request (CSR) untergebracht werden, mit einem einzigen Zertifikat als Ergebnis. Das werde ich bei der nächsten Erneuerung ausprobieren.</p>
<h2>Browserunterstützung für CAcert</h2>
<p>In vielen Browsern ist CAcert nicht als Zertifizierungsstelle hinterlegt, sodass beim Aufruf einer Website mit einem entsprechend ausgestellten Zertifikat eine Warnmeldung erscheint. Zur regulären Aufnahme in die Browser wird unter anderem eine teils jährliche Auditierung vorausgesetzt, die für den nichtkommerziellen gemeinnützigen Verein aus finanziellen Gründen keine Option ist. CAcert arbeitet jedoch seit einiger Zeit daran, den <a href="https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/">Richtlinien von Mozilla zur Aufnahme als Root-CA</a> in deren Produkten <a href="https://wiki.cacert.org/InclusionStatus">nachzukommen</a>.</p>
<p>Auf den Seiten von CAcert findet man <a href="https://wiki.cacert.org/FAQ/BrowserClients">Anleitungen zum Import des Root-Zertifikats für viele Browser und Plattformen</a>. Über den Stand der Einbindung der CA kann man sich auf <a href="http://wiki.cacert.org/InclusionStatus">dieser Seite</a> informieren.</p>
<h2>Perfect Forward Secrecy</h2>
<p>Der Server unterstützt aktuell TLS 1.2 mit <a href="https://en.wikipedia.org/wiki/Forward_secrecy">Perfect Forward Secrecy</a> (PFS) durch einen flüchtigen (<strong>Ephemeral</strong>) <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">Diffie-Hellman</a> Schlüsselaustausch (DH<strong>E</strong>), allerdings noch ohne elliptische Kurven (<a href="https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman">ECDH<strong>E</strong></a>), was wesentlich schneller wäre. Das <strong>E</strong> kennzeichnet PFS. Aufgezeichneter SSL-Netzwerkverkehr zu dieser Website kann somit nach Beendigung der Sitzung nicht mehr entschlüsselt werden, auch nicht mit dem privaten Schlüssel des Servers, denn bislang wurde noch kein effizienter Algorithmus gefunden, mit dem man das zugrundeliegende <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_problem">Diffie-Hellman-Problem</a> lösen könnte.</p>
<p><strong>Update 13.03.2014:</strong></p>
<h2>Testen per OpenSSL s_client</h2>
<p><code>$ openssl s_client -connect blog.jotbe-fx.de:443 -servername blog.jotbe-fx.de</code></p>
<p>Die Angabe des Parameters <code>-servername</code> wird wegen der beim Hoster eingesetzten <a href="http://en.wikipedia.org/wiki/Server_Name_Indication">Server Name Indication</a> (SNI) benötigt. SSL-Clients ohne Unterstützung für SNI erhalten das Standard-Zertifikat des Servers und damit wieder die ursprüngliche SSL-Warnung.</p>
<p>Mehr:</p>
<ul>
<li>Podcast: <a href="http://cre.fm/cre027-cacert">CRE027 CAcert</a> - Ein Gespräch mit Henrik Heigl (Dauer: 00:28:04)</li>
<li><a href="https://bettercrypto.org/">BetterCrypto.org</a></li>
<li><a href="https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html">Strong SSL Security on Apache2</a></li>
<li><a href="https://community.qualys.com/blogs/securitylabs/2013/06/25/ssl-labs-deploying-forward-secrecy">SSL Labs: Deploying Forward Secrecy</a></li>
<li>WP: <a href="https://en.wikipedia.org/wiki/Discrete_logarithm_problem">Discrete Logarithm Problem</a></li>
<li><a href="http://baudehlo.com/2013/06/24/setting-up-perfect-forward-secrecy-for-nginx-or-stud/">Setting up Perfect Forward Secrecy for nginx or stud</a></li>
</ul>Sabayon Linux NetworkManager: Fix broken wlan0 after resume by executing dhclient2014-02-19T21:09:00+01:002014-02-19T21:09:00+01:00Jan Beilicketag:jotbe.io,2014-02-19:/blog/2014/02/sabayon-linux-networkmanager-fix-broken-wlan0-after-resume-by-executing-dhclient/<p>Since a couple of updates my Sabayon machine had a broken <code>wlan0</code> interface after resuming from standby. The NetworkManager connected to the WIFI as expected and even received a correct IP from the DHCP server but something was broken with the routing as far as I know. The <code>route</code> command …</p><p>Since a couple of updates my Sabayon machine had a broken <code>wlan0</code> interface after resuming from standby. The NetworkManager connected to the WIFI as expected and even received a correct IP from the DHCP server but something was broken with the routing as far as I know. The <code>route</code> command didn’t return any route, pings failed.</p>
<p>I was able to fix the issue after every resume by running <code>sudo dhclient wlan0</code> manually. Needless to say, this was something that I did not want to do all the time. I found this <a href="http://ubuntuforums.org/showthread.php?t=1473270">helpful tip in the Ubuntu forums</a>: Just create a bash script using root permissions in <code>/etc/NetworkManager/dispatcher.d</code>, e.g. <code>20-dhclient</code>, with this content:</p>
<div class="highlight"><pre><span></span><code> <span class="o">#!/</span><span class="n">bin</span><span class="o">/</span><span class="n">bash</span>
<span class="o">#</span> <span class="n">This</span> <span class="n">script</span> <span class="n">runs</span> <span class="n">dhclient</span> <span class="k">when</span> <span class="k">using</span> <span class="n">wireless</span>
<span class="k">if</span> <span class="p">[</span> <span class="ss">"$1"</span> <span class="o">=</span> <span class="ss">"wlan0"</span> <span class="p">];</span> <span class="k">then</span>
<span class="k">if</span> <span class="p">[</span> <span class="ss">"$2"</span> <span class="o">=</span> <span class="ss">"up"</span> <span class="p">];</span> <span class="k">then</span>
<span class="n">dhclient</span> <span class="n">wlan0</span>
<span class="n">fi</span>
<span class="n">fi</span>
</code></pre></div>
<p>Save it, make it executable with <code>sudo chmod +x 20-dhclient</code> and restart the network with either <code>sudo /etc/init.d/NetworkManager restart</code> or <code>sudo systemctl restart NetworkManager</code>.</p>
<p>If you know a better way to fix this issue, please let me know in the comments.</p>Game over?2014-01-10T18:00:00+01:002014-01-10T18:00:00+01:00Jan Beilicketag:jotbe.io,2014-01-10:/blog/2014/01/game-over/<p><a href="http://mostlysignssomeportents.tumblr.com/post/72759474218/we-are-huxleying-ourselves-into-the-full-orwell">We are Huxleying ourselves into the full Orwell.</a> – Cory Doctorow</p>2014: Alte Krankenversichertenkarte ist weiterhin gültig2014-01-01T17:16:00+01:002014-01-01T17:16:00+01:00Jan Beilicketag:jotbe.io,2014-01-01:/blog/2014/01/2014-alte-krankenversichertenkarte-ist-weiterhin-gultig/<p>Ich bin heute über etliche Pressemitteilungen gestolpert, aus denen man ableiten könnte, dass mit der offiziellen Einführung der neuen elektronischen Gesundheitskarte (eGK) die alte Krankenversichertenkarte (KVK) ungültig würde. Dem ist nicht so! Die Kassenärzliche Vereinigung Hamburg hat im Dezember 2013 in einem <a href="http://www.kvhh.net/media/public/db/media/1/2010/08/238/2013_12_17_praxisinformation_ita_pvs_1.quartal_2014.pdf">Informationsblatt für Praxen</a> klargestellt:</p>
<blockquote>
<p>Die alten KVK sind …</p></blockquote><p>Ich bin heute über etliche Pressemitteilungen gestolpert, aus denen man ableiten könnte, dass mit der offiziellen Einführung der neuen elektronischen Gesundheitskarte (eGK) die alte Krankenversichertenkarte (KVK) ungültig würde. Dem ist nicht so! Die Kassenärzliche Vereinigung Hamburg hat im Dezember 2013 in einem <a href="http://www.kvhh.net/media/public/db/media/1/2010/08/238/2013_12_17_praxisinformation_ita_pvs_1.quartal_2014.pdf">Informationsblatt für Praxen</a> klargestellt:</p>
<blockquote>
<p>Die alten KVK sind weiterhin gültig. Moderne Lesegeräte können beide Kartentypen einlesen und die Praxissoftware kann Daten beider Kartentypen verarbeiten.</p>
</blockquote>
<p>Solange man noch keine eGK besitzt, legt man wie gehabt die alte KVK vor.</p>
<p>Was mir bislang nicht klar war: Die eGK gibt es nur für gesetzlich Versicherte:</p>
<blockquote>
<p>Die KVK betrifft nur die Versicherten der gesetzlichen Krankenkassen. Sonstige Kostenträger wie die Polizei und die Private Krankenversicherung geben weiterhin KVK aus und keine eGK.</p>
</blockquote>
<p>Wenn ich das richtig interpretiere, bleiben die alten KVK somit entweder bis zu ihrem jeweiligen Ablaufdatum gültig, oder bis alle Kostenträger die eGK verwenden. Man kommt also noch einige Zeit um eine elektronische Gesundheitskarte herum.</p>
<p>Ich hätte mich sehr gefreut, wenn die Medien hier etwas mehr recherchiert hätten, anstatt die Patienten unnötig zu verunsichern, wie man teilweise an den <a href="https://www.google.de/search?hl=de&gl=de&tbm=nws&q=gesundheitskarte">Teasern</a> sehen kann. (<a href="https://blog.jotbe-fx.de/uploads/egk-pressemeldungen.png">Screenshot</a>)</p>
<p><a href="http://digitalcourage.de/themen/elektronische-gesundheitskarte">Digitalcourage hat mehr zur eGK.</a></p>
<p><strong>Update (14.01.2014):</strong> Heise <a href="http://www.heise.de/newsticker/meldung/Elektronische-Gesundheitskarte-neues-Jahr-alte-Verwirrung-2085544.html">bestätigt</a> die Gültigkeit der alten KVK und beruft sich hierbei auf Meldungen der <a href="http://www.kbv.de/44227.html">Kassenärztlichen Bundesvereinigung</a> und der <a href="http://www.kzbv.de/pressemitteilung-vom-7-1-2014.834.de.html">Kassenzahnärztlichen Bundesvereinigung</a>.</p>iX Developer 1/2014: JavaScript-Praxisbeispiel „Stockwatch" beigesteuert2013-12-11T20:40:00+01:002013-12-11T20:40:00+01:00Jan Beilicketag:jotbe.io,2013-12-11:/blog/2013/12/ix-developer-12014-javascript-praxisbeispiel-stockwatch-beigesteuert/<p>Nach langer Zeit habe ich wieder einen Artikel für ein Magazin geschrieben. Dieses Mal dreht es sich um <a href="http://angularjs.org">AngularJS</a>, <a href="https://developer.mozilla.org/en-US/docs/IndexedDB">IndexedDB</a> und die <a href="http://developer.yahoo.com/yql/">Yahoo! Query Language</a>. Anhand einer kleinen Anwendung zum Verfolgen von Aktienkursen beschreibe ich das Zusammenspiel der Komponenten. Die Anwendung kommt ohne Backend aus und <a href="http://jotbe.io/sw/">kann hier ausprobiert werden …</a></p><p>Nach langer Zeit habe ich wieder einen Artikel für ein Magazin geschrieben. Dieses Mal dreht es sich um <a href="http://angularjs.org">AngularJS</a>, <a href="https://developer.mozilla.org/en-US/docs/IndexedDB">IndexedDB</a> und die <a href="http://developer.yahoo.com/yql/">Yahoo! Query Language</a>. Anhand einer kleinen Anwendung zum Verfolgen von Aktienkursen beschreibe ich das Zusammenspiel der Komponenten. Die Anwendung kommt ohne Backend aus und <a href="http://jotbe.io/sw/">kann hier ausprobiert werden.</a> Der <a href="https://github.com/jotbe/angular-stockwatch">Quellcode ist als Open-Source verfügbar</a>.</p>
<p>Erschienen ist der Artikel nun beim Heise Verlag im <a href="http://shop.heise.de/katalog/ix-developer-javascript-heute-2014">iX Developer Sonderheft „JavaScript heute"</a> unter dem Titel <em>„Hoch im Kurs: Aktien im Blick mit Yeoman, AngularJS und YQL"</em>. Die Heft-DVD enthält eine fertige Appliance als VirtualBox-Image mit einer eingerichteten Entwicklungsumgebung. Zum reinen Betrieb der Stockwatch reicht bereits ein einfacher Webserver aus, oder gar der Aufruf der <code>index.html</code> im <code>app</code>-Verzeichnis über das File-Protokoll. Eventuell verhindert im letzten Fall der Browser die XHR-Anfragen aus Sicherheitsgründen.</p>
<p>Die Anwendung wird auch nach Erscheinen des Artikels weiterentwickelt.</p>Einrichtung von Ghost auf Uberspace2013-09-25T20:04:00+02:002013-09-25T20:04:00+02:00Jan Beilicketag:jotbe.io,2013-09-25:/blog/2013/09/einrichtung-von-ghost-auf-uberspace/<p>Wer die Open Source Blogging-Plattform <a href="http://ghost.org/">Ghost</a> auf <a href="https://uberspace.de/">Uberspace</a> einrichten will, findet nebenan <a href="http://ghost.jotbe.io/setting-up-ghost-on-uberspace/">eine Anleitung</a>, stilecht bereitgestellt durch Ghost. ~~Die Plattform ist aktuell leider nur für Kickstarter-Backer verfügbar, hoffentlich in Kürze für alle.~~ Mittlerweile ist die Plattform für alle verfügbar.</p>Sabayon Linux: High CPU-load after updating Nvidia drivers2013-09-16T13:12:00+02:002013-09-16T13:12:00+02:00Jan Beilicketag:jotbe.io,2013-09-16:/blog/2013/09/sabayon-linux-high-cpu-load-after-updating-nvidia-drivers/<p>Today I ran a regular update of my Linux machine and after the next reboot I saw a continuous high CPU load caused by <code>gnome-shell</code>. Beside a couple of other updates, Entropy had updated Gnome and the Nvidia drivers. I checked the settings for OpenGL and found a strange setting …</p><p>Today I ran a regular update of my Linux machine and after the next reboot I saw a continuous high CPU load caused by <code>gnome-shell</code>. Beside a couple of other updates, Entropy had updated Gnome and the Nvidia drivers. I checked the settings for OpenGL and found a strange setting:</p>
<div class="highlight"><pre><span></span><code>$ sudo eselect opengl list
Passwort:
Available OpenGL implementations:
<span class="o">[</span><span class="m">1</span><span class="o">]</span> nvidia
<span class="o">[</span><span class="m">2</span><span class="o">]</span> xorg-x11 *
</code></pre></div>
<p>Fixing the setting by executing <code>$ sudo eselect opengl set 1</code> and restarting the X server solved the issue: Since then the CPU load is back to normal.</p>Neuer PGP-Key2013-07-21T21:20:00+02:002013-07-21T21:20:00+02:00Jan Beilicketag:jotbe.io,2013-07-21:/blog/2013/07/neuer-pgp-key/<p><a href="http://blog.jotbe-fx.de/kontakt.html">Hier gibt es meinen neuen Public-Key.</a></p>Hosting-Umzug abgeschlossen. Hallo Uberspace!2013-06-16T22:17:00+02:002013-06-16T22:17:00+02:00Jan Beilicketag:jotbe.io,2013-06-16:/blog/2013/06/hosting-umzug-abgeschlossen-hallo-uberspace/<p>Letztes Wochenende habe ich nach fast genau 11 Jahren den Hoster gewechselt und bin bei Uberspace gelandet.</p>
<p>Im Juni 2002 reservierte ich ein Webpack mit der Domain <a href="http://jotbe-fx.de">jotbe-fx.de</a> bei <a href="http://www.hosteurope.de">Host Europe</a> und sah es seitdem als Spielwiese und digitales Wohnzimmer.</p>
<p>Die ganzen Jahre über war ich prinzipiell zufrieden, aber …</p><p>Letztes Wochenende habe ich nach fast genau 11 Jahren den Hoster gewechselt und bin bei Uberspace gelandet.</p>
<p>Im Juni 2002 reservierte ich ein Webpack mit der Domain <a href="http://jotbe-fx.de">jotbe-fx.de</a> bei <a href="http://www.hosteurope.de">Host Europe</a> und sah es seitdem als Spielwiese und digitales Wohnzimmer.</p>
<p>Die ganzen Jahre über war ich prinzipiell zufrieden, aber mit der Zeit setzte das gebuchte Paket digitalen Rost an und hielt mit meinen geänderten Anforderungen nicht mit. Alleine das Preisleistungsverhältnis machte bereits vor ein paar Jahren einen Wechsel interessant - entweder innerhalb des selben Anbieters oder hin zu einem anderen.</p>
<p>## Uberspace kam gerade recht</p>
<p>Bei einem erforderlichen Server-Upgrade vor einiger Zeit änderten sich schließlich sämtliche Zugangsdaten, aufgrund der geänderten Server-Umgebung funktionierten einige Skripte und CMS nicht mehr. Mein Paket blieb von den Rahmenbedingungen her weiter auf dem Stand von 2002, u.a. begrenzt auf 1 GB Speicher für Webspace und Mailkonten, nur FTP und kein Shell-Zugriff.</p>
<p>Während der Reparatur meines Pakets entschloss ich mich daher zum Wechsel.</p>
<p>In der Twitter-Timeline stolperte ich über einen Anbieter, der anders sein will. Der Kunde entscheidet bei <a href="https://uberspace.de/">Uberspace</a> darüber, wie viel er monatlich pauschal zahlen möchte und erhält ein modernes Hostingpaket mit allem, was man als IT-Nerd heutzutage so haben möchte, darunter:</p>
<ul>
<li>Genügend Speicherplatz (aktuell 10 GB pro Paket)</li>
<li>SSH, optional mit Zwei-Faktor-Authentifizierung</li>
<li>Eine flexible Server-Umgebung mit Unterstützung für Python, Ruby, Lua, Erlang, node.js, MongoDB, Redis uvm.</li>
<li>Ebenso flexibles E-Mail-Handling</li>
<li>Antworten zu Fragen sowie Anleitungen über ein umfangreiches <a href="https://uberspace.de/dokuwiki/">Wiki</a>, oder dem schnell reagierenden <a href="https://uberspace.de/support">Support</a>.</li>
</ul>
<p>Sollte der Speicherplatz nicht ausreichen, kann man weitere Pakete registrieren und zusammen verwalten, insofern man Single-Sign-On verwendet. Beträge kann man gesammelt überweisen und anschließend auf seine Pakete verteilen.</p>
<h2>Drum prüfe ...</h2>
<p>Während einer Evaluierungsphase richtete ich bei Uberspace eine Umgebung für mein aktuelles Steckenpferd <a href="http://web2py.com/">Web2Py</a> ein. Das Setup gestaltete sich einfach und bereits nach kurzer Zeit lief eine Test-App mit <a href="https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface">WSGI</a> in einer Python-Sandbox (<a href="http://www.virtualenv.org/en/latest/">Virtualenv</a>), das sogar recht flott. Weitere kleinere Tests verliefen ebenfalls positiv. Sehr schön.</p>
<h2>Ein Umzug will geplant sein</h2>
<p>Nach der Entscheidung zum Umzug stand die Planung an. Als Planungswerkzeuge boten sich Stift und Zettel an, ich entschied mich zusätzlich für ein Online-Tool namens <a href="https://trello.com/">Trello</a>. Damit kann man wunderbar virtuelle Notizen an Pinwände kleben. (Am Rande: Trello lässt sich bestimmt auch einsetzen, um die Entwicklung von Software mittels <a href="https://de.wikipedia.org/wiki/Kanban_%28Softwareentwicklung%29">Kanban-Ansatz</a> zu steuern.)</p>
<p>Als Meilensteine hatte ich definiert:</p>
<ul>
<li>Einrichtung eines lokalen Testsystems basierend auf den aktuellen Live-Daten</li>
<li>Migration der Applikationen/Websites</li>
<li>Übertragung bzw. Kündigung von Domains</li>
<li>Migration der Mailkonten</li>
<li>Kündigung beim alten Hoster</li>
</ul>
<p>Die Teilziele waren jeweils mit relativ viel Arbeit verbunden. Nimmt man sich beispielsweise die Mailkonten vor, hingen daran Schritte wie die Vorankündigung des Umzugs an Mailkonto-Inhaber, Löschung inaktiver Konten, die Evaluierung einer Migrationsstrategie sowie die Entwicklung dazu benötigter Skripte.</p>
<p>Das lokale Testsystem bestand aus einer mit <a href="http://www.vagrantup.com/">Vagrant</a> und <a href="https://puppetlabs.com/puppet/what-is-puppet/">Puppet</a> kontrollierten virtuellen Maschine. Der Basis-Server, Datenbanken, Websites und Applikationen wurden am Ende automatisch von Grund auf über ein Skript eingerichtet. Über ein paar Anpassungen in der Konfiguration konnte ich das zukünftige Live-System lokal vorbereiten und recht gut testen.</p>
<h2>Es wird Ernst</h2>
<p>Der Umzug selbst verlief größtenteils wie geplant und recht entspannt. Hier die Kurzfassung:</p>
<ul>
<li>Mailkonten-Benutzer erhielten von mir eine Vorankündigung, ich sperrte zu einem Stichtag nicht mehr benötigte Konten sowie solche ohne Rückmeldung.</li>
<li>Die Websites liefen bereits seit einiger Zeit unter temporären Domains. Bei der echten Migration musste ich nur noch die aktuellen Datenbestände importieren.</li>
<li>Der vorige Hoster erhielt KK- bzw. CLOSE-Anträge.</li>
<li>Die Quell-Mailkonten sperrte ich vorübergehend und übertrug sie per <a href="http://imapsync.lamiral.info/">imapsync</a>.</li>
<li>Alle zu übertragenden Domains transferierte ich am Ende und konfigurierte neue Zonen im DNS.</li>
<li>Ein abschließender Check offenbarte ein paar Server-Fehler (HTTP-Status: 500) in der Serendipity-Installation, die ich unter anderem mit diesem <a href="https://gist.github.com/yellowled/5145830">Patch</a> aus dem <a href="http://board.s9y.org/viewtopic.php?f=3&t=19196&start=30">Forum</a> korrigieren konnte.</li>
</ul>
<h2>Unterm Strich</h2>
<p>Die Arbeit hat sich meines Erachtens gelohnt. Der Hoster-Wechsel bot viel Potential zum Lernen. Über die Jahre erarbeitete Teilaspekte konnte ich auffrischen und gleichzeitig in einem größeren gemeinsamen Kontext anwenden. Ich freue mich auf die vielfältigen technischen Möglichkeiten, die mir nun zur Verfügung stehen. Die Spielwiese ist wieder geöffnet!</p>Bookmarklet: Convert tab separated fields to Dokuwiki table rows2013-02-15T23:35:00+01:002013-02-15T23:35:00+01:00Jan Beilicketag:jotbe.io,2013-02-15:/blog/2013/02/bookmarklet-convert-tab-separated-fields-to-dokuwiki-table-rows/<p>When you deal with lots of table data and want to publish them in <a href="http://dokuwiki.org">Dokuwiki</a>, you will either have to replace everything manually or you will need several search and replace shortcuts that will replace all the tab separators to vertical bars: In the beginning of a line, between each …</p><p>When you deal with lots of table data and want to publish them in <a href="http://dokuwiki.org">Dokuwiki</a>, you will either have to replace everything manually or you will need several search and replace shortcuts that will replace all the tab separators to vertical bars: In the beginning of a line, between each field and at the end of a line. Especially when you have to do it quite often (read: more than once), the following bookmarklet might save some time.</p>
<p>To use the bookmarklet, just drag and drop it onto the bookmarks toolbar:</p>
<p><a href="(function%20tsv2dw(d)%20%7Bvar%20t%3Dd.getElementById(" title="wiki__text">[DW] Tab rows 2 DW</a>%3Bif%20('selectionStart'%20in%20t%20%26%26%20t.selectionStart%20%3C%20t.selectionEnd)%20%7Bvar%20tv%20%3D%20t.value%3Bvar%20tvs%3Dtv.substring(t.selectionStart%2C%20t.selectionEnd)%3Bvar%20tvsn%3Dtvs.replace(%2F(%5B%5Ct%5D)%2Fg%2C%20'%20%7C%20')%3Btvsn%3Dtvsn.replace(%2F(%5E)%2Fgm%2C%20'%7C%20')%3Btvsn%3Dtvsn.replace(%2F(%24)%2Fgm%2C%20'%20%7C')%3Btvsn%3Dtvsn.replace('%7C%20%20%7C'%2C%20'')%3Bt.value%20%3D%20tv.replace(tvs%2C%20tvsn)%3B%7D%3Breturn%20void(0)%3B%7D)(document)%3B)</p>
<p><strong>Usage:</strong> Copy the table rows from LibreOffice/OpenOffice Calc or Microsoft Excel (contents will be copied tab-separated), edit the Dokuwiki page and paste the rows into the textarea in the desired location. Select these rows again and click the bookmarklet. That's all!</p>
<p>Tested in Firefox 18.0.1 (Sabayon Linux)</p>Blog wieder lauffähig2013-01-27T20:19:00+01:002013-01-27T20:19:00+01:00Jan Beilicketag:jotbe.io,2013-01-27:/blog/2013/01/blog-wieder-lauffahig/<p>Serendipity ist auf dem aktuellen Stand, die Pfade habe ich auch korrigiert. Die Autorenseite ist noch im Backofen. Bugs bitte in den Kommentaren verewigen.</p>Sabayon Linux: Set the default web browser for Gnome (eg. for Python Apps)2012-05-18T23:59:00+02:002012-05-18T23:59:00+02:00Jan Beilicketag:jotbe.io,2012-05-18:/blog/2012/05/sabayon-linux-set-the-default-web-browser-for-gnome-eg-for-python-apps/<p>In my particular use case I wanted links in Gwibber to open in Chromium instead of Firefox. Gwibber is a Twitter client written in Python. Unfortunately all the proposed solutions from above didn’t work. Fortunately I found a solution. There are lots of articles in the web dealing with …</p><p>In my particular use case I wanted links in Gwibber to open in Chromium instead of Firefox. Gwibber is a Twitter client written in Python. Unfortunately all the proposed solutions from above didn’t work. Fortunately I found a solution. There are lots of articles in the web dealing with the right way to set the default web browser in Gnome or the system in general:</p>
<ul>
<li>Gnome panel: "System information > Preferred Applications" or</li>
<li>Editing <a href="http://unix.stackexchange.com/questions/31359/how-to-setup-default-browser"><code>.local/share/applications/mimeapps.list</code></a> or</li>
<li><a href="http://binfalse.de/2012/04/galternatives/"><code>galternatives</code></a> (afaik not available in Gentoo) or</li>
<li><a href="http://forums.gentoo.org/viewtopic-t-352942-highlight-evolution+browser.html"><code>gconftool-2</code></a> or</li>
<li>Editing the <code>$BROWSER</code> environment variable</li>
</ul>
<p>When I tried to open an URL in the Python Shell, the page opened in Firefox:</p>
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="kn">import</span> <span class="nn">webbrowser</span>
<span class="o">>>></span> <span class="n">webbrowser</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="err">’</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">heise</span><span class="o">.</span><span class="n">de</span><span class="err">’</span><span class="p">)</span> <span class="c1"># Opened in Firefox</span>
</code></pre></div>
<p>I set the environment variable <code>$BROWSER</code>:</p>
<div class="highlight"><pre><span></span><code>$ <span class="nb">export</span> <span class="nv">BROWSER</span><span class="o">=</span><span class="s2">"chromium"</span>
</code></pre></div>
<p>When I ran the Python code again the page opened in Chromium. So far so good, but of course it was still not working in Gwibber. I tried to set it automatically by storing the variable in <code>.bashrc</code> - no luck.</p>
<p>Eventually I found out that I should set the variable in the file <a href="https://help.ubuntu.com/community/EnvironmentVariables"><code>~/.pam_environment</code></a>: It is a storage for environment variables - session-wide used, even when running a desktop environment. After editing the file I had to logout of my current graphical session and login again.</p>
<p>Since then Gwibber is opening links in Chromium. <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>Bookmarklet: Remove "Join Google+"-Banner from a post2012-05-14T19:47:00+02:002012-05-14T19:47:00+02:00Jan Beilicketag:jotbe.io,2012-05-14:/blog/2012/05/bookmarklet-remove-join-google-banner-from-a-post/<p>When you are reading a post on Google+ the page might contain the IMHO annoying banner to join Google’s social network. The banner distracts you from reading the article - it even follows you when you are scrolling. This bookmarklet for your browser’s toolbar hides the banner.</p>
<p>To use …</p><p>When you are reading a post on Google+ the page might contain the IMHO annoying banner to join Google’s social network. The banner distracts you from reading the article - it even follows you when you are scrolling. This bookmarklet for your browser’s toolbar hides the banner.</p>
<p>To use the bookmarklet, just drag and drop it onto the bookmarks toolbar:</p>
<p><a href="(function%20hideBanner()%7Bvar%20d%3Ddocument%3Bd.getElementsByClassName(" title="eua">G+HideJoinBanner</a>%5B0%5D.style%5B'display'%5D%3D'none'%3Bd.getElementsByClassName('Tl')%5B0%5D.style%5B'display'%5D%3D'none'%3Bd.getElementById('contentPane').style%5B'marginTop'%5D%3D0%3Breturn%20void(0)%3B%7D)())</p>
<p><strong>Usage:</strong> When you are on a Google+ page that shows the banner, just click the bookmarklet and the banner should disappear. It will be displayed again after reloading the page.</p>
<p>Tested in Mac OS X 10.6.8: Google 19 beta, Firefox 13 beta</p>Mein erstes Mal: Schreiben für die iX2010-07-18T16:00:00+02:002010-07-18T16:00:00+02:00Jan Beilicketag:jotbe.io,2010-07-18:/blog/2010/07/mein-erstes-mal-schreiben-fur-die-ix/<p>Der Donnerstag war so ein Tag, da kam ich mir seit langem mal wieder vor wie ein Kind, das zu seinem Geburtstag endlich ein lang ersehntes Paket auspackt, das gewünschte Geschenk drin vorfindet und es dann stolz wie Bolle seinem Umfeld zeigen kann. Bei mir war es ausnahmsweise mal kein …</p><p>Der Donnerstag war so ein Tag, da kam ich mir seit langem mal wieder vor wie ein Kind, das zu seinem Geburtstag endlich ein lang ersehntes Paket auspackt, das gewünschte Geschenk drin vorfindet und es dann stolz wie Bolle seinem Umfeld zeigen kann. Bei mir war es ausnahmsweise mal kein neues Gadget zum Herumspielen, sondern die <a href="http://www.heise.de/ix/inhalt.html">neue Ausgabe der iX</a> (08/2010), die einen von mir geschriebenen Artikel zum Thema Unit-Tests für JavaScript enthält - eine Premiere für mich, verbunden mit einer wertvollen Erfahrung und einem nicht zu unterschätzenden Schub fürs Selbstbewusstsein.</p>
<p>Anfangs war ich skeptisch, als mir empfohlen wurde, einen Artikel für die renommierte IT-Fachzeitschrift zu verfassen. Wie das so ist mit Dingen, die man noch nie gemacht hat, die komplex (oder irgendwie ehrfürchtig) zu sein scheinen und deren Umsetzung man sich erst einmal nicht vorstellen kann, lies ich die Idee einige Zeit reifen ohne einen ersten Schritt zu tun.</p>
<p>Nach einer gewissen Phase des Prokrastinierens und Zweifelns entwickelte sich eine "Ach, mach halt mal, was soll schon passieren"-Einstellung - unterstützt durch die ein oder anderen Nachfrage, ob ich es mir schon überlegt hätte und ob ich einen Kontakt zum Verlag haben möchte - Vielen Dank an <a href="http://blog.wartala.de/">Ramon</a> und mein familiäres Umfeld für die Ermutigungen an dieser Stelle. <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></p>
<p>Mit hohem Anspruch (und geringer Erwartung was eine Veröffentlichung anging) machte ich mich irgendwann ans Werk. Schwierig im Nachhinein zu bewerten, was am meisten Arbeit machte, das Schreiben des Textes, die Recherche oder der unterstützende und zu beschreibende Testfall. Keine Ahnung.</p>
<p>Nach dem Versand des irgendwann in einem ersten Entwurf vorliegenden Manuskripts wartete ich nervös auf eine Rückmeldung - gefällt es dem Redakteur? Landet es im Papierkorb? Entspricht der Text trotz vorab geklärter Gliederung überhaupt den Vorstellungen?</p>
<p>Glücklicherweise bekam ich nach einiger Zeit eine Rückmeldung, mitsamt ein paar Anmerkungen und Fragen. Alles in allem recht überschaubar und konstruktiv - von Papierkorb war keine Rede. Nach einer Korrektur und nochmaliger Verfeinerung ging es schon in den Satz - eine Veröffentlichung rückte plötzlich näher.</p>
<p>Donnerstag Morgen hielt ich dann etwas aufgeregt die neue Ausgabe am Kiosk in den Händen - ich hatte bereits am Vortag auf der Heise-Seite nach Anhaltspunkten Ausschau gehalten, ob der Artikel tatsächlich enthalten sein wird - und tatsächlich, da war er!</p>
<p>Beim ersten Überfliegen fiel mir direkt noch die ein oder andere orthografische Abweichung auf, leider übersehen beim eigenen Korrekturlesen und im Lektorat, aber das passiert nun mal. Vermutlich werden in der nächsten Zeit Leser auch nicht mit Kritik sparen - ich freue mich schon darauf, denn nur durch Diskussionen, andere Perspektiven und einen fundierten kritischen Austausch kann man seinen eigenen Kenntnisstand in dem jeweiligen Themengebiet überprüfen und erweitern.</p>
<p>Rückblickend betrachtet finde ich es wichtig, über den eigenen Schatten gesprungen zu sein, es einfach ausprobiert und durchgezogen zu haben - von dieser äußerst positiven Erfahrung werde ich noch einige Zeit zehren können. Wer weiß, vielleicht folgt ja der ein oder andere Artikel für den „Verlag aus der norddeutschen Tiefebene", falls sich mir die Gelegenheit bietet und die Zeit es zulässt.</p>Automatische Delicious-Postings deaktiviert2010-06-25T20:06:00+02:002010-06-25T20:06:00+02:00Jan Beilicketag:jotbe.io,2010-06-25:/blog/2010/06/automatische-delicious-postings-deaktiviert/<p>Alle möglichen Kanäle miteinander zu verknüpfen ist zwar technisch witzig, aber nicht immer und überall sinnvoll. Ich habe das Posten der täglichen Delicious-Links erstmal deaktiviert - es war einfach zuviel des Guten.</p>
<p>Wer mein Blog auch wegen der Bookmarks abonniert hat, kann neben dem Blog-Feed zusätzlich <a href="http://delicious.com/jot.be">Delicious</a> abonnieren oder alternativ den …</p><p>Alle möglichen Kanäle miteinander zu verknüpfen ist zwar technisch witzig, aber nicht immer und überall sinnvoll. Ich habe das Posten der täglichen Delicious-Links erstmal deaktiviert - es war einfach zuviel des Guten.</p>
<p>Wer mein Blog auch wegen der Bookmarks abonniert hat, kann neben dem Blog-Feed zusätzlich <a href="http://delicious.com/jot.be">Delicious</a> abonnieren oder alternativ den Soup-Feed, in dem alles zwo-nullig verschwurbelt wird.</p>
<p>Was im Blog verbleibt, sind die Netzfundstücke in der rechten Seitenspalte.</p>Bash-Script: Futurezone-Mirror mit Wget2010-06-24T19:35:00+02:002010-06-24T19:35:00+02:00Jan Beilicketag:jotbe.io,2010-06-24:/blog/2010/06/bash-script-futurezone-mirror-mit-wget/<p><strong>Update:</strong> <em>futurezone</em> lebt weiter unter <a href="http://futurezone.at">http://futurezone.at</a>.</p>
<p>Das Netz-Magazin <a href="http://futurezone.orf.at/"><em>futurezone</em></a> des ORF <a href="http://blog.zeit.de/kulturkampf/2010/06/18/no-futurezone/">wird wohl bald dicht gemacht</a>. Inhalte und Themen <a href="http://derstandard.at/1276413751675/ORF-ON-Chef-kuendigt-Erhalt-der-Futurezone-Inhalte-an">sollen jedoch "bis zu einem gewissen Grad beibehalten"</a> und auf dem Internetangebot von <a href="http://www.orf.at/">ORF.at</a> weitergeführt werden.</p>
<p>Wer sich noch einen Mirror der <em>futurezone</em> erstellen will, findet <a href="http://github.com/jotbe/Bash-Collection/blob/master/mirror-futurezone-wget.sh">bei GitHub …</a></p><p><strong>Update:</strong> <em>futurezone</em> lebt weiter unter <a href="http://futurezone.at">http://futurezone.at</a>.</p>
<p>Das Netz-Magazin <a href="http://futurezone.orf.at/"><em>futurezone</em></a> des ORF <a href="http://blog.zeit.de/kulturkampf/2010/06/18/no-futurezone/">wird wohl bald dicht gemacht</a>. Inhalte und Themen <a href="http://derstandard.at/1276413751675/ORF-ON-Chef-kuendigt-Erhalt-der-Futurezone-Inhalte-an">sollen jedoch "bis zu einem gewissen Grad beibehalten"</a> und auf dem Internetangebot von <a href="http://www.orf.at/">ORF.at</a> weitergeführt werden.</p>
<p>Wer sich noch einen Mirror der <em>futurezone</em> erstellen will, findet <a href="http://github.com/jotbe/Bash-Collection/blob/master/mirror-futurezone-wget.sh">bei GitHub ein Bash-Script</a>, das über <a href="http://www.gnu.org/software/wget/">Wget</a> eine Sequenz von Artikeln zum Offline-Lesen inkl. Grafiken, CSS und JS herunterlädt.</p>
<p>Inspiriert hat mich <a href="http://astera.soup.io/post/61595258/Get-you-own-fuzo">dieses</a> auf <a href="http://curl.haxx.se/">Curl</a> zurückgreifende Mirror-Script, das leider bei mir nicht auf Anhieb funktionierte.</p>
<p>Achtet beim Erstellen des Mirrors auf die Platten-Quota und zur Laufzeit auf eine angemessene Wartezeit zwischen den Anfragen. <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>
<p>Quellcode bei GitHub: <a href="http://github.com/jotbe/Bash-Collection/blob/master/mirror-futurezone-wget.sh">mirror-futurezone-wget.sh</a></p>Programmer Personality Test2010-03-27T15:44:00+01:002010-03-27T15:44:00+01:00Jan Beilicketag:jotbe.io,2010-03-27:/blog/2010/03/programmer-personality-test/<blockquote>
<p>Your programmer personality type is:</p>
<p><strong>DHSB</strong></p>
<p><strong>You’re a <em>D</em>oer.</strong><br>
You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money.</p>
<p><strong>You like coding at …</strong></p></blockquote><blockquote>
<p>Your programmer personality type is:</p>
<p><strong>DHSB</strong></p>
<p><strong>You’re a <em>D</em>oer.</strong><br>
You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money.</p>
<p><strong>You like coding at a <em>H</em>igh level.</strong><br>
The world is made up of objects and components, you should create your programs in the same way.</p>
<p><strong>You work best in a <em>S</em>olo situation.</strong><br>
The best way to program is by yourself. There’s no communication problems, you know every part of the code allowing you to write the best programs possible.</p>
<p><strong>You are a li<em>B</em>eral programmer.</strong><br>
Programming is a complex task and you should use white space and comments as freely as possible to help simplify the task. We’re not writing on paper anymore so we can take up as much room as we need.</p>
</blockquote>Umstellung auf HTML52010-01-02T01:44:00+01:002010-01-02T01:44:00+01:00Jan Beilicketag:jotbe.io,2010-01-02:/blog/2010/01/umstellung-auf-html5/<p>Momentan stelle ich das Blog schrittweise auf <a href="http://html5.org/">HTML5</a> um. Dazu habe ich im ersten Schritt existierende Tags in HTML5-Entitäten umbenannt, ohne CSS-Code bearbeiten zu müssen. In Safari und Firefox 3.5.7 schaut es gut aus. Der Internet Explorer versteht HTML5-Tags noch nicht (ausreichend), sodass man zu einem <a href="http://html5doctor.com/how-to-get-html5-working-in-ie-and-firefox-2/">Javascript-</a> oder …</p><p>Momentan stelle ich das Blog schrittweise auf <a href="http://html5.org/">HTML5</a> um. Dazu habe ich im ersten Schritt existierende Tags in HTML5-Entitäten umbenannt, ohne CSS-Code bearbeiten zu müssen. In Safari und Firefox 3.5.7 schaut es gut aus. Der Internet Explorer versteht HTML5-Tags noch nicht (ausreichend), sodass man zu einem <a href="http://html5doctor.com/how-to-get-html5-working-in-ie-and-firefox-2/">Javascript-</a> oder <a href="http://blog.whatwg.org/styling-ie-noscript">CSS-Trick</a> greifen muss. Ich verwende vorerst die Javascript-Variante.</p>
<p>Als nächstes überlege ich, die IDs und Klassen in den HTML5-Elementen zu entsorgen, insofern sie überflüssig sind. Ich bin noch unschlüssig, ob ich es nicht so lassen soll, weil mir der Weg, über IDs und Klassen zu arbeiten, bei der Umstellung auf HTML5 viel Arbeit erspart hat.</p>
<p>Statt <code>div.BlogEntry</code> nutze ich aktuell nur den Klassennamen <code>.BlogEntry</code> - ob nun <code><div class="BlogEntry"></code> oder <code><article class="BlogEntry"></code> im HTML-Code verwendet wird, ist dann nur noch Geschmackssache. Nachteil: Aus <code><div class="Footer"></code> wird <code><footer class="Footer"></code>, was eine gewisse Redundanz mit sich bringt.</p>
<p>Bin an dieser Stelle für Anregungen und generelle HTML5 Best Praktice Hinweise dankbar.</p>
<p>Darüber hinaus habe ich ein paar Änderungen an den Templates und dem CSS-Code vorgenommen. Ist im Browser Javascript deaktiviert, wird ein entsprechender Hinweis ausgegeben. Besucher mit Internet Explorer \<= 6 bekommen eine Infobox mit der Bitte den Browser zu wechseln/aktualisieren zu Gesicht, serviert über Conditional Comments.</p>
<p><strong>Update:</strong> Interessieren würde mich auch, ob jemand meiner Leser bereits mit <a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame</a> Erfahrungen gemacht hat. Datenkrake hin oder her <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>26C3-Aufzeichnungen per BitTorrent herunterladen2009-12-31T01:30:00+01:002009-12-31T01:30:00+01:00Jan Beilicketag:jotbe.io,2009-12-31:/blog/2009/12/26c3-aufzeichnungen-per-bittorrent-herunterladen/<p>Der <a href="http://events.ccc.de/congress/2009/">26. Chaos Communication Congress</a> ist vorbei und bereits jetzt ist ein Großteil der <a href="http://mirror.fem-net.de/CCC/26C3/">Vorträge als Mitschnitt online verfügbar</a>. Um die Server nicht überzustrapazieren, kann man die einzelnen MP4-Dateien über <a href="http://en.wikipedia.org/wiki/BitTorrent_%28protocol%29">BitTorrent</a> herunterladen - unter Mac OS X ist aktuell <a href="http://www.transmissionbt.com/">Transmission</a> der Client meiner Wahl. <a href="http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_software">Weitere Clients findet man u.a. in …</a></p><p>Der <a href="http://events.ccc.de/congress/2009/">26. Chaos Communication Congress</a> ist vorbei und bereits jetzt ist ein Großteil der <a href="http://mirror.fem-net.de/CCC/26C3/">Vorträge als Mitschnitt online verfügbar</a>. Um die Server nicht überzustrapazieren, kann man die einzelnen MP4-Dateien über <a href="http://en.wikipedia.org/wiki/BitTorrent_%28protocol%29">BitTorrent</a> herunterladen - unter Mac OS X ist aktuell <a href="http://www.transmissionbt.com/">Transmission</a> der Client meiner Wahl. <a href="http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_software">Weitere Clients findet man u.a. in der Wikipedia.</a></p>
<p>Um in einem Rutsch an die benötigten Torrent-Dateien zu gelangen, kann man unter anderem auf die Firefox-Erweiterung <a href="http://www.downthemall.net/">DownThemAll</a> zurückgreifen.</p>
<p>Wer lieber mit der Kommandozeile arbeitet, kann auch <a href="http://en.wikipedia.org/wiki/Wget"><code>wget</code></a> verwenden und so beispielsweise alle <code>mp4</code>-Torrents in das lokale Unterverzeichnis <code>26C3_MP4/</code> herunterladen (Wartezeit: <code>-w0</code> in Sekunden):</p>
<div class="highlight"><pre><span></span><code>$ wget -r -l1 -H -t1 -nd -N -np -w0 -A.torrent -P26C3_MP4/ http://mirror.fem-net.de/CCC/26C3/mp4/
</code></pre></div>
<p>Die heruntergeladenen Torrent-Dateien im Anschluss mit dem jeweiligen BitTorrent-Client öffnen und etwas Geduld mitbringen.</p>
<p><strong>Empfehlung:</strong> Nach dem Download bitte die Dateien nicht direkt aus dem Client löschen, sondern noch einige Zeit anderen Benutzern zur Verfügung stellen (<em>seeden</em>).</p>Blog-System aktualisiert2009-12-30T17:25:00+01:002009-12-30T17:25:00+01:00Jan Beilicketag:jotbe.io,2009-12-30:/blog/2009/12/blog-system-aktualisiert/<p>Leider dauerte das Update auf eine aktuelle <a href="http://s9y.org/">Serendipity</a>-Version länger als geplant. Ich bedanke mich für die Verzögerungen bei dem Dreigestirn bestehend aus Access- und Hosting-Provider, sowie dem FTP-Client.</p>
<p>Zeitgleich habe ich die Darstellung einiger jahrealten übernommenen Einträge grob korrigiert. Die standardmäßig aktive Markdown-Syntax sorgte dafür, dass manche alten Einträge …</p><p>Leider dauerte das Update auf eine aktuelle <a href="http://s9y.org/">Serendipity</a>-Version länger als geplant. Ich bedanke mich für die Verzögerungen bei dem Dreigestirn bestehend aus Access- und Hosting-Provider, sowie dem FTP-Client.</p>
<p>Zeitgleich habe ich die Darstellung einiger jahrealten übernommenen Einträge grob korrigiert. Die standardmäßig aktive Markdown-Syntax sorgte dafür, dass manche alten Einträge fälschlicherweise als Quellcode erkannt und entsprechend als <code><pre></code> formatiert wurden.</p>
<p>Der Fehler lag jedoch nicht an dem Plugin, sondern an den importierten Inhalten. Aus unbekanntem Grund begannen die Absätze (<code><p></code>) mit einem vorangestellten Tabulator, der in Markdown einen Codeblock erzeugt. Hat etwas gedauert, bis ich darauf gestoßen bin.</p>
<p>Darüber hinaus enthalten einige alte Artikel weiterhin encodierte HTML-Entities. Mal schauen, ob und wann ich das korrigiere.</p>Es ist mal wieder soweit ...2009-12-25T18:36:00+01:002009-12-25T18:36:00+01:00Jan Beilicketag:jotbe.io,2009-12-25:/blog/2009/12/es-ist-mal-wieder-soweit/<p><a href="http://www.23hq.com/jotbe/photo/5222918/original"><img alt="" src="http://www.23hq.com/23666/5222918_aa63a3bd490ccc393837a891a6555fad_standard.jpg"></a></p>
<p>Ich wünsche allen ein besinnliches Fest, einen gelungenen Übergang ins neue Jahr, Gesundheit, Glück, Zufriedenheit und Erfolg, privat wie beruflich – kurzum: Das volle Programm!</p>
<p>... und jetzt sortiere ich die Tasten wieder um. <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>Links des Tages2009-10-23T19:17:00+02:002009-10-23T19:17:00+02:00Jan Beilicketag:jotbe.io,2009-10-23:/blog/2009/10/links-des-tages/<ul>
<li><a href="http://www.heise.de/newsticker/meldung/Madrider-Erklaerung-Fuer-internationale-Datenschutzabkommen-und-gegen-Ueberwachungsgesetze-837403.html">»Madrider Erklärung«: Für internationale Datenschutzabkommen und gegen Überwachungsgesetze</a></li>
<li><a href="http://www.netzpolitik.org/2009/internetsperren-gesetz-in-frankreich-verfassungsgemaess/">Netzsperren bei wiederholten Urheberrechtsverletzungen in Frankreich gebilligt (Hadopi 2)</a></li>
<li><a href="http://www.musikindustrie.de/aktuell_einzel/back/84/news/frankreich-vorbild-in-europa-im-kampf-gegen-internetpiraterie/">Deutsche Musikindustrie in Gestalt von Dieter Gorny findet das selbstverständlich positiv</a> und will einen »vergleichbaren Ansatz« für Deutschland.</li>
<li><a href="http://www.laut.de/vorlaut/news/2009/10/22/23433/index.htm">GEMA/YouTube: Kein U2-Livestream in Deutschland.</a> Weil es keine Einigung über Lizenzgebühren zwischen Universal Music …</li></ul><ul>
<li><a href="http://www.heise.de/newsticker/meldung/Madrider-Erklaerung-Fuer-internationale-Datenschutzabkommen-und-gegen-Ueberwachungsgesetze-837403.html">»Madrider Erklärung«: Für internationale Datenschutzabkommen und gegen Überwachungsgesetze</a></li>
<li><a href="http://www.netzpolitik.org/2009/internetsperren-gesetz-in-frankreich-verfassungsgemaess/">Netzsperren bei wiederholten Urheberrechtsverletzungen in Frankreich gebilligt (Hadopi 2)</a></li>
<li><a href="http://www.musikindustrie.de/aktuell_einzel/back/84/news/frankreich-vorbild-in-europa-im-kampf-gegen-internetpiraterie/">Deutsche Musikindustrie in Gestalt von Dieter Gorny findet das selbstverständlich positiv</a> und will einen »vergleichbaren Ansatz« für Deutschland.</li>
<li><a href="http://www.laut.de/vorlaut/news/2009/10/22/23433/index.htm">GEMA/YouTube: Kein U2-Livestream in Deutschland.</a> Weil es keine Einigung über Lizenzgebühren zwischen Universal Music und der Verwertungsgesellschaft gab, wird man das Konzert in Deutschland nicht verfolgen können, außer man befindet sich gerade zufällig in einem der erlaubten Länder - und sei es nur virtuell. <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></li>
<li><a href="http://www.euractiv.de/innovation-und-infrastruktur/artikel/internetsperre---eu-parlament-gibt-nach-002282">Internetsperre - EU-Parlament gibt nach</a></li>
<li><a href="http://www.scienceblogs.de/weitergen/2009/10/regividerm-die-studien-zur-wirksamkeit.php">Regividerm: Die Studien zur Wirksamkeit</a></li>
<li>Dazu auch ein <a href="http://www.neurodermitis.net/">Statement auf der Homepage vom Bundesverband Neurodermitiskranker in Deutschland e.V.</a></li>
</ul>Links des Wochenendes2009-08-09T20:27:00+02:002009-08-09T20:27:00+02:00Jan Beilicketag:jotbe.io,2009-08-09:/blog/2009/08/links-des-wochenendes/<ul>
<li><a href="http://www.spiegel.de/politik/deutschland/0,1518,641278,00.html">Harald Christ, Mittelstandsexperte der SPD, löscht seine Internet-Auftritte</a>, die scheinbar alles andere als sozialdemokratisch waren. Oh Mann, das »böse Internet«.</li>
<li>DDoS-Attacke auf Twitter: <a href="http://www.heise.de/newsticker/Angriff-auf-Twitter-Blogger-bezichtigt-russische-Regierung--/meldung/143234">Blogger verdächtigt die russische Regierung</a></li>
<li><a href="http://www.heise.de/newsticker/Britische-Biometrie-Ausweise-in-wenigen-Minuten-geknackt--/meldung/143231">Biometrische Ausweise geknackt</a> - Britische Regierungsvertreter halten System weiter für sicher.</li>
<li>Bei Jörg Tauss wurde mehr kinderpornografisches Material gefunden als bisher angenommen, <a href="http://www.spiegel.de/politik/deutschland/0,1518,641279,00.html">so …</a></li></ul><ul>
<li><a href="http://www.spiegel.de/politik/deutschland/0,1518,641278,00.html">Harald Christ, Mittelstandsexperte der SPD, löscht seine Internet-Auftritte</a>, die scheinbar alles andere als sozialdemokratisch waren. Oh Mann, das »böse Internet«.</li>
<li>DDoS-Attacke auf Twitter: <a href="http://www.heise.de/newsticker/Angriff-auf-Twitter-Blogger-bezichtigt-russische-Regierung--/meldung/143234">Blogger verdächtigt die russische Regierung</a></li>
<li><a href="http://www.heise.de/newsticker/Britische-Biometrie-Ausweise-in-wenigen-Minuten-geknackt--/meldung/143231">Biometrische Ausweise geknackt</a> - Britische Regierungsvertreter halten System weiter für sicher.</li>
<li>Bei Jörg Tauss wurde mehr kinderpornografisches Material gefunden als bisher angenommen, <a href="http://www.spiegel.de/politik/deutschland/0,1518,641279,00.html">so zumindest der Spiegel</a>. Mal abwarten, was da dran ist. <a href="http://twitter.com/tauss/statuses/3193952212">Tauss’ Kommentar</a> dazu.</li>
<li>Dazu passend: <a href="http://netzpolitik.org/2009/sommerloch-doppelplusgut-tauss-schmidt-schwesig-jung-und-lauterbach/#more-7998">Sommerloch Doppelplusgut: Tauss, Schmidt, Schwesig, Jung und Lauterbach</a></li>
</ul>
<blockquote>
<p>So langsam frage ich mich, wer da bei der SPD das Sagen hat. Hätte jemand das Chaos der letzten Wochen in einem Drehbuch "Wie man eine Volkspartei mit maximalem Schaden vor die Wand fährt" skizziert, würde ein Produzent den Plot wohl als unrealistisch ablehnen. Dummerweise reden wir aber nicht über ein Drehbuch, sondern über die Realität.</p>
</blockquote>
<ul>
<li><a href="http://mephisto976.uni-leipzig.de/blogs/tramping/team-baltikum/detailansicht/artikel/estnisches-grundrecht-freier-zugang-zum-internet.html">Estnisches Grundrecht: Freier Zugang zum Internet</a></li>
<li><a href="http://www.heise.de/newsticker/SPD-Sozialministerin-mahnt-schnellere-Kinderporno-Sperren-an--/meldung/143239">Mecklenburg-Vorpommerns Sozialministerin Manuela Schwesig (SPD) mahnt schnellere Kinderporno-Sperren an</a>. Ob die SPD überhaupt noch irgendwelche Einschläge bemerkt? - Nicht nur <a href="http://twitter.com/sixtus/statuses/3194126955">Mario Sixtus sieht die 5%-Hürde bereits in Sicht</a> <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></li>
<li><a href="http://www.sueddeutsche.de/computer/698/483147/text/">Kinderpornographie - Simple Lösungen für ein komplexes Problem</a>:</li>
</ul>
<blockquote>
<p>"Natürlich bedienen sich Pädophile des Internets, um Kinderpornographie auszutauschen", sagt Rechtsanwalt Udo Vetter, der in mehreren Hundert Kinderpornographie-Fällen vor Gericht verteidigt hat. "Es gibt aber keinen kommerziellen Markt." Entsprechende Behauptungen, etwa von Familienministerin Ursula von der Leyen, hält Vetter für "grobe Falschdarstellungen, mitunter bewusste Irreführungen."</p>
<p>Vertriebssysteme für die illegalen Aufnahmen würden bereits an einem effektiven Geld-Transfer-System scheitern. "Man kann nicht anonym online Millionenbeträge empfangen", sagt Vetter.</p>
</blockquote>
<ul>
<li><a href="http://www.whereiwrite.org/">Where I Write</a> - Fantasy & Science Fiction Autoren in ihren Schreibstuben</li>
<li><a href="http://www.sueddeutsche.de/wirtschaft/996/483443/text/">Guttenbergs »Gesetz zur Ergänzung des Kreditwesengesetzes« vollständig von britischer Großkanzlei Linklaters ausgearbeitet.</a> (<a href="http://blog.fefe.de/?ts=b483542d">via</a>)</li>
<li><a href="http://blogbar.de/archiv/2009/08/07/extreme-lobo-lumma-vodafailing-beim-dialog-mit-dem-netz">Vodafailing beim Dialog mit dem Netz</a></li>
<li><a href="http://www.heise.de/tp/blogs/8/143245">Westerwelle will sich neuen Sicherheitsgesetzen nicht verscließen</a>, wenn er mit der CDU koalieren würde. Ja, das war doch klar <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></li>
<li><a href="http://www.spiegel.de/politik/deutschland/0,1518,641353,00.html">OSZE schickt zum ersten Mal Wahlbeobachter nach Deutschland</a>, allerdings wohl nicht wegen der Ablehnung mehrerer Kleinparteien im Vorfeld der Bundestagswahl, <a href="http://www.tagesschau.de/inland/wahlbeobachter100.html">sondern vielmehr auf Einladung der Bundesregierung</a>. Sinn und Zweck sei es nach dem <a href="http://www.tagesschau.de/inland/wahlbeobachter100.html">Tagesschau-Artikel</a>, sich die Abläufe vor und während der Wahlen anzuschauen und Verbesserungsvorschläge zu erarbeiten.</li>
<li><a href="http://www.faz.net/s/Rub117C535CDF414415BB243B181B8B60AE/Doc~E0C74E70961274974B68A178C40C9A603~ATpl~Ecommon~Scontent.html?rss_aktuell">Wahlkampf: Nehmt uns endlich ernst!</a></li>
<li>Plakat: <a href="http://www.flickr.com/photos/splitbrain/3594737908/">»Bürgerrechtspartei?! Die Grünen nicht!«</a></li>
</ul>Links der letzten zwei Tage2009-08-07T23:46:00+02:002009-08-07T23:46:00+02:00Jan Beilicketag:jotbe.io,2009-08-07:/blog/2009/08/links-der-letzten-zwei-tage/<ul>
<li>ZEIT Online: <a href="http://www.zeit.de/2009/33/Sicherheitswahn">Staatliche Überwachung: Sicherheit total</a></li>
<li>Das Wahlbarometer zeigt es: <a href="http://wahl.xing.com/wahlbarometer">Die Piratenpartei ist nun eindeutig bei XING vertreten.</a> - Die entsprechende <a href="https://www.xing.com/net/piratenpartei/">XING-Gruppe</a> freut sich über Mitglieder.</li>
<li><a href="http://www.taz.de/1/leben/internet/artikel/1/nicht-alle-wissen-dass-wir-existieren/">Interview der taz mit Jens Seipenbusch</a>, dem Vorsitzenden der Piratenpartei</li>
<li>Berliner Morgenpost Video-Clip: <a href="http://www.morgenpost.de/videos/berlin/article1146556/Kaperfahrt_der_Piratenpartei_auf_der_Spree.html">Kaperfahrt der Piraten auf der Spree</a></li>
<li>Die fünf ausgewählten (fast fertigen) <a href="http://www.leyenhaft.de/piraten/wordpress/">Wahlplakate …</a></li></ul><ul>
<li>ZEIT Online: <a href="http://www.zeit.de/2009/33/Sicherheitswahn">Staatliche Überwachung: Sicherheit total</a></li>
<li>Das Wahlbarometer zeigt es: <a href="http://wahl.xing.com/wahlbarometer">Die Piratenpartei ist nun eindeutig bei XING vertreten.</a> - Die entsprechende <a href="https://www.xing.com/net/piratenpartei/">XING-Gruppe</a> freut sich über Mitglieder.</li>
<li><a href="http://www.taz.de/1/leben/internet/artikel/1/nicht-alle-wissen-dass-wir-existieren/">Interview der taz mit Jens Seipenbusch</a>, dem Vorsitzenden der Piratenpartei</li>
<li>Berliner Morgenpost Video-Clip: <a href="http://www.morgenpost.de/videos/berlin/article1146556/Kaperfahrt_der_Piratenpartei_auf_der_Spree.html">Kaperfahrt der Piraten auf der Spree</a></li>
<li>Die fünf ausgewählten (fast fertigen) <a href="http://www.leyenhaft.de/piraten/wordpress/">Wahlplakate der Piraten</a>.</li>
<li>Am 17.09.2009 ist: <a href="http://www.optoutday.de/">OptOutDay!</a> Mach mit beim Widerspruch an die Meldebehörden gegen die Datenweitergabe an Dritte.</li>
<li>Deutschlandradio Kultur: <a href="http://www.dradio.de/dkultur/sendungen/zeitreisen/1011713/">Hippie und Hightech -- Von der analogen zur digitalen Bohème</a></li>
<li>Video: <a href="http://www.tagesschau.de/multimedia/video/sendungsbeitrag4004_res-.html">Bericht über die Piratenpartei</a> im Nachtmagazin der ARD.</li>
<li>Lesenswerter <a href="http://blog.koehntopp.de/archives/2575-Jugendschutzfilter-saugen-und-dafuer-gibt-es-einen-Grund.html">Kommentar</a> zum <a href="http://www.heise.de/newsticker/Bundesregierung-sieht-grosse-Maengel-bei-Jugendschutz-Filtern--/meldung/143110">Artikel bei Heise</a> über die Bundesregierung, die große Mängel bei Jugendschutzfiltern sieht.</li>
<li><a href="http://www.heise.de/newsticker/Streitfall-Web-Sperren-entzweit-die-SPD--/meldung/143142">Streit über Web-Sperren entzweit die SPD</a></li>
<li><a href="http://www.alternet.org/story/106551/">Forget Red vs. Blue -- It’s the Educated vs. People Easily Fooled by Propaganda</a></li>
<li>Heute war es soweit: 07.08.09 12:34:56 Uhr <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></li>
<li><a href="http://www.heise.de/newsticker/Erste-Verfassungsbeschwerde-zu-E-Voting-in-Oesterreich-zurueckgewiesen--/meldung/143209">Erste Verfassungsbeschwerde zu E-Voting aus formalen Gründen in Österreich zurückgewiesen</a></li>
<li>Seite zu <a href="http://verdecktepreiserhoehungen.de/">verdeckten Preiserhöhungen</a></li>
<li>Die SPD hat tatsächlich eine <a href="http://www.heise.de/newsticker/SPD-Sprecherin-liebaeugelt-mit-Internetsperren-bei-Urheberrechtsverstoessen--/meldung/143208">filmpolitische Sprecherin, Angelika Krüger-Leißner, und die wünscht sich Internetsperren nach französischem Vorbild</a> -- die Jungen Liberalen hingegen wollen das Thema Piratenpartei laut einem geleakten Konzept am <a href="http://www.heise.de/newsticker/SPD-Sprecherin-liebaeugelt-mit-Internetsperren-bei-Urheberrechtsverstoessen--/meldung/143208">besten totschweigen</a>.</li>
<li><a href="http://www.wired.com/gadgetlab/2009/08/cydia-app-store">Rejected By Apple, iPhone Developers Go Underground</a></li>
<li>Sommerloch? Der Spiegel ist mal wieder von der ganz schnellen Sorte und berichtet aktuell über den <a href="http://www.spiegel.de/netzwelt/web/0,1518,641107,00.html">RFID-Passport-Hack eines Briten</a> - das kam mir irgendwie bekannt vor ... und tatsächlich - die allwissende Müllhalde vergisst nichts: Die <a href="http://www.dailymail.co.uk/news/article-440069/Safest-passport-fit-purpose.html">Geschichte</a> wurde bereits im März 2007 veröffentlicht. <strong>Update:</strong> Da war ich selbst etwas vorschnell: <a href="http://www.dailymail.co.uk/news/article-1204641/New-ID-cards-supposed-unforgeable--took-expert-12-minutes-clone-programme-false-data.html#">Dieser Artikel</a> über die ID-Card ist aktuell. Ist aber ungleich lustiger - da haben die Briten aus der Passport-Geschichte von 2007 nicht viel bis gar nichts gelernt.</li>
</ul>Review: Dokumentation »Meine Daten und Ich« (DVD)2009-07-26T19:16:00+02:002009-07-26T19:16:00+02:00Jan Beilicketag:jotbe.io,2009-07-26:/blog/2009/07/review-dokumentation-meine-daten-und-ich-dvd/<p>Heute Morgen lag ein DVD-Rezensionsexemplar einer in Deutschland gedrehten Datenschutz- und Überwachungsdokumentation in meinem Briefkasten - das ist dieser Metallkasten, der sonst nur Rechnungen und China-Restaurant-Flyer für mich sammelt. Gerne komme ich dem Wunsch des Absenders nach einem Review nach.</p>
<p><a href="http://www.meinedatenundich.de/"><img alt="Meine Daten und Ich (Cover)" src="https://blog.jotbe-fx.de/uploads/Meine_Daten_und_ich.png"></a></p>
<p><a href="http://www.meinedatenundich.de/">»Meine Daten und Ich - Wenn die Sicherheit die Bürgerrechte bedroht«</a> ist …</p><p>Heute Morgen lag ein DVD-Rezensionsexemplar einer in Deutschland gedrehten Datenschutz- und Überwachungsdokumentation in meinem Briefkasten - das ist dieser Metallkasten, der sonst nur Rechnungen und China-Restaurant-Flyer für mich sammelt. Gerne komme ich dem Wunsch des Absenders nach einem Review nach.</p>
<p><a href="http://www.meinedatenundich.de/"><img alt="Meine Daten und Ich (Cover)" src="https://blog.jotbe-fx.de/uploads/Meine_Daten_und_ich.png"></a></p>
<p><a href="http://www.meinedatenundich.de/">»Meine Daten und Ich - Wenn die Sicherheit die Bürgerrechte bedroht«</a> ist ein Film von Philipp Eichholtz und handelt von dem fiktiven Filmemacher Axel Ranisch, der gemeinsam mit seinem Kameramann Hardy und seiner Freundin Eva eine Dokumentation drehen will über Überwachungsgesetze, Datenschutz, Bürgerrechte und den gläsernen Bürger in Deutschland.</p>
<p>Während der Entstehung des Films wird Axel selbst unfreiwillig mit ein paar Datenschutz-Themen konfrontiert, die ihn stellenweise ganz gut aus der Fassung geraten lassen - sei es das Scoring-Verfahren, weil er einen Kredit braucht (Was ist ein Score?! Und wieso habe ich so wenig davon?!) oder der nette Herr von der Leistungsstelle der ArGe, der beim Antrag auf Hartz IV zuerst noch »ein paar Kleinigkeiten« von ihm wissen müsste, bevor über eine Zahlung entschieden werden könnte. Überflüssig zu erwähnen, dass es eben keine Kleinigkeiten sind, über die Axel Auskunft geben soll, möchte er keine Nachteile erfahren.</p>
<p>Der Film widmet sich dem ernsten Thema der Überwachung und der Aushöhlung des Datenschutzes und der Bürgerrechte in Deutschland auf eine unterhaltsame Art und Weise. Gezeigt werden anfangs unter anderem die Probleme des Filmemachers einen Kameramann für wenig Geld zu bekommen und seine Freundin, die ihn bei seinem »bescheuerten Vorhaben, diesen Film zu drehen und das noch von ihrem Geld«, bestimmt nicht unterstützen will. Nachdem man sich nach ein paar Minuten langsam fragt, ob nicht langsam genügend »Drumherum« erschaffen wurde, kommt der Film zügig zur Sache.</p>
<p>Gezeigt werden im Wechsel Ausschnitte aus dem Dokudreh mit Axel an verschiedenen Orten und Interviews mit einigen Politikern von CDU, SPD und FDP (sonstige Parteien sind mir nicht aufgefallen beim ersten Durchschauen). Bürgerrechtler, IT-Experten und Datenschutzbeauftragte stellen die zweite Gruppe der Interview-Teilnehmer.</p>
<p>Sie alle geben zu ein paar aktuellen Datenschutz- und Überwachungs-Themen Auskunft, wie beispielsweise zur Vorratsdatenspeicherung, Online-Durchsuchung, den Datenschutzaffären bei LIDL und der Telekom sowie zu Scoring und der anfangs beschriebenen Beantragung von ALG II. Aufgelockert wird das Ganze durch kurze amüsante Zeichentrickfilme, die beispielsweise ein Büro des Bundesinnenministerium zeigen, und jemand die Antwort von Briefen vorliest, die Axel an Wolfang Schäuble geschrieben hat.</p>
<p>Der Film ist gut geeignet, die Positionen der Befürworter und Gegner der genannten Punkte zu vermitteln. Im Rahmen dieser Rezension möchte ich jedoch nicht wertend auf die einzelnen Aussagen eingehen. Darüber hinaus gibt beispielsweise der Bundesdatenschutzbeauftragte Peter Schaar nützliche Informationen, wie man sich in Hinblick auf die informationelle Selbstbestimmung gegenüber Behörden verhalten sollte - auch wenn es manchmal unbequem sei.</p>
<p>Ergänzt wird die Dokumentation durch Bonusmaterial in Form von ausführlicheren Aussagen der Interview-Teilnehmer zu den einzelnen Themen und unterhaltsamen Audiokommentaren von padeluun und Réna Tangens vom Foebud e.V., die darin auch auf im Film nicht behandelte Themen eingehen.</p>
<p>Leider werden viele andere wichtige verwandte Themen nicht oder nur marginal angeschnitten, was in Anbetracht der Laufzeit von 79 Minuten verständlich ist - man hätte getrost zwei Stunden füllen können. Da wünsche ich mir einen zweiten Teil. Material für weitere Folgen gibt es ja genug.</p>
<p>Alles in allem ein sehr empfehlenswerter und unterhaltsamer Film, der den Zuschauer nachdenklich zurücklässt und aufzeigt, dass man etwas tun muss, will man noch etwas Freiheit, Privatheit, Datenschutz und informationelle Selbstbestimmung bewahren.</p>
<p>Der Film endet mit: »Wehrt euch! Interessiert euch! Passt auf eure Daten auf!« - dem füge ich noch hinzu: »Schaut euch diesen Film an!«</p>
<p>Die DVD »Meine Daten und Ich« ist seit dem 24. Juli für humane 9,90 Euro <a href="http://www.gmfilms.de/shop/product_info.php?products_id=102">direkt beim Anbieter GMfilms zu beziehen</a>. <a href="http://www.meinedatenundich.de/trailer/trailer.html">Zwei Trailer findet man auf der Website zum Film.</a></p>Interview in Wired: iPhone 3GS Verschlüsselung nicht so doll2009-07-24T19:20:00+02:002009-07-24T19:20:00+02:00Jan Beilicketag:jotbe.io,2009-07-24:/blog/2009/07/interview-in-wired-iphone-3gs-verschlusselung-nicht-so-doll/<p><a href="http://www.wired.com/gadgetlab/2009/07/iphone-encryption">Entwickler hätten wohl noch nie eine so schlecht umgesetzte Verschlüsselung wie im iPhone 3GS gesehen (EN).</a> Als würde man die verschlüsselten Nachrichten direkt neben dem geheimen Schlüsselbund ablegen, sagte Jonathan Zdziarski, ein iPhone-Entwickler und Hacker. Ein Raw-Image des iPhone-Speichers könne innerhalb von 45 Minuten extrahiert werden, wenn man eines der …</p><p><a href="http://www.wired.com/gadgetlab/2009/07/iphone-encryption">Entwickler hätten wohl noch nie eine so schlecht umgesetzte Verschlüsselung wie im iPhone 3GS gesehen (EN).</a> Als würde man die verschlüsselten Nachrichten direkt neben dem geheimen Schlüsselbund ablegen, sagte Jonathan Zdziarski, ein iPhone-Entwickler und Hacker. Ein Raw-Image des iPhone-Speichers könne innerhalb von 45 Minuten extrahiert werden, wenn man eines der gängigen Jailbreak-Tools und im Anschluss SSH installieren würde. So könne man die Daten unverschlüsselt kopieren.</p>
<p>Darüber hinaus könne man die Fernlösch-Funktion durch Austauschen der SIM-Karte blockieren. Obwohl Programme durch Apple auf bösartigen Code geprüft würden, könne ein Entwickler mit Leichtigkeit eine Funktion implementieren, mit der beispielsweise die Kontaktliste ohne Kenntnis des Anwenders übers Netz verschickt würde.</p>
<p>Weitere Sicherheitsprobleme und Forensikansätze könnten durch die Screenshot-Funktion beim Drücken des Home-Buttons und mit dem Caching von Keyboard-Eingaben im Safari auftauchen. Zuletzt gäbe es noch den »Kill-Switch« von Apple, der <a href="http://www.heise.de/ct/Amazon-Chef-entschuldigt-sich-fuer-Loeschung-von-Kindle-E-Books--/news/meldung/142520">ähnlich wie bei Amazon’s Kindle</a> aus der Ferne benutzt werden könnte, um unerwünschte Inhalte von iPhones zu entfernen.</p>Keine IP-Adressenspeicherung mehr auf jotbe-fx.de2009-06-19T23:18:00+02:002009-06-19T23:18:00+02:00Jan Beilicketag:jotbe.io,2009-06-19:/blog/2009/06/keine-ip-adressenspeicherung-mehr-auf-jotbe-fxde/<p>Gestern Abend habe ich durch Zufall eine Möglichkeit gefunden, in meinem <a href="http://hosteurope.de">Host Europe</a> Webpack das Logging der IP-Adressen abzuschalten. Wer ebenfalls HE-Kunde ist und dieses Feature nutzen möchte, logge sich in KIS ein und setze den Haken bei <code>Logfiles > Einstellen des Logfiletypen > Anonymisiert</code>.</p>Mein erstes Fnordlicht (Update)2009-03-16T12:30:00+01:002009-03-16T12:30:00+01:00Jan Beilicketag:jotbe.io,2009-03-16:/blog/2009/03/mein-erstes-fnordlicht-update/<p>Ich bin letzten Sonntag im <a href="https://www.hamburg.ccc.de/">Chaos Café Ellerbrock</a> gewesen und habe mein erstes <a href="http://www.lochraster.org/fnordlicht/">Fnordlicht</a> gebastelt. ~~[Das Zwischenergebnis schaut schon recht nett aus, allerdings funktionieren ein paar LEDs noch nicht. Bin aber guter Dinge, dass ich das die Tage gefixt bekomme.]{style="text-decoration:line-through"}~~ Alle LEDs funktionieren jetzt. Ein Widerstand und …</p><p>Ich bin letzten Sonntag im <a href="https://www.hamburg.ccc.de/">Chaos Café Ellerbrock</a> gewesen und habe mein erstes <a href="http://www.lochraster.org/fnordlicht/">Fnordlicht</a> gebastelt. ~~[Das Zwischenergebnis schaut schon recht nett aus, allerdings funktionieren ein paar LEDs noch nicht. Bin aber guter Dinge, dass ich das die Tage gefixt bekomme.]{style="text-decoration:line-through"}~~ Alle LEDs funktionieren jetzt. Ein Widerstand und zwei LEDs waren zerschossen. <a href="http://www.23hq.com/jotbe/album/4082230">Schnappschüsse gibt es nebenan.</a></p>
<p>Hier ein kurzer Videoclip (aktualisierte Version):</p>
<p><embed src="https://blog.jotbe-fx.de/uploads/Fnordlicht/fnordlicht.m4v" width="320" height="260" autoplay="false" controller="true" loop="false" pluginspage="http://www.apple.com/quicktime/">
</embed></p>
<p>Fast hätte ich mir vor einiger Zeit eine <a href="http://www.consumer.philips.com/consumer/de/de/consumer/cc/_categoryid_LIVINGCOLORS_CA_DE_CONSUMER/">Philips LivingColors</a> Lampe gekauft ... Die schaut von außen zwar schicker aus, aber ... <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>Eindrücke vom 25C32009-01-01T00:58:00+01:002009-01-01T00:58:00+01:00Jan Beilicketag:jotbe.io,2009-01-01:/blog/2009/01/eindrucke-vom-25c3/<p><img alt="25c 3 Banner bcc 480x 129px" src="http://blog.jotbe-fx.de/uploads/2008-12-31_25c_3_banner_bcc_480x_129px.jpg"></p>
<p>Zwischen Weihnachten und Sylvester fand auch dieses Jahr wieder der <a href="http://events.ccc.de/congress/2008/">Chaos Communication Congress</a> in Berlin statt. Dieses Jahr wollte ich die Veranstaltung auf keinen Fall verpassen und fuhr daher wenigstens für einen Tag (25C3D3) nach Berlin.</p>
<p>Das Praktische an meiner neuen Heimat Hamburg ist ja, dass man ... am Hauptbahnhof in …</p><p><img alt="25c 3 Banner bcc 480x 129px" src="http://blog.jotbe-fx.de/uploads/2008-12-31_25c_3_banner_bcc_480x_129px.jpg"></p>
<p>Zwischen Weihnachten und Sylvester fand auch dieses Jahr wieder der <a href="http://events.ccc.de/congress/2008/">Chaos Communication Congress</a> in Berlin statt. Dieses Jahr wollte ich die Veranstaltung auf keinen Fall verpassen und fuhr daher wenigstens für einen Tag (25C3D3) nach Berlin.</p>
<p>Das Praktische an meiner neuen Heimat Hamburg ist ja, dass man ... am Hauptbahnhof in den Zug einsteigt und ... in 10 Minuten ... ohne dass man am Flughafen noch einchecken muss ... <a href="http://www.youtube.com/watch?v=f7TboWvVERU">ehm, nee da verwechsle ich gerade etwas</a> ... man ist halt nur 1h:45m mit dem ICE unterwegs - ganz ohne Flugzeug oder Transrapid.</p>
<p>Fast hätte ich die Fahrt noch verworfen, denn bereits nach meiner Rückkehr am Samstag nach Hamburg bekam ich über die üblichen Kanäle <a href="http://twitter.com/25C3/status/1081175825">zugezwitschert</a>, dass die <a href="http://events.ccc.de/2008/12/27/an-update-on-the-ticket-situation/">Dauertickets bereits restlos ausverkauft</a> seien und man die <a href="http://events.ccc.de/2008/12/27/no-space-left-on-device/">Vorträge über Streams lieber von Zuhause aus verfolgen möchte</a>, anstatt von draußen vor dem Gebäude - Letzten Endes ging aber alles glatt und ich bekam noch ein Tagesbändel ab.</p>
<p><a class="caption right" href="http://www.flickr.com/photos/bicyclemark/3148292501/"><img alt="" src="http://farm4.static.flickr.com/3125/3148292501_f592c5b121_m.jpg"><br>
[Bild von bicyclemark<br>
(CC 2.0 by-nc-sa)]{.cc}</a> Der Tag beim 25C3 war spitze. Einige nette Leute getroffen, interessante Vorträge genossen und witzige Basteleien der elekronischen Art beguckt. Mein <a href="http://www.consumer.philips.com/consumer/de/de/consumer/cc/_productid_CD6551B_38_DE_CONSUMER/Schnurlostelefon-mit-Anrufbeantworter+CD6551B-38">DECT-Telefon</a> hatte ich für das <a href="http://eventphone.de/">Eventphone</a> mal eingepackt aber dann doch nicht mehr ausprobiert.</p>
<p>Die Vortragsräume platzten aus allen Nähten - gegen Abend auch die Flure. Zum <a href="http://events.ccc.de/congress/2008/Fahrplan/events/3000.en.html">Botnetz-Hacking</a> kam ich leider ein paar Minuten zu spät, um noch einen Platz zu ergattern - die Türen waren geschlossen und nix ging mehr. Nett, aber etwas anstrengend zu verfolgen fand ich die Vorträge <a href="http://events.ccc.de/congress/2008/Fahrplan/events/2596.en.html">"SWF and the Malware Tragedy"</a>, sowie <a href="http://events.ccc.de/congress/2008/Fahrplan/events/3032.en.html">"Analyzing RFID Security"</a> - letzteren besonders aufgrund meines Blickwinkels von knapp 170° zur Leinwand <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>
<p>Durch nette Gespräche und Genießen der chilligen Atmosphäre in der Lounge mit sehr geilen Sounds von <a href="http://www.phonoelit.org/">Phonoelit</a> fand der Vortrag <a href="http://events.ccc.de/congress/2008/Fahrplan/events/2938.en.html">"Methods for Understanding Targeted Attacks with Office Documents"</a> von Bruce Dang leider ohne mich statt.</p>
<p><a class="caption left" href="http://www.23hq.com/jotbe/album/3751380"><img alt="" src="http://www.23hq.com/23666/3751386_da2d954bac4f79921ff2538ffe734436_mblog.jpg"><br>
Album bei 23</a> Zu den Vorträgen existieren größtenteils bereits <a href="http://events.ccc.de/congress/2008/wiki/Conference_Recordings#Official_Releases">offizielle Mitschnitte zum Herunterladen</a>, so dass man nichts verpasst. <a href="http://www.flickr.com/search/?q=25c3&m=tags&l=cc&ct=0">Hunderte Fotos</a> (ich verlinke mal nur auf Fotos, die unter einer Creative Commons Lizenz veröffentlicht wurden) und <a href="http://www.youtube.com/results?search_query=25c3">weitere Videos</a> (u.a. Laser-Harfen, Quadrocopter, Blinkenlights und Schwarmroboter in Aktion) sind auf den einschlägigen Web-Zwo-Null-Plattformen verfügbar, sowie im Events-Blog (<a href="http://events.ccc.de/2008/12/28/lots-of-great-photos-from-day-1-dont-forget-to-post-yours/">1</a>, <a href="http://events.ccc.de/2008/12/29/more-awesome-photos-from-day-2/">2</a>, <a href="http://events.ccc.de/2008/12/29/space-aliens-from-the-future-spotted-at-25c3/">3</a>).</p>
<p>Besonders erwähnenswert und unterhaltsam finde ich die kurzweiligen Video-Interviews von Markus Beckedahl (<a href="http://netzpolitik.org/">Netzpolitik.org</a>) mit:</p>
<ul>
<li><a class="caption right" href="http://www.flickr.com/photos/kap4001/3146656120/"><img alt="" src="http://farm4.static.flickr.com/3122/3146656120_cda90f4c4d_m.jpg"><br>
[Bild von kap4001<br>
(CC 2.0 by-nc)]{.cc}</a> monochrom, den Machern des Spiels "Sowjet-Unterzögersdorf"<ul>
<li><a href="http://netzpolitik.org/2008/netzpolitiktv-057-soviet-unterzoegersdorf-auf-dem-25c3/">Interview</a></li>
<li>25C3-Vortrag: <a href="http://events.ccc.de/congress/2008/Fahrplan/events/2773.en.html">Soviet Unterzoegersdorf - A Nation In Transit</a></li>
<li><a href="http://www.monochrom.at/">monochrom</a></li>
<li><a href="unterzoegersdorf.su/">"Sowjet-Unterzögersdorf"-Website</a></li>
</ul>
</li>
<li>einem Verkäufer und padeluun am FoeBuD-Stand<ul>
<li><a href="http://netzpolitik.org/2008/25c3-der-foebud-stand/">Interview</a></li>
<li><a href="http://www.foebud.org/">FoeBuD-Website</a></li>
</ul>
</li>
<li>Christian Heller (plomlompom) über seinen Vortrag zu "Post Privacy"<ul>
<li><a href="http://netzpolitik.org/2008/netzpolitiktv-058-christian-heller-ueber-post-privacy/">Interview</a></li>
<li>25C3-Vortrag: <a href="http://events.ccc.de/congress/2008/Fahrplan/events/2979.en.html">Embracing Post-Privacy - Optimism towards a future where there is "Nothing to hide"</a></li>
<li><a href="http://futur.plomlompom.de/">Website</a></li>
</ul>
</li>
<li>Frank Rosengart über den elektronischen Personalausweis<ul>
<li><a href="http://netzpolitik.org/2008/netzpolitiktv-056-frank-rosengart-ueber-den-epass/">Interview</a></li>
<li>25C3-Vortrag: <a href="http://events.ccc.de/congress/2008/Fahrplan/events/2895.en.html">Der elektronische Personalausweis - Endlich wird jeder zum "Trusted Citizen"</a></li>
</ul>
</li>
</ul>
<p><a class="caption right" href="http://www.flickr.com/photos/security4all/3147478772/"><img alt="" src="http://farm4.static.flickr.com/3080/3147478772_e178c58b80_m.jpg"><br>
[Bild von Security4all<br>
(CC 2.0 by-nc)]{.cc}</a> Sehr spaßig war auch die <a href="http://events.ccc.de/congress/2008/Fahrplan/events/2812.en.html">Fnord News Show</a>, präsentiert von <a href="http://blog.fefe.de">fefe</a> und <a href="http://frank.geekheim.de/">Frank Rieger</a>.</p>
<p>Weitere Eindrücke/Berichte findet man z.B. bei <a href="http://netzpolitik.org/tag/25c3/">Markus</a>, <a href="http://www.korrupt.biz/1082/25c3-sex-sowjets-und-schone-aussichten/">Korrupt</a>, <a href="http://www.uninformation.org/weblog/127">Ralle</a> und natürlich <a href="http://www.heise.de/suche/?q=25c3&search_submit=Suche&rm=search">Heise</a>.</p>
<p>Übrigens gewannen die Hardware-Hacker vom iPhone und der Wii gemeinsam als ‘WiiPhonies’ <a href="http://events.ccc.de/2008/12/30/ctf-and-the-winner-iswiiphonies/">haushoch den CTF-Wettbewerb</a> - sehr geil <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></p>
<p>Ach - gehackt wurde wohl auch: <a href="http://www.heise.de/newsticker/25C3-NPD-Webseiten-fest-in-Hackerhand--/meldung/121009">Unter anderem musste die NPD dran glauben ...</a></p>Du bist ...2008-12-13T17:24:00+01:002008-12-13T17:24:00+01:00Jan Beilicketag:jotbe.io,2008-12-13:/blog/2008/12/du-bist/<p><a href="http://www.moviepilot.de/weihnachts-test"><img alt="Zum Weihnachts-Test bei der Film-Community moviepilot" height="210" src="http://www.moviepilot.de/images/trophies/weihnachts-test/result_6_b.jpg" title="Zum Weihnachts-Test bei der Film-Community moviepilot" width="400"></a><a href="http://www.moviepilot.de/"><img alt="Zu moviepilot - Gute Filme für Kino, DVD & TV" height="40" src="http://www.moviepilot.de/images/trophies/weihnachts-test/result_moviepilot_b.png" title="Zu moviepilot - Gute Filme für Kino, DVD & TV" width="400"></a></p>
<p>[<a href="http://verfall.tumblr.com/post/63499986">via</a>]</p>Bahn.de Redesign und interessante Mouseovers2008-12-13T17:13:00+01:002008-12-13T17:13:00+01:00Jan Beilicketag:jotbe.io,2008-12-13:/blog/2008/12/bahnde-redesign-und-interessante-mouseovers/<p>Gerade mit Überraschung festgestellt, dass <a href="http://bahn.de">Bahn.de</a> einem Redesign unterzogen worden ist. Die Homepage wirkt aufgeräumter und konzentriert sich auf das Wesentliche. Die <a href="http://reiseauskunft.bahn.de/">Reiseaukunft</a> selbst hat sich bis auf leichte UI-Anpassungen nicht grundlegend verändert und die <a href="http://www.deutschebahn.com/">Website des Konzerns</a> ist noch auf dem alten Stand.</p>
<p>Was mir auffiel, war diese …</p><p>Gerade mit Überraschung festgestellt, dass <a href="http://bahn.de">Bahn.de</a> einem Redesign unterzogen worden ist. Die Homepage wirkt aufgeräumter und konzentriert sich auf das Wesentliche. Die <a href="http://reiseauskunft.bahn.de/">Reiseaukunft</a> selbst hat sich bis auf leichte UI-Anpassungen nicht grundlegend verändert und die <a href="http://www.deutschebahn.com/">Website des Konzerns</a> ist noch auf dem alten Stand.</p>
<p>Was mir auffiel, war diese witzige Geschichte mit dem Mouseover auf der Homepage:</p>
<p><object width="469" height="449"><param name="movie" value="http://blog.jotbe-fx.de/uploads/bahnde_mouseover_fail.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://blog.jotbe-fx.de/uploads/bahnde_mouseover_fail.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="469" height="449"></embed></object></p>
<p>Falls dieses interessante Navigationskonzept keine Absicht war, ~~was ich mir selbst bei der Bahn nicht vorstellen kann,~~ dann frage ich mich, wie es bis zum Relaunch überdauern konnte - es ist ja immerhin die Homepage.</p>
<p>Das erinnert mich übrigens prompt an diesen <a href="http://www.clipfish.de/video/5934/">Internet-Klassiker</a>. <img alt=":-D" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/laugh.png"></p>Stadtgespräch in Hamburg: Datenmissbrauch, -handel, -schutz2008-11-18T21:12:00+01:002008-11-18T21:12:00+01:00Jan Beilicketag:jotbe.io,2008-11-18:/blog/2008/11/stadtgesprach-in-hamburg-datenmissbrauch-handel-schutz/<p>Die GAL Hamburg veranstaltet am Freitag, den 21.11.2008 ab 19:00 Uhr ein Stadtgespräch zum Thema: „Datenmissbrauch, Datenhandel und Datenschutz - Wie können wir uns schützen?". Veranstaltungsort ist der Marmorsaal im Deutschen Schauspielhaus (Kirchenallee 39, Hamburg). Laut einem <a href="https://blog.jotbe-fx.de/uploads/20081118-fktat1qrcmcfy4dk97j73i47q6.jpg">Plakat</a> (eine Info über die teilnehmenden Gesprächsgäste <a href="http://www.gal-hamburg.de/cms/default/dok/258/258243.stadtgespraech_datenmissbrauch_datenhand.htm">gibt die Seite leider …</a></p><p>Die GAL Hamburg veranstaltet am Freitag, den 21.11.2008 ab 19:00 Uhr ein Stadtgespräch zum Thema: „Datenmissbrauch, Datenhandel und Datenschutz - Wie können wir uns schützen?". Veranstaltungsort ist der Marmorsaal im Deutschen Schauspielhaus (Kirchenallee 39, Hamburg). Laut einem <a href="https://blog.jotbe-fx.de/uploads/20081118-fktat1qrcmcfy4dk97j73i47q6.jpg">Plakat</a> (eine Info über die teilnehmenden Gesprächsgäste <a href="http://www.gal-hamburg.de/cms/default/dok/258/258243.stadtgespraech_datenmissbrauch_datenhand.htm">gibt die Seite leider nicht her</a>) nehmen Peter Schaar (Bundesdatenschutzbeauftragter), Dr. Till Steffen (Justizsenator HH) und Krista Sager (stellvertr. Vors. der Grünen-Bundestagsfraktion) an der Runde teil. </p>
<p>Das könnte recht interessant werden.</p>Offender-Friday2008-11-14T21:25:00+01:002008-11-14T21:25:00+01:00Jan Beilicketag:jotbe.io,2008-11-14:/blog/2008/11/offender-friday/<p>Den Vogel schoss heute die <a href="http://typo3.org">Typo3</a>-Association ab. Von denen erhielt ich heute Mittag eine Mail:</p>
<blockquote>
<p>``</p>
<p>This is an important security warning. You are receiving it because your email address is registered on the TYPO3.org website.</p>
<p>We have to inform you that an unauthorized person has gained administrative access …</p></blockquote><p>Den Vogel schoss heute die <a href="http://typo3.org">Typo3</a>-Association ab. Von denen erhielt ich heute Mittag eine Mail:</p>
<blockquote>
<p>``</p>
<p>This is an important security warning. You are receiving it because your email address is registered on the TYPO3.org website.</p>
<p>We have to inform you that an unauthorized person has gained administrative access to the TYPO3.org website. </p>
<p><strong>The offender had access to website user details including their passwords</strong>, and there have been reports of this data being used to access other websites. It also has to be expected that the data may have been disclosed to third parties.</p>
<p>The attacker has been identified, and the TYPO3 Association has started to take legal action on the issue.</p>
<p>Important!</p>
<p>IF YOU HAVE USED THE SAME PASSWORD ON ANY OTHER SITE, PLEASE CHANGE IT IMMEDIATELY!</p>
<p>[...]</p>
<p></code></p>
</blockquote>
<p>Ich habe schon recht viel mit Typo3 gemacht, bislang jedoch meist über die Backend-Oberfläche und habe weniger direkt auf DB-Ebene an Frontend-User-Tabellen rumgestricken müssen. Auch habe ich nicht bewusst auf eine "Passwort zusenden"-Funktion geachtet. Somit ist es vollkommen an mir vorbeigegangen, dass Typo3 die Passwörter der Frontend-Benutzer als Plaintext in die Tabelle <code>`fe_users`</code> schreibt. Ich dachte vorhin, das könne doch nicht angehen - und vermutlich einige andere Empfänger dieser Meldung auch.</p>
<p>Darüber wollte ich später meinen Senf zu bloggen und stellte fest, dass meine Seite ein schickes Baustellen-Symbol schmückte, mit dem Text "Diese Webpräsenz befindet sich noch im Aufbau." - alle meine Domains zeigten diese Seite an.</p>
<p>Eine Mail an den Support und ein paar Minuten später erhielt ich die Antwort in Form einer Benachrichtigung über die Sperrung meines htdocs-Verzeichnisses aufgrund von andauernder "Webserver-Auslastung durch Anfragen", zusammen mit zwei Zeilen aus einem Logfile - wobei ich nicht weiß, woher die Einträge genau stammten (Access- oder Error-Log ist nicht ersichtlich)</p>
<p>Die URLs deuteten auf die Kommentar bzw. Trackback-Funktion und ich sah mich veranlasst eingehende Trackbacks zu deaktivieren, ein paar IPs zu sperren und noch ein paar Dinge mehr.</p>
<p>Ein Blick in meine Statistik zeigte, dass zwischen 4:00 und 5:00 Uhr heute Morgen der Traffic merklich einbrach und ab 7:00 nahezu zum Erliegen kam. Aufgrund eines geschäftigen Arbeitstages ist mir das Problem mit der Seite erst gegen frühen Abend aufgefallen. Ab 19:00 Uhr wurden wieder Zugriffe gezählt.</p>
<p>Mittlerweile hat der Support das Verzeichnis wieder freigeschaltet und die Lage hat sich entspannt. Werde das mal etwas genauer untersuchen.</p>Der Willkür Tür und Tor geöffnet?2008-11-12T19:52:00+01:002008-11-12T19:52:00+01:00Jan Beilicketag:jotbe.io,2008-11-12:/blog/2008/11/der-willkur-tur-und-tor-geoffnet/<p>Die Große Koalition hat im Bundestag heute das umstrittene BKA-Gesetz (BKAG-E) inklusive der Online-Durchsuchung (aka "Bundestrojaner") beschlossen:</p>
<blockquote>
<p>[...] Das künftige Arsenal für das BKA umfasst Befugnisse für bundesweite Rasterfahndungen unter Einschluss von Datensammlungen "nicht-öffentlicher Stellen", die präventive Telekommunikationsüberwachung einschließlich Abhören der Internet-Telefonie sowie zum großen Späh- und Lauschangriff auf Wohnräume mit …</p></blockquote><p>Die Große Koalition hat im Bundestag heute das umstrittene BKA-Gesetz (BKAG-E) inklusive der Online-Durchsuchung (aka "Bundestrojaner") beschlossen:</p>
<blockquote>
<p>[...] Das künftige Arsenal für das BKA umfasst Befugnisse für bundesweite Rasterfahndungen unter Einschluss von Datensammlungen "nicht-öffentlicher Stellen", die präventive Telekommunikationsüberwachung einschließlich Abhören der Internet-Telefonie sowie zum großen Späh- und Lauschangriff auf Wohnräume mit winzigen Kameras und Wanzen. Die Ermittler dürfen zudem Verbindungs- und Standortdaten abfragen, Mobiltelefone mit dem IMSI-Catcher orten und Platzverweise erteilen. [...] - <a href="http://www.heise.de/newsticker/Bundestag-verabschiedet-BKA-Gesetz-mit-heimlichen-Online-Durchsuchungen--/meldung/118812">Heise online: Bundestag verabschiedet BKA-Gesetz mit heimlichen Online-Durchsuchungen</a></p>
</blockquote>
<p>Da kommt noch eine Menge Spaß auf uns zu. Einen ersten Eindruck der Auswirkungen von bedenkenswerten Sicherheitsgesetzen im Schatten von 09/11 erfährt zur Zeit beispielsweise der Journalist <a href="http://www.burks.de/burksblog/">Burhard Schröder</a>, der morgens beim Öffnen der Wohnungstür Besuch von der Berliner Polizei erhielt, die kurzerhand seinen Arbeitsrechner beschlagnahmte, scheinbar aufgrund eines auf seiner Website veröffentlichten Usenet-Zitats zum Thema Bombenbau von 1995(!):</p>
<blockquote>
<p>[...] Schröder [wies] immer wieder nach, wie die Debatte über "Anleitungen zum Bombenbau" von politisch interessierter Seite genutzt wurde, um Freiheiten im Internet und andernorts einzuschränken. Der inkriminierte Artikel – derzeit nicht mehr zugänglich - habe eindeutig in diesem Zusammenhang gestanden. "Er diente im besten Sinne der staatsbürgerlichen Aufklärung", sagt der betroffene Journalist. Auch handele es sich bei dem beanstandeten Text nicht um eine Anleitung zum Bau von Explosivstoffen, sondern um einen theoretischen Text. All das interessierte aber weder die Staatsanwaltschaft noch Richter Ebe Ebsen. [...] - <a href="http://www.heise.de/tp/r4/artikel/29/29121/1.html">Telepolis: Berliner Justiz lässt Bombe platzen</a></p>
</blockquote>
<p>Glücklicherweise hatte er wohl die wichtigsten Daten mit <a href="http://www.truecrypt.org/">TrueCrypt</a> und <a href="http://www.gpg4win.org/index-de.html">GnuPG</a> verschlüsselt - <a href="http://www.burks.de/burksblog/2008/11/12/wohnungsdurchsuchung-reloaded-2/">und die neuen natürlich auch wieder.</a></p>
<p>Burkhard Schröder ist interessanterweise (Mit-)Autor des vor Kurzem erschienenen lesenswerten Buchs <a href="http://www.dpunkt.de/buecher/2934.html">"Die Online-Durchsuchung - Rechtliche Grundlagen, Technik, Medienecho"</a>, das im <a href="http://www.dpunkt.de/buecher/2934.html">dpunkt.verlag</a> zu beziehen ist. [Ein Schelm, der Böses ...]{style="text-decoration: line-through;"} Bestimmt nur ein Zufall <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></p>
<p>Gegen den Bundestrojaner (oder vielleicht gar gegen das gesamte verabschiedete BKAG-E?) wird übrigens aller Voraussicht nach Klage beim Bundesverfassungsgericht eingereicht:</p>
<blockquote>
<p>[...] Politiker der Grünen wollen neben dem früheren Bundesinnenminister Gerhart Baum (FDP) und der Journalistin Bettina Winsemann alias <a href="http://www.twister-schreibt.de/">Twister</a>, die beide parallel bereits erfolgreich wegen der Regelung zu verdeckten Online-Durchsuchungen <a href="http://www.heise.de/newsticker/NRW-Landtag-verabschiedet-Verfassungsschutzgesetz--/meldung/82814" title="NRW-Landtag verabschiedet Verfassungsschutzgesetz">in Nordrhein-Westfalen</a> nach Karlsruhe gezogen waren, Verfassungsbeschwerde gegen das Gesetz einreichen. Die Humanistische Union kündigte an, das Vorhaben zu unterstützen und die Klageschrift für Winsemann auszuarbeiten. Die Bürgerrechtsvereinigung beklagte, dass es in Zukunft immer wieder vorkommen werde, "dass in die Computer völlig unverdächtiger Bürger eingebrochen wird". [...] - <a href="http://www.heise.de/newsticker/Bundestag-verabschiedet-BKA-Gesetz-mit-heimlichen-Online-Durchsuchungen--/meldung/118812">Heise online: Bundestag verabschiedet BKA-Gesetz mit heimlichen Online-Durchsuchungen</a></p>
</blockquote>
<p>Es bleibt demnach noch ein Funken Hoffnung ... und natürlich weiterhin <a href="http://www.truecrypt.org/">TrueCrypt</a>, <a href="http://www.gpg4win.org/index-de.html">GnuPG</a>, <a href="http://www.torproject.org/">Tor</a> und <a href="http://hp.kairaven.de/">Co</a>. zur Wahrung von Anonymität und Privatsphäre, sowie der <a href="http://www.heise.de/newsticker/Computerkriminelle-verwenden-immer-raffiniertere-Methoden--/meldung/118264">Rat von BKA-Präsident Zirke: "Am besten benutzen Sie zwei voneinander getrennte Betriebssysteme – eines fürs Online-Banking und ein anderes fürs Surfen"</a> - oder so.</p>
<p><a href="http://blog.kairaven.de/archives/1758-Der-Beschluss-des-BKA-Ermaechtigungsgesetzes.html">Mehr dazu auch im ravenhorst-Blog.</a></p>Wider die staatliche Fürsorge2008-11-08T14:57:00+01:002008-11-08T14:57:00+01:00Jan Beilicketag:jotbe.io,2008-11-08:/blog/2008/11/wider-die-staatliche-fursorge/<p>Normalerweise <a href="http://soup.jotbe-fx.de">soupe ich ja mittlerweile die alltäglichen Links und Netzfundstücke</a>, aber diesen lesenswerten Artikel in der <em>Zeit Online</em> möchte ich besonders erwähnen und lege ihn hier im Blog ab:</p>
<p><em><a href="http://www.zeit.de/online/2008/45/datenschutz-grundgesetz?page=all">DATENSCHUTZ - Wider die staatliche Fürsorge</a></em></p>Bundestrojaner: Konstruierte Eilbedürftigkeit der Technikfernen2008-11-08T14:15:00+01:002008-11-08T14:15:00+01:00Jan Beilicketag:jotbe.io,2008-11-08:/blog/2008/11/bundestrojaner-konstruierte-eilbedurftigkeit-der-technikfernen/<p>Was momentan an Äußerungen seitens der Innenpolitiker hinsichtlich des jüngst beschlossenen BKA-Gesetzes (BKAG-E) an die Öffentlichkeit dringt, ist wirklich faszinierend. Da lese ich gerade bei Heise den Artikel über die <a href="http://www.heise.de/newsticker/Polizeigewerkschaft-warnt-vor-Beschluss-des-BKA-Gesetzes--/meldung/118599">Warnung der Polizeigewerkschaft vor dem Beschluss des BKA-Gesetzes</a> und finde dort den Hinweis auf das im Netzpolitik-Blog verfügbare <a href="http://asset.netzpolitik.org/wp-upload/bka-kompromiss.pdf">PDF zum …</a></p><p>Was momentan an Äußerungen seitens der Innenpolitiker hinsichtlich des jüngst beschlossenen BKA-Gesetzes (BKAG-E) an die Öffentlichkeit dringt, ist wirklich faszinierend. Da lese ich gerade bei Heise den Artikel über die <a href="http://www.heise.de/newsticker/Polizeigewerkschaft-warnt-vor-Beschluss-des-BKA-Gesetzes--/meldung/118599">Warnung der Polizeigewerkschaft vor dem Beschluss des BKA-Gesetzes</a> und finde dort den Hinweis auf das im Netzpolitik-Blog verfügbare <a href="http://asset.netzpolitik.org/wp-upload/bka-kompromiss.pdf">PDF zum BKA-Kompromiss</a> von Hans-Peter Uhl und Dieter Wiefelspütz. Dort wurden ein paar Fälle konstruiert, die den Einsatz des Bundestrojaners mit Eilbedürftigkeit "mal eben" nötig machen sollen.</p>
<p>Sehr unterhaltsam - da bringt <code>$topVerdaechtigerMitKryptiertemSystem</code> den Laptop mitsamt Daten in die PC-Werkstatt zur Reparatur, und die Gelegenheit könnte man dann zum Aufspielen des Bundestrojaners nutzen. Und bei größeren Downloads, von denen man über eine bereits bestehende "Quellen-TKÜ" erfahren hat, soll es sich zwingend um Bombenbaupläne handeln, die den sofortigen Einsatz des Trojaners erfordern <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></p>Internet, Sweet Internet2008-10-31T20:36:00+01:002008-10-31T20:36:00+01:00Jan Beilicketag:jotbe.io,2008-10-31:/blog/2008/10/internet-sweet-internet/<p>So, seit gestern hab ich in meinem neuen Zuhause auch einen funktionsfähigen Internetzugang - hat erstaunlich unproblematisch geklappt. Nun hab ich einiges nachzuholen ... aber erst, nachdem die Wohnung einigermaßen komplett eingerichtet ist.</p>"Gestohlene Telekom-Daten": In 30 Durchgängen siebenfach überschrieben2008-10-14T18:16:00+02:002008-10-14T18:16:00+02:00Jan Beilicketag:jotbe.io,2008-10-14:/blog/2008/10/gestohlene-telekom-daten-in-30-durchgangen-siebenfach-uberschrieben/<blockquote>
<p>[...] Der später einbezogene Technikexperte der Datenschutzaufsichtsbehörde erläuterte gegenüber heise online, dass sich die Datenbank in dem in den Medien genannten Umfang auf dem Geschäftsrechner Huchs befunden habe und derzeit in knapp 30 Durchgängen siebenfach überschrieben werde. Danach sei davon auszugehen, dass die Informationen unter einem verhältnismäßigen Aufwand nicht mehr hergestellt …</p></blockquote><blockquote>
<p>[...] Der später einbezogene Technikexperte der Datenschutzaufsichtsbehörde erläuterte gegenüber heise online, dass sich die Datenbank in dem in den Medien genannten Umfang auf dem Geschäftsrechner Huchs befunden habe und derzeit in knapp 30 Durchgängen siebenfach überschrieben werde. Danach sei davon auszugehen, dass die Informationen unter einem verhältnismäßigen Aufwand nicht mehr hergestellt werden und als "verlässlich gelöscht" gelten könnten. [...]</p>
</blockquote>
<p>Nimmt eigentlich jemand ernsthaft an, dass die Daten nicht kopiert (und ggf. weitergegeben) worden sind? Der Heise-Artikel liest sich, als wäre durch das "sichere Löschen" jetzt alles wieder gut und die abhanden gekommenen Daten wieder eingefangen. Unglaublich.</p>
<p>Siehe dazu ausführlicher:</p>
<p>Telepolis: „<a href="http://www.heise.de/tp/r4/artikel/28/28898/1.html">Wenn "gestohlene Daten" gesichert werden...</a>" von Twister (Bettina Winsemann) </p>Umzug nach Hamburg geglückt2008-10-07T07:58:00+02:002008-10-07T07:58:00+02:00Jan Beilicketag:jotbe.io,2008-10-07:/blog/2008/10/umzug-nach-hamburg-gegluckt/<p>Der Umzug war zwar etwas stressig, wurde aber erfolgreich durchgeführt. Langsam lichtet sich auch das Chaos in der neuen Behausung, die ich in letzter Minute ergattert habe - netter Altbau, ruhig und dennoch zentral gelegen in Eimsbüttel, unweit der Osterstraße.</p>
<p>Internet gibt es bei mir leider noch nicht, offene WLANs sind …</p><p>Der Umzug war zwar etwas stressig, wurde aber erfolgreich durchgeführt. Langsam lichtet sich auch das Chaos in der neuen Behausung, die ich in letzter Minute ergattert habe - netter Altbau, ruhig und dennoch zentral gelegen in Eimsbüttel, unweit der Osterstraße.</p>
<p>Internet gibt es bei mir leider noch nicht, offene WLANs sind ebenfalls Mangelware - das Wetter lädt momentan eh nicht zum Outdoor-Surfen ein - und der UMTS-Anbieter scheint zu denken, man käme mit einer Antenne in Hamburg dicke hin. Demnächst gibt es hier allerdings wieder mehr zu lesen. Bestimmt.</p>"Digitaler Tsunami" - Wie die EU-Innenpolitiker in den nächsten 5 Jahren die Überwachungsunion vorantreiben wollen2008-09-11T10:52:00+02:002008-09-11T10:52:00+02:00Jan Beilicketag:jotbe.io,2008-09-11:/blog/2008/09/digitaler-tsunami-wie-die-eu-innenpolitiker-in-den-nachsten-5-jahren-die-uberwachungsunion-vorantreiben-wollen/<p>Passend zum Jahrestag der Anschläge auf das WTC veröffentlicht <a href="http://www.statewatch.org/">Statewatch</a> einen <a href="http://www.statewatch.org/analyses/the-shape-of-things-to-come.pdf">Bericht</a> über die 5-Jahres-Pläne der EU zum Ausbau der Überwachungsstrukturen und dem erweiterten Datenausstausch mit den USA. <a href="http://www.heise.de/ct/hintergrund/meldung/115759">Heise liefert einen lesenswerten Hintergrund-Bericht:</a></p>
<blockquote>
<p>Vorarbeiten für das künftige EU-Fünfjahresprogramm zur Innenpolitik wollen Sicherheitsbehörden uneingeschränkte Befugnisse zum Sammeln und Auswerten riesiger Datenmengen …</p></blockquote><p>Passend zum Jahrestag der Anschläge auf das WTC veröffentlicht <a href="http://www.statewatch.org/">Statewatch</a> einen <a href="http://www.statewatch.org/analyses/the-shape-of-things-to-come.pdf">Bericht</a> über die 5-Jahres-Pläne der EU zum Ausbau der Überwachungsstrukturen und dem erweiterten Datenausstausch mit den USA. <a href="http://www.heise.de/ct/hintergrund/meldung/115759">Heise liefert einen lesenswerten Hintergrund-Bericht:</a></p>
<blockquote>
<p>Vorarbeiten für das künftige EU-Fünfjahresprogramm zur Innenpolitik wollen Sicherheitsbehörden uneingeschränkte Befugnisse zum Sammeln und Auswerten riesiger Datenmengen aus dem täglichen Leben der Bürger geben, warnt die britische Organisation Statewatch. Die Bürgerrechtler haben sieben Jahre nach den Anschlägen am 11. September 2001 einen 60-seitigen <a href="http://www.statewatch.org/analyses/the-shape-of-things-to-come.pdf">Report</a> (PDF-Datei) unter dem Titel "The Shape of Things to Come" über die Tätigkeiten der "<a href="http://www.heise.de/newsticker/Schaeuble-stellt-Weichen-fuer-kuenftige-EU-Innenpolitik--/meldung/89999">Future Group</a>" zur künftigen Ausrichtung der Brüsseler Politik im Bereich innere Sicherheit veröffentlicht. Demnach sind nicht nur die nach den Terrorangriffen auf die USA rasch erlassenen "Ausnahmebefugnisse" zur Überwachung zur Norm geworden. Vielmehr gehe es nun darum, die durch die schier omnipräsente Datenverarbeitung und das Web 2.0 anfallenden personenbezogenen Informationen für Ermittler und Spione zu erschließen. </p>
<p>[...]</p>
<p>Für Tony Bunyan von Statewatch ist damit klar, dass mit dem Stockholmer Programm die EU endgültig in einen Überwachungsstaat verwandelt werden soll und sich in Richtung eines autoritären Staatengebildes bewegt.</p>
<p><cite><a href="http://www.heise.de/ct/hintergrund/meldung/115759" title="c't - 11.09.08 - Hintergrund - EU-Innenpolitiker rüsten sich für den "digitalen Tsunami"">Heise c’t - 11.09.08 - EU-Innenpolitiker rüsten sich für den "digitalen Tsunami"</a></cite></p>
</blockquote>Bitte recht freundlich2008-09-11T08:05:00+02:002008-09-11T08:05:00+02:00Jan Beilicketag:jotbe.io,2008-09-11:/blog/2008/09/bitte-recht-freundlich/<p><a href="http://skitch.com/jotbe/ii75/google-street-view-car-in-cologne" title="Anklicken zum Vergrößern (bei Skitch.com)"><img alt="Google Street View Fahrzeug" height="150" src="http://img.skitch.com/20080911-jr1hwg13rbwp6u1dtmm8h7b8wp.preview.png" width="200"></a>Kaum war ich heute Morgen aus der Haustür raus und wollte über die Bonner Straße, da schaute ich mit verschlafenem Blick direkt in die Linse eines <a href="http://www.heise.de/newsticker/Bundesdatenschuetzer-sieht-Googles-Street-View-sehr-kritisch--/meldung/112886">Google Street View Fahrzeugs</a>, das Richtung Autobahn-Zubringer fuhr. Vielen Dank auch. *arg*</p>
<p><a href="http://skitch.com/jotbe/ii75/google-street-view-car-in-cologne">Fotografierst du mich, fotografier ich dich.</a> - leider in schlechter Handyknipsen-Qualität.</p>
<p><a href="http://www.spiegel.de/netzwelt/web/0,1518,565099,00.html">Bessere Fotos …</a></p><p><a href="http://skitch.com/jotbe/ii75/google-street-view-car-in-cologne" title="Anklicken zum Vergrößern (bei Skitch.com)"><img alt="Google Street View Fahrzeug" height="150" src="http://img.skitch.com/20080911-jr1hwg13rbwp6u1dtmm8h7b8wp.preview.png" width="200"></a>Kaum war ich heute Morgen aus der Haustür raus und wollte über die Bonner Straße, da schaute ich mit verschlafenem Blick direkt in die Linse eines <a href="http://www.heise.de/newsticker/Bundesdatenschuetzer-sieht-Googles-Street-View-sehr-kritisch--/meldung/112886">Google Street View Fahrzeugs</a>, das Richtung Autobahn-Zubringer fuhr. Vielen Dank auch. *arg*</p>
<p><a href="http://skitch.com/jotbe/ii75/google-street-view-car-in-cologne">Fotografierst du mich, fotografier ich dich.</a> - leider in schlechter Handyknipsen-Qualität.</p>
<p><a href="http://www.spiegel.de/netzwelt/web/0,1518,565099,00.html">Bessere Fotos der Fahrzeuge und weitere Informationen bei SpOn.</a></p>
<p>Mal sehen, ob und wann mein hoffentlich geblurrtes Antlitz bei Street View erscheint.</p>Eingetroffen: Meine lebenslange Personenkennziffer2008-09-09T21:29:00+02:002008-09-09T21:29:00+02:00Jan Beilicketag:jotbe.io,2008-09-09:/blog/2008/09/eingetroffen-meine-lebenslange-personenkennziffer/<p>Heute befand sich meine lebenslange (Steuer-)Identifikationsnummer im Briefkasten - und morgen geht postwendend der <a href="http://www.humanistische-union.de/themen/datenschutz/steuer_id/detail/back/steuer-id/article/die-steuerid-im-briefkasten-so-koennen-sie-sich-wehren/">Protestbrief</a> raus. Mit freundlichen Grüßen.</p>Weiterhin auf Wohnungssuche in Hamburg2008-09-09T17:02:00+02:002008-09-09T17:02:00+02:00Jan Beilicketag:jotbe.io,2008-09-09:/blog/2008/09/weiterhin-auf-wohnungssuche-in-hamburg/<p>Falls sich jemand wundert, wieso es hier momentan so still ist ... Für die nächsten Tage ist weiter Daumendrücken bei der Wohnungssuche angesagt.</p>Schwerpunkt zum Datenmissbrauch2008-09-03T19:31:00+02:002008-09-03T19:31:00+02:00Jan Beilicketag:jotbe.io,2008-09-03:/blog/2008/09/schwerpunkt-zum-datenmissbrauch/<p>Der WDR hat in seinem Internet-Angebot einen <a href="http://www.wdr.de/themen/panorama/kriminalitaet10/datendiebstahl_cd/uebersicht.jhtml?rubrikenstyle=panorama">Themenschwerpunkt zu den aktuellen Fällen von Datenmissbrauch und illegalen Datenhandel</a> zur Verfügung gestellt. Auf den Seiten finden sich interessante Audio- und Video-Beiträge zum Thema.</p>Zentrales Melderegister Geschichte?2008-08-24T11:27:00+02:002008-08-24T11:27:00+02:00Jan Beilicketag:jotbe.io,2008-08-24:/blog/2008/08/zentrales-melderegister-geschichte/<blockquote>
<p>[...] Die Pläne von Innenminister Schäuble für ein zentrales Melderegister haben nach einem Bericht der "Neuen Osnabrücker Zeitung" (Samstag) kaum noch Chancen. Wie die Opposition lehnen auch Justizministerin Zypries und die SPD-Fraktion das Projekt ab, wie der innenpolitische Fraktionssprecher Dieter Wiefelspütz dem Blatt sagte. Vor dem Hintergrund der aktuellen Fälle von …</p></blockquote><blockquote>
<p>[...] Die Pläne von Innenminister Schäuble für ein zentrales Melderegister haben nach einem Bericht der "Neuen Osnabrücker Zeitung" (Samstag) kaum noch Chancen. Wie die Opposition lehnen auch Justizministerin Zypries und die SPD-Fraktion das Projekt ab, wie der innenpolitische Fraktionssprecher Dieter Wiefelspütz dem Blatt sagte. Vor dem Hintergrund der aktuellen Fälle von Datenmissbrauch solle "der Staat sich hüten, verzichtbare neue Datensammlungen anzulegen". – <a href="http://www.heise.de/newsticker/Glos-schlaegt-Datenhandel-Verbot-vor--/meldung/114697">Heise online</a> </p>
</blockquote>
<p>Das glaube ich erst, wenn es soweit ist. Es gibt noch genügend Gelegenheiten zum Umfallen.</p>Nach Massen-Datenklau folgt der Sturm im Wasserglas (3. Update)2008-08-19T21:00:00+02:002008-08-19T21:00:00+02:00Jan Beilicketag:jotbe.io,2008-08-19:/blog/2008/08/nach-massen-datenklau-folgt-der-sturm-im-wasserglas-3-update/<p>Fast könnte man sich mehr öffentlichkeitswirksamen <a href="http://www.heise.de/newsticker/Verbraucherzentrale-Massenhafter-Missbrauch-von-Bankkonten-Daten-2-Update--/meldung/114124" title="heise online - Verbraucherzentrale: Massenhafter Missbrauch von Bankkonten-Daten [2. Update]">Massendatenklau/-missbrauch</a> wünschen, denn plötzlich wird hektisch diskutiert und Forderungen der Datenschützer nach <a href="http://www.heise.de/newsticker/Bundesdatenschutzbeauftragter-fordert-Millionen-Strafen-bei-Missbrauch--/meldung/114349" title="heise online - Bundesdatenschutzbeauftragter fordert Millionen-Strafen bei Missbrauch">strengeren Datenschutzgesetzen</a> sowie Strafen werden laut. Der Datenschutz ist plötzlich nicht mehr <a href="http://www.heise.de/newsticker/CDU-Datenschutz-darf-nicht-zum-Taeterschutz-werden--/meldung/89476">"Täterschutz"</a> – die Fälle liefern hingegen genügend Diskussionsstoff und Gründe dafür, den Datenschutz nicht weiter zu belächeln und zu schwächen …</p><p>Fast könnte man sich mehr öffentlichkeitswirksamen <a href="http://www.heise.de/newsticker/Verbraucherzentrale-Massenhafter-Missbrauch-von-Bankkonten-Daten-2-Update--/meldung/114124" title="heise online - Verbraucherzentrale: Massenhafter Missbrauch von Bankkonten-Daten [2. Update]">Massendatenklau/-missbrauch</a> wünschen, denn plötzlich wird hektisch diskutiert und Forderungen der Datenschützer nach <a href="http://www.heise.de/newsticker/Bundesdatenschutzbeauftragter-fordert-Millionen-Strafen-bei-Missbrauch--/meldung/114349" title="heise online - Bundesdatenschutzbeauftragter fordert Millionen-Strafen bei Missbrauch">strengeren Datenschutzgesetzen</a> sowie Strafen werden laut. Der Datenschutz ist plötzlich nicht mehr <a href="http://www.heise.de/newsticker/CDU-Datenschutz-darf-nicht-zum-Taeterschutz-werden--/meldung/89476">"Täterschutz"</a> – die Fälle liefern hingegen genügend Diskussionsstoff und Gründe dafür, den Datenschutz nicht weiter zu belächeln und zu schwächen – das Problem/Risiko von gesammelten sensiblen/persönlichen Daten erreicht so zumindest vorübergehend die breitere Öffentlichkeit. </p>
<p>In diesem Fall schielt man übrigens auch auf die größten geplanten Datensammlungen, die man sich aktuell vorstellen kann - die <a href="http://www.heise.de/newsticker/Aussetzung-der-Vorratsdatenspeicherung-beantragt--/meldung/114396" title="heise online - Aussetzung der Vorratsdatenspeicherung beantragt">Vorratsdatenspeicherung</a> und die <a href="http://www.heise.de/newsticker/Skandal-um-illegalen-Datenhandel-beeinflusst-Meinungen-zur-elektronischen-Gesundheitskarte--/meldung/114456" title="heise online - Skandal um illegalen Datenhandel beeinflusst Meinungen zur elektronischen Gesundheitskarte">Datensammlung im Zuge der Einführung der elektronischen Gesundheitskarte</a>:</p>
<blockquote>
<p>[...] Bedenklich sei, dass "fast alle Daten auf externen Servern gepeichert" würden. Rubehn forderte alle Versicherten auf, ihren Widerstand gegen die Einführung der eGK zu manifestieren: "Wer seine Krankheitsdaten nicht in unsicheren EDV-Netzen gespeichert haben will, sollte sich genau überlegen, ob er seiner Krankenkasse sein Passfoto für die neue eGK zur Verfügung stellen will." [...]</p>
</blockquote>
<p>In der aktuellen c’t 18/2008 ist ein interessanter Hintergrundartikel zum Großprojekt "elektronische Gesundheitskarte" zu finden - mit etlichen amüsanten Stellen. Das kommt noch ganz dicke.</p>
<p>Derweil fordern übrigens ausgerechnet die Justiz- und Sicherheitspolitiker <a href="http://www.heise.de/newsticker/Datenklau-Auch-Zypries-plaediert-fuer-strengere-Datenschutzregeln--/meldung/114496" title="heise online - Datenklau: Auch Zypries plädiert für strengere Datenschutzregeln">Zypries</a> und <a href="http://www.heise.de/newsticker/Datenhandel-Skandal-Unionsvize-fordert-Verschaerfung-des-Datenschutzrechts--/meldung/114482" title="heise online - Datenhandel-Skandal: Unionsvize fordert Verschärfung des Datenschutzrechts">Bosbach</a> Verschärfungen im Datenschutzrecht - Faszinierend.</p>
<p>Wenn sich in ein paar Wochen die Wogen geglättet haben, wird sich zeigen, ob und was daraus gelernt wurde.</p>
<p><strong>Update I:</strong> Hier ein <a href="http://www.spiegel.de/wirtschaft/0,1518,573094,00.html" title="Datenschutz: Wie ein Mini-Callcenter Kundendaten der Telekom missbrauchte - Wirtschaft - SPIEGEL ONLINE - Nachrichten">SpOn-Artikel über den Adresshandel mit Daten der Telekom in Bremerhaven</a>:</p>
<blockquote>
<p>[...] Die Quelle sei die Datenbank der Telekom, behauptet K.: "Mitarbeiter der Telekom haben ihm Zugang zu den Datenbanken verschafft. Das hat mir B. selbst gesagt." Mit den Adressen sei Schwung ins Geschäft gekommen, berichtet K. "Dann war der Job relativ leicht." In den Telekom-Datenbanken sind immerhin 30 Millionen Kunden erfasst. Laut K. stellte der Konzern die von dem Callcenter in Bremerhaven geänderten Verträge anstandslos um - obwohl manche Kunden offenbar überhaupt nichts mit der neuen superschnellen Internetverbindung anfangen können. [...]</p>
</blockquote>
<p>Die Telekom hingegen sieht sich als eine Art Opfer:</p>
<blockquote>
<p>[...] Ein Sprecher der Telekom nennt den Bremerhavener Datenschutz-Missbrauch einen Einzelfall: "Gegen die kriminelle Energie Einzelner haben wir keine Chance." Der Konzern ist um Schadensbegrenzung bemüht und verweist auf seine internen Sicherheitssysteme. [...]</p>
</blockquote>
<p>Diese Systeme scheinen ja spitze funktioniert zu haben.</p>
<p>Derweil <a href="http://www.heise.de/newsticker/Datenschuetzer-sieht-alle-Bundesbuerger-vom-illegalen-Datenhandel-betroffen--/meldung/114507" title="heise online - Datenschützer sieht alle Bundesbürger vom illegalen Datenhandel betroffen">sprechen Datenschützer davon, dass vor allem zu Marketingzwecken die Daten nahezu aller Bürger im Umlauf wären</a> - zusätzlich 10-20 Millionen Kontodaten, die illegal bei Call-Centern und Handelsplattformen verfügbar wären. Das wundert mich nun nicht.</p>
<p><strong>Update II:</strong> Im Netzpolitik-Blog kann man sich einen <a href="http://netzpolitik.org/2008/reaktionen-auf-die-datenskandale-staatliche-datensammelei-verbieten/">kommentierten Querschnitt der Reaktionen auf den Datenmissbrauch</a> durchlesen.</p>
<p><strong>Update III:</strong> <a href="http://www.stern.de/blog/index.php?op=ViewArticle&articleId=1799&blogId=57">Sabine Leutheusser-Schnarrenberger mit einem lesenswerten Blog-Artikel beim Stern.</a></p>"Sich ans Web gewöhnen ist ein bisschen wie Sterben" ...2008-08-13T12:01:00+02:002008-08-13T12:01:00+02:00Jan Beilicketag:jotbe.io,2008-08-13:/blog/2008/08/sich-ans-web-gewohnen-ist-ein-bisschen-wie-sterben/<p>... <a href="http://www.spiegel.de/netzwelt/web/0,1518,569987,00.html">sagt David Weinberger in einem SpOn-Interview.</a> Sehr lesenswert.</p>
<blockquote>
<p>[...] <strong>Weinberger:</strong> Es gibt da eine Art logische Abfolge: Wenn man glaubt, dass Inhalte das sind, was das Web antreibt, und weiter annimmt, dass die Profis das am besten können, Inhalte produzieren - dann bekommt man ein Modell für das Internet, das dem alten …</p></blockquote><p>... <a href="http://www.spiegel.de/netzwelt/web/0,1518,569987,00.html">sagt David Weinberger in einem SpOn-Interview.</a> Sehr lesenswert.</p>
<blockquote>
<p>[...] <strong>Weinberger:</strong> Es gibt da eine Art logische Abfolge: Wenn man glaubt, dass Inhalte das sind, was das Web antreibt, und weiter annimmt, dass die Profis das am besten können, Inhalte produzieren - dann bekommt man ein Modell für das Internet, das dem alten Rundfunk-Schema entspricht. Das ist ein Fehler, aber kein völlig unverständlicher. Richtig ist aber, dass niemand jemals weiß, was mit dem Web passieren wird, also wird man immer zurückblicken und unglaublich fehlerhafte Prognosen finden können. [...]</p>
</blockquote>
<p>[<a href="http://www.lostfocus.de/archives/2008/08/13/das-web-hat-mein-leben-zerstoert/">via</a>]</p>Google, Yahoo und schon wieder Opt-Out (Update)2008-08-09T20:34:00+02:002008-08-09T20:34:00+02:00Jan Beilicketag:jotbe.io,2008-08-09:/blog/2008/08/google-yahoo-und-schon-wieder-opt-out-update/<p>Google <em>dealt</em> im Ad-Geschäft nicht nur <a href="http://www.googlewatchblog.de/2007/04/14/google-kauft-doubleclick/">mit DoubleClick</a>, sondern <a href="http://www.heise.de/newsticker/Yahoo-veroeffentlicht-Details-zur-Anzeigenkooperation-mit-Google--/meldung/114045">neuerdings auch mit Yahoo</a>. Nach Kenntnisnahme von dieser Zusammenarbeit eröffnete das US-Justizministerium ein formelles Kartellverfahren gegen Google und Yahoo. Beide Firmen würden etwa 80 Prozent des Suchmaschinenmarktes besitzen und hätten somit quasi ein Monopol in diesem Bereich.</p>
<p><a href="https://blog.jotbe-fx.de/articles/2063/Google-kombiniert-AdSense-und-DoubleClick-Cookies">Passend zu meinem letzten …</a></p><p>Google <em>dealt</em> im Ad-Geschäft nicht nur <a href="http://www.googlewatchblog.de/2007/04/14/google-kauft-doubleclick/">mit DoubleClick</a>, sondern <a href="http://www.heise.de/newsticker/Yahoo-veroeffentlicht-Details-zur-Anzeigenkooperation-mit-Google--/meldung/114045">neuerdings auch mit Yahoo</a>. Nach Kenntnisnahme von dieser Zusammenarbeit eröffnete das US-Justizministerium ein formelles Kartellverfahren gegen Google und Yahoo. Beide Firmen würden etwa 80 Prozent des Suchmaschinenmarktes besitzen und hätten somit quasi ein Monopol in diesem Bereich.</p>
<p><a href="https://blog.jotbe-fx.de/articles/2063/Google-kombiniert-AdSense-und-DoubleClick-Cookies">Passend zu meinem letzten Blogeintrag zum Thema Google und DoubleClick Opt-Out</a> wird <a href="http://www.ad-hoc-news.de/Aktie/12717574/News/18845916/YAHOO.html">berichtet</a>, dass Yahoo ebenfalls eine Opt-Out-Prozedur einführen will:</p>
<blockquote>
<p>Anne Toth, head of privacy and VP for policy, said, ‘Yahoo! understands the trust of our users is our greatest asset, so we strive to create the most trusted, compelling online experience.’</p>
<p>’Yahoo! strongly believes that consumers want choice when customizing their online experience and they have also demonstrated a strong preference for advertising that is more personally relevant to them,’ continued Toth. ‘However, we understand that there are some users who prefer not to receive customized advertising and this opt-out will offer them even greater choice.’ </p>
</blockquote>
<p>Die Opt-Out-Funktion, die zwangsweise ebenfalls wie die Google/DoubleClick-Methode Cookie-basiert ist, <a href="http://info.yahoo.com/privacy/us/yahoo/opt_out/targeting/details.html">kann man über diese Seite aufrufen</a> - Erheiternd fand ich den Hinweis direkt unter dem Button:</p>
<blockquote>
<p>If your status has not changed after selecting Opt-Out, your browser may be set to block Yahoo! Cookies. Please unblock Yahoo! Cookies and try again. </p>
</blockquote>
<p>Genau. Nicht. <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>
<p><strong>Kleines Update:</strong> Hier noch mehr <a href="http://networkadvertising.org/managing/opt_out.asp">Opt-Out-Möglichkeiten für Werbenetzwerke</a>. [<a href="http://rfc1437.de/collection/recent/">via</a>]</p>Zukünftiger Lebensmittelpunkt Hamburg2008-08-09T16:56:00+02:002008-08-09T16:56:00+02:00Jan Beilicketag:jotbe.io,2008-08-09:/blog/2008/08/zukunftiger-lebensmittelpunkt-hamburg/<p>Nach knapp zweieinhalb Jahren in Köln zieht es mich nun spätestens Ende September in die Hansestadt, wobei ich beruflich der <a href="http://mediaventures.de/">Holding</a> treu bleibe.</p>
<p>Momentan befinde ich mich auf Wohnungssuche (wünschenswert: 2Z, 50–70qm, Balkon, EBK) und freue mich über Wohngegend-Tipps und Wohnungsangebote im Umkreis um meine zukünftige Arbeitsstelle (direkt am …</p><p>Nach knapp zweieinhalb Jahren in Köln zieht es mich nun spätestens Ende September in die Hansestadt, wobei ich beruflich der <a href="http://mediaventures.de/">Holding</a> treu bleibe.</p>
<p>Momentan befinde ich mich auf Wohnungssuche (wünschenswert: 2Z, 50–70qm, Balkon, EBK) und freue mich über Wohngegend-Tipps und Wohnungsangebote im Umkreis um meine zukünftige Arbeitsstelle (direkt am <a href="http://de.wikipedia.org/wiki/Schanzenviertel">Schanzenviertel</a>) - Eimsbüttel und Eppendorf wurden mir bereits empfohlen. Barmbek soll auch ganz nett sein.</p>
<p>Leider kenne ich mich in Hamburg kein Stück aus. Eine der <a href="http://de.wikipedia.org/wiki/U-Bahn_Hamburg">U-Bahnen</a> sollte jedenfalls innerhalb von wenigen Fußminuten erreichbar sein. Im Schanzen- und Karolinenviertel selbst ist mir übrigens zuviel Trubel - soviel habe ich bereits rausgefunden bei den wenigen berufsbezogenen Kurztrips dorthin.</p>
<p>Auch wenn der Großteil meiner Leser eher aus dem Raum NRW zu kommen scheint, kann es wohl nicht schaden, mein Anliegen hier zu bloggen <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>Google kombiniert AdSense und DoubleClick-Cookies2008-08-08T22:27:00+02:002008-08-08T22:27:00+02:00Jan Beilicketag:jotbe.io,2008-08-08:/blog/2008/08/google-kombiniert-adsense-und-doubleclick-cookies/<p>Google <a href="http://www.heise.de/newsticker/Google-buendelt-AdSense-und-DoubleClick-Cookies--/meldung/114017">kombiniert</a> fortan in seinem "Google Content Network" die Cookies von AdSense und DoubleClick. Die Website-Betreiber, die am AdSense-Programm teilnehmen, müssen sich dabei um nichts kümmern.</p>
<p>Aus Datenschutzsicht ist diese Kombination ziemlich bedenklich, aber dieser Schritt war nach der <a href="http://googleblog.blogspot.com/2008/03/weve-officially-acquired-doubleclick.html">Übernahme von DoubleClick durch Google</a> nur eine Frage der Zeit.</p>
<p>Google …</p><p>Google <a href="http://www.heise.de/newsticker/Google-buendelt-AdSense-und-DoubleClick-Cookies--/meldung/114017">kombiniert</a> fortan in seinem "Google Content Network" die Cookies von AdSense und DoubleClick. Die Website-Betreiber, die am AdSense-Programm teilnehmen, müssen sich dabei um nichts kümmern.</p>
<p>Aus Datenschutzsicht ist diese Kombination ziemlich bedenklich, aber dieser Schritt war nach der <a href="http://googleblog.blogspot.com/2008/03/weve-officially-acquired-doubleclick.html">Übernahme von DoubleClick durch Google</a> nur eine Frage der Zeit.</p>
<p>Google bietet auf seiner Seite ein paar nützliche <a href="http://www.google.com/privacy_ads.html">Datenschutz-Informationen sowie eine Opt-Out-Methode</a> an, um keine neuen AdSense/Doubleclick-Cookies zu erhalten – wobei "gar kein Cookie" wohl etwas zu optimistisch ist, denn Google muss den Benutzer ja irgendwie identifizieren, damit er als "Opt-Out" behandelt werden kann.</p>
<p>Tatsächlich <a href="http://www.doubleclick.com/privacy/dart_adserving.aspx">wird man diesbezüglich bei DoubleClick selbst fündig</a> und erfährt hier unter anderem etwas über sog. "Opt-Out-Cookies".</p>
<p>Dieses Opt-Out-Cookie wird laut DoubleClick im Google Content Network (AdSense) verwendet, wobei die eindeutige Cookie-Identifikation durch eine "Opt-Out"-Markierung ersetzt wird. Somit wird sehr wohl ein Cookie abgelegt, das jedoch das eindeutige Tracking verhindern soll - Am Ende der DoubleClick-Seite findet man dann den Hinweis, dass die Opt-Out-Prozedur wiederholt werden muss, wenn man seine Cookies gelöscht hat - ansonsten wird wieder ein eindeutig identifizierbares Cookie hinterlegt.</p>
<p>Die Darstellung von Bannern, Pop-Ups usw. wird vom Opt-Out generell nicht beeinflusst.</p>
<p>DoubleClick abschließend:</p>
<blockquote>
<p>[...] PLEASE NOTE that opting out of the ad-serving cookie does not mean that you will stop seeing either pop up advertising or banner ads embedded in websites! You can control many pop ups by using free software available on the Internet or by disabling JavaScript on your browser. DoubleClick has no control over the use or frequency of pop-up ads employed by website publishers or software manufacturers.</p>
</blockquote>Today I learned that ...2008-08-03T13:00:00+02:002008-08-03T13:00:00+02:00Jan Beilicketag:jotbe.io,2008-08-03:/blog/2008/08/today-i-learned-that/<p><a href="http://abstrusegoose.com/41">Heute habe ich das hier gelernt</a> und darüber hinaus noch, dass <a href="http://soup.jotbe-fx.de">Soup</a> zeitweilig genauso schlecht erreichbar ist wie <a href="http://twitter.com">Twitter</a> - deswegen lege ich den Link vorerst hier ab.</p>Offiziell: US-Zoll darf Geräte und Datenträger durchsuchen (Update)2008-08-02T10:07:00+02:002008-08-02T10:07:00+02:00Jan Beilicketag:jotbe.io,2008-08-02:/blog/2008/08/offiziell-us-zoll-darf-gerate-und-datentrager-durchsuchen-update/<p>Wie Heise <a href="http://www.heise.de/newsticker/Bestaetigt-US-Zoll-darf-Laptops-durchsuchen--/meldung/113690">berichtet</a>, bestätigte das US-Heimatschutzministerium mittlerweile <a href="https://blog.jotbe-fx.de/permalink/Elektronische-Gadgets-putzen-vor-US-Einreise.html">die Meldung</a>, dass der US-Zoll MP3-Player, Notebooks, USB-Sticks und alle anderen elektronischen Geräte durchsuchen und ggf. befristet einbehalten darf. Die Daten dürfen sogar kopiert und an Dritte (Firmen in der Privatwirtschaft) weitergegeben werden, begründet durch eine etwaige verwendete Verschlüsselung, die die Behörden nicht …</p><p>Wie Heise <a href="http://www.heise.de/newsticker/Bestaetigt-US-Zoll-darf-Laptops-durchsuchen--/meldung/113690">berichtet</a>, bestätigte das US-Heimatschutzministerium mittlerweile <a href="https://blog.jotbe-fx.de/permalink/Elektronische-Gadgets-putzen-vor-US-Einreise.html">die Meldung</a>, dass der US-Zoll MP3-Player, Notebooks, USB-Sticks und alle anderen elektronischen Geräte durchsuchen und ggf. befristet einbehalten darf. Die Daten dürfen sogar kopiert und an Dritte (Firmen in der Privatwirtschaft) weitergegeben werden, begründet durch eine etwaige verwendete Verschlüsselung, die die Behörden nicht knacken könnten. </p>
<p>Alle Daten via VPN "mal eben" runter zu laden ist ein möglicher Ansatz, aber m.E. bei größeren Datenmengen und einer schmalen Internet-Anbindung eher nicht praktikabel.</p>
<p><strong>Kleines Update:</strong> CNET <a href="http://news.cnet.com/8301-13578_3-10004646-38.html">schreibt</a> ausführlicher darüber und hat auch einen <a href="http://news.cnet.com/8301-13578_3-9892897-38.html">"Sicherheitsleitfaden um den Laptop zollsicher zu machen"</a>.</p>Sommerloch2008-07-31T19:55:00+02:002008-07-31T19:55:00+02:00Jan Beilicketag:jotbe.io,2008-07-31:/blog/2008/07/sommerloch/<p>Nicht wundern. Bald gibt es wieder mehr zu lesen. Momentan ist bei mir quasi eine Nachrichten- bzw. Info-Diät angesagt. Sehr erholsam das Ganze. Und die Welt dreht sich tatsächlich weiter, wer hätte das gedacht. <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>Suppe/Eintopf 2.02008-07-17T11:17:00+02:002008-07-17T11:17:00+02:00Jan Beilicketag:jotbe.io,2008-07-17:/blog/2008/07/suppeeintopf-20/<p>Seit gestern Abend wird <a href="http://soup.jotbe-fx.de/">auch bei mir die Suppe bzw. der Eintopf 2.0</a> gereicht. Wenn ich damit nicht der <em>Early Adopter</em> bin, dann weiß ich auch nicht <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"> Naja ... Gut Ding und so. Angedacht ist jedenfalls, dass im Laufe der Zeit das Tagesallerlei dort abgelegt wird und hier vermehrt ausführlichere …</p><p>Seit gestern Abend wird <a href="http://soup.jotbe-fx.de/">auch bei mir die Suppe bzw. der Eintopf 2.0</a> gereicht. Wenn ich damit nicht der <em>Early Adopter</em> bin, dann weiß ich auch nicht <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"> Naja ... Gut Ding und so. Angedacht ist jedenfalls, dass im Laufe der Zeit das Tagesallerlei dort abgelegt wird und hier vermehrt ausführlichere Artikel veröffentlicht werden. Begonnen wird damit nach den nächsten Wochenrücklinks.</p>Why programmers should play Go2008-07-16T11:49:00+02:002008-07-16T11:49:00+02:00Jan Beilicketag:jotbe.io,2008-07-16:/blog/2008/07/why-programmers-should-play-go/<blockquote>
<p>Go is an ancient strategy game with simple rules and a profound degree of complexity.</p>
<p>Software development is the art of managing complexity using a limited number of rules, structures, and patterns.</p>
<p>Programmers should play Go.</p>
<p><cite><a href="http://railspikes.com/2008/7/14/why-programmers-should-play-go">Rail Spikes: Why programmers should play Go</a></cite></p>
</blockquote>
<p>[<a href="http://johl.soup.io/post/4006957/Why-programmers-should-play-Go">via</a>]</p>Alerts Sommerloch?2008-07-14T12:09:00+02:002008-07-14T12:09:00+02:00Jan Beilicketag:jotbe.io,2008-07-14:/blog/2008/07/alerts-sommerloch/<p>Ich mache mir ja etwas Sorgen, wenn sich sogar <a href="http://www.google.com/alerts">Google Alerts</a> im (vermeintlichen) Sommerloch befindet <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>
<p><img alt="" height="365" src="https://blog.jotbe-fx.de/uploads/galerts_mail.png" width="400"></p>Wochenrücklinks #92008-07-11T19:32:00+02:002008-07-11T19:32:00+02:00Jan Beilicketag:jotbe.io,2008-07-11:/blog/2008/07/wochenrucklinks-9/<ul>
<li>
<p>Umfrage: <a href="http://www.heise.de/newsticker/Viele-Deutsche-wuerden-lieber-zuhause-arbeiten--/meldung/110723">Viele Deutsche wünschen sich flexiblere Arbeitsbedingungen und zwei Drittel würden gerne öfter zuhause arbeiten.</a></p>
<blockquote>
<p>[...] [Bitkom-Präsident August-Wilhelm] Scheer wünscht sich, dass Mitarbeiter die Bereitschaft mitbrächten, auch jenseits fester Bürozeiten erreichbar zu sein.</p>
</blockquote>
<p>Prinzipiell stimme ich der "Heimarbeitsidee" zu, jedoch ist der Punkt mit der Erreichbarkeit außerhalb der Büro- bzw. Arbeitszeiten …</p></li></ul><ul>
<li>
<p>Umfrage: <a href="http://www.heise.de/newsticker/Viele-Deutsche-wuerden-lieber-zuhause-arbeiten--/meldung/110723">Viele Deutsche wünschen sich flexiblere Arbeitsbedingungen und zwei Drittel würden gerne öfter zuhause arbeiten.</a></p>
<blockquote>
<p>[...] [Bitkom-Präsident August-Wilhelm] Scheer wünscht sich, dass Mitarbeiter die Bereitschaft mitbrächten, auch jenseits fester Bürozeiten erreichbar zu sein.</p>
</blockquote>
<p>Prinzipiell stimme ich der "Heimarbeitsidee" zu, jedoch ist der Punkt mit der Erreichbarkeit außerhalb der Büro- bzw. Arbeitszeiten nur in Ausnahmefällen wünschenswert bzw. notwendig. Das kommt ansonsten einer Art Bereitschaftsdienst gleich und man kann dann erst recht nicht mehr <em>abschalten</em>. Darüber hinaus ist nicht jeder Mitarbeiter in der Lage, eigenverantwortlich und konsequent zuhause zu arbeiten ... wobei ... im Büro vielleicht auch nicht <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"> Mit entsprechenden Leistungsnachweisen sollten die Unternehmen den Versuch mit Heimarbeit ruhig wagen. Denke, da kommen je nach Tätigkeit <em>erstaunliche</em> Resultate raus, wenn man in Ruhe arbeiten kann.</p>
</li>
<li>
<p>Die <a href="http://www.fsf.org">Free Software Foundation</a> liefert die <a href="http://www.fsf.org/blogs/community/5-reasons-to-avoid-iphone-3g">fünf Top-Gründe, wieso man um das iPhone 3G einen Bogen machen</a> und stattdessen auf Alternativen wie beispielsweise <a href="http://www.openmoko.com/">Freerunner</a> zurückgreifen sollte</p>
</li>
<li>
<p>Pressemitteilung: <a href="https://www.datenschutzzentrum.de/presse/20080807-google-analytics.htm">Unabhängiges Landeszentrum für Datenschutz Schleswig-Holstein (ULD) prüft Google Analytics</a>, gibt <a href="https://www.datenschutzzentrum.de/tracking/schutz-vor-tracking.html">nützliche Tipps zum Verhindern der Benutzerverfolgung</a>. und <a href="http://www.datenschutzzentrum.de/presse/20080709-tracking-datenschutzkonform.html">fordert datenschutzkonforme Statistik- und Tracking-Mechanismen</a>. </p>
<blockquote>
<p>[...] Während ein Webseitenbetreiber nur „seine" Besucher sieht, hat Google Kenntnis aller Analytics-basierten Webseiten, die der Nutzer besucht hat. Google kann die so erlangten Nutzungsdaten für weitere eigene Auswertungen verwenden. Eine Zusammenführung mit Nutzungsdaten mit denen anderer Google-Dienste ist möglich und wird generell von Google bestätigt. Dadurch hat das Unternehmen die Möglichkeit, über Surfer im Internet detaillierte Nutzungs- und Interessenprofile zu erstellen und diese vor allem für Werbezwecke zu verwenden. All dies erfolgt regelmäßig ohne das Wissen der Betroffenen. Nur in wenigen Fällen wird von den Webseitenbetreibern überhaupt darauf hingewiesen, dass dieses Werkzeug im Einsatz ist und eine Übermittlung der Daten zu Google in den USA oder anderswo erfolgt. [...] – <cite><a href="https://www.datenschutzzentrum.de/presse/20080807-google-analytics.htm">Pressemitteilung des ULD</a></cite></p>
</blockquote>
</li>
<li>
<p>Lacher der Woche: Die britische Regierung hat einen <a href="http://news.bbc.co.uk/2/hi/technology/7484131.stm">Preis für die besten Ideen ausgelobt</a>, um den Datenwust über das Land und seine Bürger irgendwie zusammenzuführen und als Mash-ups zur Verfügung zu stellen: </p>
<blockquote>
<p>[...] To help inspire ideas the team behind the idea has put dozens of examples of innovative ways of reusing public information on its Taskforce wiki.</p>
<p>These include a website which maps crimes around the UK, the FixMyStreet website, which allows users to alert others to litter, vandalism and graffiti in their local environment, and the prototype RateMyPrison, which invites those who visit friends and families in jail to comment on the experience. [...]</p>
</blockquote>
</li>
<li>
<p>A List Apart: <a href="http://www.alistapart.com/articles/collaboratewithsubversion">Collaborate and Connect with Subversion</a></p>
</li>
<li><a href="http://www.heise.de/newsticker/T-Mobile-geht-gegen-Verkaeufer-von-vorregistrierten-SIM-Karten-vor--/meldung/110733">T-Mobile geht gegen Verkäufer von vorregistrierten SIM-Karten vor.</a> ...</li>
<li><a href="http://www.zeit.de/2008/28/Interv-White">ZEIT-Interview mit Chefvolkswirt der Bank für Internationalen Zahlungsausgleich (BIZ)</a> über das Ende des Wachstums und den Turbulenzen in der Weltwirtschaft</li>
<li><a href="http://www.heise.de/newsticker/Grossbritannien-Big-Brother-kostet-20-Milliarden-Pfund--/meldung/110581">20 Milliarden Pfund Kosten und 68 Millionen "Kollateralschaden"</a> für den Überwachungsstaat Großbritannien</li>
<li><a href="http://netzpolitik.org/2008/eu-ausschuss-abstimmungen-zum-telekom-paket/">Abstimmung über das EU-Telekom-Paket</a><br>
Medienlobby glücklicherweise zum größten Teil erfolglos</li>
<li><a href="http://blog.karppinen.fi/2008/07/apple-just-gave-out-my-apple-i.html">Apple gab wohl nach einer simplen Einzeiler-Mail-Anfrage (über eine komplett andere Mail-Adresse) Zugangsdaten an einen Dritten heraus</a> - wirklich unglaublich.</li>
<li><a href="http://www.zeit.de/video/player?videoID=2008070215c0b9">Video mit Markus Beckedahl</a> (<a href="http://netzpolitik.org/">Netzpolitik.org</a>) mit dem Grundgedanken, dass Daten in sozialen Netzwerken sowie die Vorratsdatenspeicherung ein "gefundenes Fressen" für Sicherheitsbehörden sind.</li>
<li>
<p>Sehr lesenswertes <a href="http://www.sueddeutsche.de/deutschland/artikel/234/175705/">sueddeutsche.de-Interview mit Günter Wallraff</a>: </p>
<blockquote>
<p><strong>sueddeutsche.de: </strong>Wie stehen Sie zur aktuellen Entwicklung um die Einschränkung der Grundrechte, Lausch- und Spähangriff, Vorratsdatenspeicherung?</p>
<p><strong>Wallraff: </strong>Erschreckend! Innenminister Wolfgang Schäuble ist nicht korrupt, sondern meint, aus inbrünstiger Überzeugung, dem Staatswesen zu dienen - aber während der Inquisition war der Klerus genauso überzeugt, er würde dem göttlichen Recht zum Durchbruch verhelfen.</p>
</blockquote>
</li>
</ul>Stoppt die eGK: Vordruck für Patientenverfügung zur Verfügung gestellt2008-07-11T11:56:00+02:002008-07-11T11:56:00+02:00Jan Beilicketag:jotbe.io,2008-07-11:/blog/2008/07/stoppt-die-egk-vordruck-fur-patientenverfugung-zur-verfugung-gestellt/<p>Auf der Protestaktionsseite <a href="http://www.stoppt-die-e-card.de/"><em>Stoppt die e-Card</em></a> gibt es mittlerweile auch eine <a href="http://www.stoppt-die-e-card.de/index.php?serendipity%5Bsubpage%5D=downloadmanager&thiscat=2&file=29">Vorlage für eine Patientenverfügung (PDF) gegen die elektronische Gesundheitskarte, insbesondere gegen die zentrale Datenspeicherung und die Abgabe eines Fotos</a>.</p>
<p>Übrigens scheinen die Krankenkassen <a href="http://www.heise.de/newsticker/Versicherungen-fehlen-Fotos-fuer-die-elektronische-Gesundheitskarte--/meldung/110499">Probleme beim Besorgen der Fotos zu haben</a>. Ehrlich gesagt, habe ich bislang von meiner Krankenkasse noch …</p><p>Auf der Protestaktionsseite <a href="http://www.stoppt-die-e-card.de/"><em>Stoppt die e-Card</em></a> gibt es mittlerweile auch eine <a href="http://www.stoppt-die-e-card.de/index.php?serendipity%5Bsubpage%5D=downloadmanager&thiscat=2&file=29">Vorlage für eine Patientenverfügung (PDF) gegen die elektronische Gesundheitskarte, insbesondere gegen die zentrale Datenspeicherung und die Abgabe eines Fotos</a>.</p>
<p>Übrigens scheinen die Krankenkassen <a href="http://www.heise.de/newsticker/Versicherungen-fehlen-Fotos-fuer-die-elektronische-Gesundheitskarte--/meldung/110499">Probleme beim Besorgen der Fotos zu haben</a>. Ehrlich gesagt, habe ich bislang von meiner Krankenkasse noch gar kein Schreiben dazu bekommen. Klassischer Fall von fehlerhafter Kommunikation? <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>Wochenrücklinks #82008-07-06T13:32:00+02:002008-07-06T13:32:00+02:00Jan Beilicketag:jotbe.io,2008-07-06:/blog/2008/07/wochenrucklinks-8/<ul>
<li>
<p>US-Gericht: <a href="http://www.heise.de/newsticker/Google-muss-YouTube-Logfiles-an-Viacom-herausgeben--/meldung/110384">Google muss <strong>komplette</strong> 12TB große YouTube-Log-Datenbank zwecks Verfolgung von Urheberrechtsverletzungen an Viacom übergeben.</a> Und DAS passiert mit unseren Daten, wenn sie erst einmal vorhanden sind. Könnte wetten, dass Viacom nun feuchte Träume bekommt und erstmal feines Data-Mining betreibt - aus den verschiedensten Motiven. Da werden noch einige Klagen folgen. <a href="http://www.theinquirer.de/2008/07/03/gericht_zwingt_youtube_zur_herausgabe_aller_nutzerdaten.html">Gefordert …</a></p></li></ul><ul>
<li>
<p>US-Gericht: <a href="http://www.heise.de/newsticker/Google-muss-YouTube-Logfiles-an-Viacom-herausgeben--/meldung/110384">Google muss <strong>komplette</strong> 12TB große YouTube-Log-Datenbank zwecks Verfolgung von Urheberrechtsverletzungen an Viacom übergeben.</a> Und DAS passiert mit unseren Daten, wenn sie erst einmal vorhanden sind. Könnte wetten, dass Viacom nun feuchte Träume bekommt und erstmal feines Data-Mining betreibt - aus den verschiedensten Motiven. Da werden noch einige Klagen folgen. <a href="http://www.theinquirer.de/2008/07/03/gericht_zwingt_youtube_zur_herausgabe_aller_nutzerdaten.html">Gefordert hatte Viacom übrigens noch mehr</a>:</p>
<blockquote>
<p>[...] nämlich YouTubes Quellcode, den Code zur Identifizierung wiederholter Uploads mit urheberrechtlich geschützten Inhalten, die Werbe-Datenbank <strong>sowie Kopien aller als "privat" gekennzeichneten Videos.</strong> Das bekommt Viacom nicht auch noch dazu - bis auf Daten darüber, wie oft und von wie vielen Personen jedes private Video gesehen wurde. [...]</p>
</blockquote>
<p><a href="http://arstechnica.com/news.ars/post/20080703-viacom-wont-get-googles-source-code-will-get-12tb-of-youtube-data.html">Wissenswerte Hintergrund-Infos bei ars technica</a></p>
</li>
<li>
<p><a href="http://www.heise.de/newsticker/Datenschuetzer-sorgen-sich-um-deutsche-YouTube-Nutzer--/meldung/110448">Datenschützer sorgen sich derweil um die deutschen YouTube-Nutzer</a> </p>
<blockquote>
<p>[...] Am Ende dürfe man vielleicht in ein Land nicht mehr einreisen, weil der eigene Name in irgendeinem Datensatz auftaucht. Dabei spielt es dann keine Rolle, ob man sich etwas hat zuschulden kommen lassen. "Wir beobachten derzeit einen regelrechten Wildwuchs, was den Umgang mit Daten angeht", sagt [Marit] Hansen. [...]</p>
</blockquote>
</li>
<li>
<p><a href="http://paulasmuth.de/?/blog/show/schuelerticket_rfid_2">Interessante Antworten zu den RFID-Chips in VRR-, VRS- und VGN-Kundenkarten.</a></p>
</li>
<li><a href="http://www.heise.de/tr/Die-To-Do-Liste-gehorcht-aufs-Wort--/artikel/109997">To-Do-Liste gehorcht aufs Wort</a><br>
Bedienung von Organisationshilfen mittels Sätzen. Schlicht ist besser, ist einfacher. Klicki-Bunti vs. Text. </li>
<li><a href="http://www.heise.de/newsticker/Axel-Springer-Verlag-stellt-komplett-auf-Apple-Rechner-um--/meldung/110435">Axel-Springer-Verlag stellt komplett auf Apple-Hardware um</a> und wird damit größter Apple-Nutzer in Europa.</li>
<li><a href="http://netzpolitik.org/2008/deutschland-datenschutzweltmeister/">Deutschland soll laut Wiefelspütz (SPD) Datenschutzweltmeister werden.</a> Humor hat er ja.</li>
<li><a href="http://www.spiegel.de/spiegel/0,1518,562961,00.html">US Secret Service kassiert estnischen Hacker auf dem Frankfurter Flughafen.</a> Passender <a href="http://blog.fefe.de/?ts=b69793e9">Kommentar</a> dazu.</li>
<li><a href="http://www.nzz.ch/nachrichten/zuerich/rassenregister_zigeunerkinder_1.770851.html">Italienischer Innenminister will Fingerabdrücke von allen Kindern in Zigeunerlagern nehmen</a> - um die Kinderrechte durchzusetzen. Klar. </li>
<li>Schwedische Bürger schickten wegen des umstrittenen Abhör-Gesetzes <a href="http://www.spiegel.de/netzwelt/web/0,1518,563171,00.html">eine Million Beschwerde-Mails an die Regierung</a></li>
<li>Verständlicherweise sind <a href="http://futurezone.orf.at/it/stories/289935/">Schwedens Nachbarländer etwas stinkig über die Abhörpläne</a> </li>
<li>Die Schweden zum zweiten: <a href="http://www.taz.de/1/politik/schwerpunkt-ueberwachung/artikel/1/ausgeforscht-bis-aufs-blut/">Sicherheitsbehörden sollen Einblick in die DNA-Daten der Bürger nehmen dürfen.</a> Seit 1975 wird jedem Kind bei Geburt eine Blutprobe entnommen und in einer staatlichen Biobank hinterlegt. Etliche Schweden beantragen momentan, die gespeicherte Blutprobe vernichten zu lassen.</li>
<li>
<p><a href="http://www.heise.de/newsticker/Innenministerium-Erster-erfolgreicher-Datenabgleich-von-DNA-Daten--/meldung/110293">Innenministerium "feiert" ersten erfolgreichen DNA-Datenabgleich mit den Niederlanden</a></p>
<blockquote>
<p>[...] In der Mitteilung zum Abschluss der Testphase beim DNA-Abgleich heißt es nun, dass auf deutscher Seite fast 600 "Treffer" mit niederländischen Datensätzen erzielt wurden, in umgekehrter Richtung sogar über 1000 "Treffer" mit deutschen Datensätzen. Ob damit 1000 Niederländer deutschen Straftaten zugeordnet werden können, ist indes nicht gesagt, denn noch müssen alle "Treffer" überprüft und bereinigt werden. [...]</p>
</blockquote>
</li>
<li>
<p><a href="http://www.heise.de/newsticker/Bayerischer-Landtag-setzt-den-Bayerntrojaner-frei--/meldung/110426">Online-Durchsuchung in Bayern beschlossen</a><br>
Die Landespolizei wird nicht nur kopieren, <strong>sondern auch verändern und löschen dürfen.</strong> War doch klar. Solide rechtsstaatliche Beweisführung und hohe Einsatzschwellen nach bayrischem Verständnis. So wird dem Missbrauch Tür und Tor geöffnet. <strong>Update:</strong> Natürlich sogar mit <a href="http://www.silicon.de/sicherheit/management/0,39039020,39193036,00/bundestrojaner+darf+in+bayern+uneingeschraenkt+schnueffeln.htm"><em>heimlichem Betreten der Wohnung</em></a> - sprich verdecktem Einbruch.</p>
</li>
<li><a href="http://www.zeit.de/online/2008/27/metropolis-vorab">Schlüsselszenen vom Filmklassiker <em>Metropolis</em> aufgetaucht</a></li>
<li><a href="http://www.spiegel.de/netzwelt/tech/0,1518,563109,00.html">Schlamperei bei der IT-Sicherheit großer Faktor bei Computereinbrüchen und Datendiebstählen</a></li>
<li>Video: <a href="http://www.zeit.de/video/player?videoID=20080701708818">Verfolgte Privatsphäre</a> </li>
<li><a href="http://www.guardian.co.uk/technology/2008/jun/17/surveillance.database">Surveillance: You can know too much</a> [<a href="http://craphound.com/?p=2081">via</a>]<br>
Der Artikel stellt die interessante Frage auf, ob es sinnvoll ist, den Heuhaufen der Überwachungsdaten noch weiter zu vergrößern - die Nadel fände man ja jetzt schon nicht.</li>
<li><a href="http://www.spiegel.de/netzwelt/web/0,1518,563637,00.html">So falsch rechnet Excel</a><br>
Witzige Sachen dabei - Mit der Genauigkeit durfte ich mich auch schon öfters herumschlagen. </li>
<li><a href="http://www.heise.de/newsticker/Promisurfen-im-US-Aussenministerium--/meldung/110464">Mitarbeiter-Hobby: Promisurfen im US-Außenministerium</a><br>
Mitarbeiter haben die Daten von 150 berühmten Amerikanern über 4100 mal durchstöbert, ergab ein Test zur Datensicherheit. Und das seien wohl nur die Fälle, die geprüft wurden. Normalerweise werde auf die Daten eines Passes nur einmal alle fünf Jahre zugegriffen, selten mehr. </li>
<li><a href="http://www.truecrypt.org/">Verschlüsselungssoftware TrueCrypt in Version 6.0 für Mac OS X, Linux und Windows XP/Vista verfügbar.</a><br>
Neue Funktionen: Unterstützung für versteckte Volumes unter OS X und Linux, <a href="http://www.truecrypt.org/docs/?s=hidden-operating-system">versteckte Betriebssysteme</a>, höhere Geschwindigkeit durch Mehrkern-Prozessor-Unterstützung, neues Volume-Format usw. (<a href="http://www.truecrypt.org/docs/?s=version-history">Packungsbeilage lesen</a>)</li>
<li>
<p><a href="http://www.heise.de/newsticker/EU-Staaten-streben-mehr-Datenaustausch-an--/meldung/110490">EU-Strafverfolger sollen noch mehr Daten untereinander austauschen</a> und generell auf mehr Daten zugreifen dürfen, unter anderem auf internationale Transaktionsdaten (Stichwort: <a href="http://de.wikipedia.org/wiki/SWIFT">SWIFT</a>).</p>
<blockquote>
<p>[...] Von bisher 49 Datentypen seien bisher sechs auf ihre Verfügbarkeit geprüft worden: DNA-Daten, Fingerabdrücke, Angaben zu Schusswaffen, Kraftfahrzeugdaten, Telefonnummern sowie Mindestangaben zur Identifizierung von Personen in Melderegistern. [...]</p>
</blockquote>
<p>Sind wir hier beim Datenschutz-Lotto mit 6 aus 49? Frage mich, was die 43 (sic!) anderen Datentypen sein sollen.</p>
</li>
<li>
<p><a href="http://netzpolitik.org/2008/grobkonzept-elektronischer-personalausweis-im-volltext/">Grobkonzept des neuen elektronischen Personalausweises (ePA) komplett verfügbar im Netzpolitik-Blog</a> und <a href="articles/1874/Biometrischer-Personalausweis-kommt-2009">nochmals</a> die <a href="http://blog.kairaven.de/archives/1329-Elektronische-Ausweise-und-Portale-fuer-den-kontrollierten-Portalbuerger.html">Hintergründe zum ePA im Ravenhorst-Blog</a></p>
</li>
<li>Ein Punkt, den ich nachträglich noch anfüge: <a href="http://blog.kairaven.de/archives/1595-1000000-Terroristen.html">Laut ACLU sind bald 1.000.000 Personen als Terrorverdächtige in der Beobachtungsliste des FBI gespeichert.</a> Ob das ein Grund zum Feiern ist, darf getrost bezweifelt werden.</li>
</ul>Temperaturregelung für Powerbook und MacBook (Pro)2008-07-02T19:29:00+02:002008-07-02T19:29:00+02:00Jan Beilicketag:jotbe.io,2008-07-02:/blog/2008/07/temperaturregelung-fur-powerbook-und-macbook-pro/<p>Bei den aktuelle Außentemperaturen jenseits der 30°C und gefühlten 46,35°C im Büro kommen auch Rechner gut ins Schwitzen. Bei einem eher zufälligen Blick mittels <a href="http://www.islayer.com/index.php?op=item&id=7">iStat Pro</a> auf die Temperaturmesswerte der Sensoren im Inneren meines Rechners und der haptischen Thermosensorik meiner Handflächen kam ich zu dem Schluss, dass …</p><p>Bei den aktuelle Außentemperaturen jenseits der 30°C und gefühlten 46,35°C im Büro kommen auch Rechner gut ins Schwitzen. Bei einem eher zufälligen Blick mittels <a href="http://www.islayer.com/index.php?op=item&id=7">iStat Pro</a> auf die Temperaturmesswerte der Sensoren im Inneren meines Rechners und der haptischen Thermosensorik meiner Handflächen kam ich zu dem Schluss, dass knapp 61°C CPU-Temperatur, 64°C Netzteiltemperatur, 45°C Festplattentemperatur und ein kaum anfassbares Alu-Gehäuse nicht gerade einer optimalen Temperierung entsprachen. Etwas mehr beunruhigt war ich, als iStat anzeigte, dass die Lüfter sich mit 0 rpm drehten, sprich gar nicht aktiv waren.</p>
<p>Generell ist davon auszugehen, dass beim Anschluss eines externen Monitors der Graphikprozessor (GPU) mehr belastet wird als ohne und demnach die Temperatur im Gehäuse (auch bei normaler CPU-Last) schneller und höher steigt. Das Alu-Gehäuse leitet recht zuverlässig den Großteil der Wärme ab, heizt sich dadurch aber auch so sehr auf, dass man Eier auf der Tastatur oder auf dem Boden des Rechners braten könnte.</p>
<p>Letzten Endes stellte sich raus, dass die Lüfter nicht defekt waren, sondern standardmäßig eine CPU-Temperaturschwelle von knapp 65°C erlaubt ist, bis sich die Lüfter einschalten. Diese Schwelle ist jedoch bei den momentanen Außentemperaturen nicht akzeptabel, also musste eine Möglichkeit her, die Temperaturschwellen anzugleichen oder zumindest die Umdrehungen der Lüfter nachzujustieren.</p>
<p>Hier zwei Tools, die zur Lüfterregelung verwendet werden können:</p>
<dl>
<dt><a href="http://www.andreafabrizi.it/?g4fancontrol:download">G4FanControl</a> für Powerbook G4/iBook G4</dt>
<dd>Hiermit können Temperaturschwellen per Schieberegler festgelegt werden, die optional auch beim nächsten Rechnerstart erhalten bleiben. Die <a href="http://www.macupdate.com/info.php/id/25043">Version 0.5 (mit GUI)</a> ist noch Freeware, aber auch das geringe Entgeld für die neueste Version ist gut angelegt, zudem erhält man direkt noch ein passendes Dashboard-Widget.</dd>
<dt><a href="http://homepage.mac.com/holtmann/eidac/software/page5/page5.html" title="smcFanControl">smcFanControl</a> für MacBook (Pro)</dt>
<dd>Hiermit kann man leider nur die Minimum-Umdrehungen der Lüfter justieren. Ein Einstellen der Ansprechtemperatur scheint nicht möglich zu sein.</dd>
</dl>Ausgehen genießen dank Rauchverbot2008-06-30T20:29:00+02:002008-06-30T20:29:00+02:00Jan Beilicketag:jotbe.io,2008-06-30:/blog/2008/06/ausgehen-geniessen-dank-rauchverbot/<p>Großartige Sache: <a href="http://www.ksta.de/html/artikel/1214566237851.shtml">Ab morgen darf auch in der kölschen Gastronomie nicht mehr ohne weiteres geraucht werden.</a> Ausnahme sind sogenannte "Raucherclubs".</p>
<p>Selbst mich nervte es in meiner aktiven Raucherzeit, wenn beispielsweise während des Essens in der Nähe geraucht wurde, aber man ist ja gar nicht so: <em>"Rauch dir ruhig eine - Ich …</em></p><p>Großartige Sache: <a href="http://www.ksta.de/html/artikel/1214566237851.shtml">Ab morgen darf auch in der kölschen Gastronomie nicht mehr ohne weiteres geraucht werden.</a> Ausnahme sind sogenannte "Raucherclubs".</p>
<p>Selbst mich nervte es in meiner aktiven Raucherzeit, wenn beispielsweise während des Essens in der Nähe geraucht wurde, aber man ist ja gar nicht so: <em>"Rauch dir ruhig eine - Ich hoffe, es stört dich nicht, wenn ich dabei weiter esse!"</em></p>
<p>Seitdem ich vor etwas mehr als anderthalb Jahren das Rauchen aufgegeben habe, meide ich möglichst Lokalitäten in denen geraucht wird. In der Vergangenheit lies es sich leider aus Gründen der sozialen Kontakte nicht immer vermeiden. Nach kurzem (meist abendlichen) Aufenthalt in gut gefüllten Bars und Restaurants fiel das Atmen schwerer, der Hals kratzte, die Augen brannten und die Schleimhäute setzten sich zu.</p>
<p>In Zukunft werde ich mich auch hin und wieder aufraffen und die neue rauchfreie Gastronomie genießen - dafür allerdings wohl vor dem Lokal durch eine Qualmwolke laufen. <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"></p>Wochenrücklinks #72008-06-29T15:08:00+02:002008-06-29T15:08:00+02:00Jan Beilicketag:jotbe.io,2008-06-29:/blog/2008/06/wochenrucklinks-7/<div>
- [Endlichmalpatriotismuszeigendürfen](http://feeds.feedburner.com/~r/NothingForUngood/~3/316674974/)
- [UK: Nette Frauen-Hinterteile gefilmt dank RIPE.](http://feeds.feedburner.com/~r/boingboing/iBag/~3/322027748/local-councils-in-th.html)
- [Weitere Firma setzt auf Ads mit Deep-Packet-Inspection](http://www.heise.de/newsticker/Neue-Ueberwachungsvorwuerfe-gegen-Online-Werbesystem-NebuAd--/meldung/109824)
- [Datenpanne bei Einwohnermeldeämtern (TV-Beitrag)](http://www.br-online.de/daserste …</div><div>
- [Endlichmalpatriotismuszeigendürfen](http://feeds.feedburner.com/~r/NothingForUngood/~3/316674974/)
- [UK: Nette Frauen-Hinterteile gefilmt dank RIPE.](http://feeds.feedburner.com/~r/boingboing/iBag/~3/322027748/local-councils-in-th.html)
- [Weitere Firma setzt auf Ads mit Deep-Packet-Inspection](http://www.heise.de/newsticker/Neue-Ueberwachungsvorwuerfe-gegen-Online-Werbesystem-NebuAd--/meldung/109824)
- [Datenpanne bei Einwohnermeldeämtern (TV-Beitrag)](http://www.br-online.de/daserste/report/archiv/2008/00481/)
Daten aus rund 200 Städten und Gemeinden über Jahre hinweg frei zugänglich im Netz. [Noch mehr Infos dazu.](http://www.heise.de/newsticker/Fernsehmagazin-Datenpanne-bei-Einwohnermeldeaemtern-Update--/meldung/109835) Gruselig.
- [Staatshampelmänner im Web](http://www.silicon.de/analysen/wochenrueckblick/0,39038972,39192709,00/staatshampelmaenner+im+web.htm)
Wochenrückblick bei silicon.de
- [Zahlungssperre in Hongkong](http://www.spiegel.de/wirtschaft/0,1518,560069,00.html)
- c’t-Hintergrund Gastkommentar von Joachim Jakobs, [privatsphaere.org](http://privatsphaere.org): [Mit höherem Sicherheitsniveau gegen Ausspitzelung wappnen](http://www.heise.de/ct/hintergrund/meldung/110048)
In dem Artikel geht der Autor auf aktuelle und potentielle zukünftige Datenschutz-Gaus ein und fordert einen grundlegenden Bewusstseinswandel in der Politik aber auch bei Anwendern und Unternehmen (Banken, IT-Firmen usw). Sehr lesenswert.
- [FBI will noch mehr Daten von EU-Bürgern](http://www.heise.de/newsticker/FBI-will-mehr-private-Daten-von-EU-Buergern--/meldung/110158)
> Die Europäische Union steht kurz vor dem Abschluss eines Abkommens mit den USA, das dem FBI künftig Einblick in die Internet- und Kreditkartennutzung und das Reiseverhalten von EU-Bürgern gewähren würde. \[...\]
- [WWWW-Rückblick](http://www.heise.de/newsticker/Was-war-Was-wird--/meldung/110156)
Wie immer uneingeschränkt empfehlenswert.
- [BKA-Gesetz soll zügig verabschiedet werden](http://www.heise.de/newsticker/CDU-CSU-will-BKA-Gesetz-zuegig-verabschieden--/meldung/110152)
Die hessische Frauen Union fordert darüber hinaus eine Erweiterung der Online-Durchsuchung zur Verfolgung von Kinder-Pornografie. Vermutlich wird es nicht die einzige Forderung bleiben. Da geht noch was.
- Bill Gates verabschiedet sich in erdrückende Wohltätigkeit - [ein Rückblick und Ausblick bei der ZEIT](http://www.zeit.de/2008/27/Methode-Gates?page=all)
- [Was ist eigentlich Scoring?](http://netzpolitik.org/2008/was-ist-eigentlich-scoring/)
- [Auszug aus dem Mitschnitt einer Rede von Bundeskanzlerin Merkel zum Beginn der Agenda 2020](http://mephane.blogspot.com/2008/06/auszug-aus-dem-mitschnitt-der.html), gehalten am 7. Oktober 2010 \[[via](http://www.fixmbr.de/sie-haben-menschenleben-auf-dem-gewissen/)\]
- [Wir optimieren Fußball!](http://blog.beetlebum.de/2008/06/11/wie-optimieren-fusball/) (Comic)
- [CDU treibt Bundesmelderegister voran](http://zenzizenzizenzic.de/archives/2008/06/27/einsparungen-von-uber-100-millionen-euro-dank-bundesmelderegister/) und [sieht keine Alternativen dazu](http://www.heise.de/newsticker/CDU-Innenpolitiker-Bundesmelderegister-ist-alternativlos--/meldung/110147). Reicht ja noch nicht mit der Datensammelei.
- Darüber hinaus wurde noch fix der [elektronische Einkommensnachweis (ELENA) beschlossen](http://www.heise.de/newsticker/Bundeskabinett-beschliesst-elektronischen-Einkommensnachweis-ELENA--/meldung/109990/). [Datenschützer Thilo Weichert vom ULD lässt kein gutes Haar daran.](http://www.heise.de/jobs/Datenschuetzer-kritisiert-ELENA--/news/meldung/109961)
- [Filmkritik zu *Doomsday*.](http://www.heise.de/tp/r4/artikel/28/28152/1.html) Ich muss doch tatsächlich mal wieder ins Kino.
- China bereitet sich weiter auf Olympia vor: [Activists Warned on Olympic Protests](http://www.nytimes.com/2008/06/26/world/asia/26china.html?_r=1&oref=slogin)
- [Geldströme unterwegs zwischen Arm und Reich](http://www.fixmbr.de/geldstroeme-unterwegs-zwischen-arm-und-reich/)
</div>Wochenrücklinks #62008-06-22T12:08:00+02:002008-06-22T12:08:00+02:00Jan Beilicketag:jotbe.io,2008-06-22:/blog/2008/06/wochenrucklinks-6/<ul>
<li><a href="http://www.zeit.de/news/artikel/2008/06/20/2555267.xml">BKA-Gesetz auf den Weg gebracht</a></li>
<li>"<a href="http://www.dradio.de/dlf/sendungen/interview_dlf/804387/">Ich sehe voraus, dass wir wieder nach Karlsruhe gehen müssen</a>" <a href="http://www.dradio.de/dlf/sendungen/interview_dlf/804387/"></a> <cite>(Gerhart Baum)</cite></li>
<li>Nochmals: <a href="http://www.bka-petition.de">Petition gegen das BKA-Gesetz unterzeichnen!</a></li>
<li><em><a href="http://archive.timesonline.co.uk/tol/archive/">The Times</a></em> <a href="http://archive.timesonline.co.uk/tol/archive/">stellt ihr Zeitungsarchiv von 1785–1985 online.</a> Für einige Zeit kostenfrei und das Angebot wird weiter ausgebaut. Vorbildlich. [<a href="http://blog.fefe.de/?ts=b6a865ab">via</a>]</li>
<li><a href="http://www.heise.de/newsticker/Hackerangriff-auf-Kaffeemaschine-moeglich--/meldung/109625">Kaffeemaschinen-Hack</a><br>
Hinsichtlich Computer-Chips in Geräten, die …</li></ul><ul>
<li><a href="http://www.zeit.de/news/artikel/2008/06/20/2555267.xml">BKA-Gesetz auf den Weg gebracht</a></li>
<li>"<a href="http://www.dradio.de/dlf/sendungen/interview_dlf/804387/">Ich sehe voraus, dass wir wieder nach Karlsruhe gehen müssen</a>" <a href="http://www.dradio.de/dlf/sendungen/interview_dlf/804387/"></a> <cite>(Gerhart Baum)</cite></li>
<li>Nochmals: <a href="http://www.bka-petition.de">Petition gegen das BKA-Gesetz unterzeichnen!</a></li>
<li><em><a href="http://archive.timesonline.co.uk/tol/archive/">The Times</a></em> <a href="http://archive.timesonline.co.uk/tol/archive/">stellt ihr Zeitungsarchiv von 1785–1985 online.</a> Für einige Zeit kostenfrei und das Angebot wird weiter ausgebaut. Vorbildlich. [<a href="http://blog.fefe.de/?ts=b6a865ab">via</a>]</li>
<li><a href="http://www.heise.de/newsticker/Hackerangriff-auf-Kaffeemaschine-moeglich--/meldung/109625">Kaffeemaschinen-Hack</a><br>
Hinsichtlich Computer-Chips in Geräten, die eher nicht mit dem Computer assoziiert werden, stehen uns noch witzige Zeiten bevor <img alt=":-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/smile.png"></li>
<li><a href="http://www.handelsblatt.com/News/printpage.aspx?_p=201197&_t=ftprint&_b=1444122">Telekom-Mitarbeiter zeigen sich selbst an</a></li>
<li><a href="http://blog.kairaven.de/archives/1580-STOPPA-Lex-Orwell-in-Schweden.html">Schwedisches Echelon (Swechelon)</a> beschlossene Sache: <a href="http://www.heise.de/newsticker/Schwedens-Parlament-stimmt-umfassendem-Lausch-Gesetz-zu--/meldung/109670">Schwedens Reichstag stellt den kompletten Kommunikationsverkehr ins Ausland unter staatliche Kontrolle.</a><br>
Davon betroffen: Der gesamte E-Mail-, SMS-, Internet-, Fax- und Telefonverkehr. <a href="http://www.zeit.de/online/2008/26/schweden-internet-ueberwachung?page=1">Na und?</a> *arg* </li>
<li><a href="http://www.heise.de/newsticker/Internetvermarkter-auf-der-Suche-nach-der-digitalen-Aura--/meldung/109671">Internetvermarkter suchen qualitätssteigernde Wege zum Werben</a> in Zeiten von PHORM, dem Google-DoubleClick-Deal und umfangreichen Möglichkeiten beim Data-Mining zur Profilerstellung von Rezipienten und potentiellen Konsumenten. </li>
<li><a href="http://immateriblog.de/?p=53">Der Unterausschuss <em>Neue Medien</em> des Deutschen Bundestages hatte für Donnerstag Blogger zu einem nicht-öffentlichen Expertengespräch eingeladen.</a><br>
Interessanter ist dieser <a href="http://www.mein-parteibuch.com/blog/2008/06/18/wenn-boecke-um-vorschlaege-zur-gartengestaltung-bitten/">passende Beitrag eines bekannten <em>Katzenbild-Blogs</em></a>. [<a href="http://blog.fefe.de/?ts=b6a78bd4">via</a>] </li>
<li><a href="http://www.heise.de/tp/blogs/6/109699">Warum die bösen Männer die tollen Frauen kriegen...</a></li>
<li><a href="http://www.heise.de/newsticker/Tatverdaechtiger-nach-groesstem-Massen-Gentest-verhaftet-Update--/meldung/109714">Größter Massengentest erfolglos: Tatverdächtiger durch klassische Ermittlungsarbeit gefasst.</a><br>
Das hat sich ja gelohnt. Dafür wurden auch nur von knapp 14.200 Männern DNA-Proben genommen - auf <em>freiwilliger</em> Basis <img alt=";-)" class="emoticon" src="https://blog.jotbe-fx.de/templates/jotbe_grunge/img/emoticons/wink.png"> Diese Proben würden nun umgehend vernichtet werden, so die Polizei. <a href="http://blog.fefe.de/?ts=b6a47e7e">Hier ein Kommentar dazu.</a></li>
<li>
<p>Thematisch passend wird von einem Human-Genetiker generell vor Online-Gentests <a href="http://www.heise.de/tr/Nicht-ausserhalb-des-Systems--/artikel/109176">gewarnt</a>:</p>
<blockquote>
<p>[...] Trotz aller Versicherungen der Betreiber, Datenschutz zu betreiben, besteht doch die Gefahr, dass da in irgendeiner unerfreulichen Weise Daten, zum Beispiel bei einem Versicherungsunternehmen, bei einem Arbeitgeber oder einem Pharmaunternehmen landen. Ich rate dringend von so einem Test ab. [...]</p>
</blockquote>
</li>
<li>
<p><a href="http://www.heise.de/newsticker/Stress-kann-toedlich-sein--/meldung/109790">Stress kann tödlich sein</a></p>
</li>
<li>Weiterhin bleibt der Mensch das größte Sicherheitsproblem in der IT: <a href="http://www.heise.de/tr/Es-hat-sich-viel-veraendert--/artikel/109713">Kevin Mitnick im Interview mit der Technology Review</a> </li>
<li><a href="http://www.spiegel.de/wissenschaft/natur/0,1518,560747,00.html">Einblicke in den größten Teilchenbeschleuniger der Welt</a>, den Large Hadron Collider (LHC), der im Laufe dieses Jahres in Genf den Betrieb aufnehmen soll</li>
<li><a href="http://jetzt.sueddeutsche.de/texte/anzeigen/437397">"Eine Fahne aus dem Fenster zu hängen, bedeutet immer etwas"</a> </li>
<li>Bahnt sich eine <a href="http://www.zeit.de/2008/26/Finanzkrise">neue Katastrophe am Finanzmarkt</a> durch <em><a href="http://de.wikipedia.org/wiki/Credit_Default_Swap">Credit Default Swaps</a></em> <a href="http://de.wikipedia.org/wiki/Credit_Default_Swap">(CDS)</a> an? </li>
</ul>