Kolumne Übersicht
On the significant benefits of Open Source as observed in other industries that the space sector does not benefit of – yet – and why
Observations and criticism of a European space industry veteran
Open Source software is defined as a subset of Free and Open Source Software (FOSS). The source code of software is shared so that it can be reviewed, altered and redistributed by any interested party. It is typically distributed under one of a set of commonly accepted, standardized permissive licenses. Open Source software does explicitly not contradict for-profit use: Commercial funding and use is driving the development of many Open Source projects. In past decades, the collaborative nature of Open Source has revolutionized many industries and created unprecedented levels of wealth and innovation. Businesses are intentionally, for their own gain, “open-sourcing” not only software but portions of their intellectual property. Practical experience and studies equally show that it enables improved quality and an overall boost in business. It reduces redundant developments and allows smaller entities to tackle bigger projects than they could otherwise. Ultimately, it allows for sustainable development of technologies. Although there is a space-related Open Source ecosystem, the space industry has yet not followed suit from a business point of view. Open Source is primarily understood as tool for outreach and a “money saver”. Space projects have certainly already benefited from the use of Open Source software as “consumers”, but usually not as significant contributors. While there have been repeated attempts to publicly fund efforts towards Open Source projects, those can only be summarized as inconsequent. Another important factor is the regulatory environment, predominantly export control. It remains uncertain and is widely considered “unsafe”, despite numerous efforts even by major organizations and government entities attempting to provide clarifications and guidelines. In reality, the “smallest common denominator”, i.e. the rules perceived as the most strict, are typically both misinterpreted and assumed to apply out of caution: US regulations, EAR and ITAR. A change of mental attitude and clarified, modernized international regulations would benefit the space sector drastically. Based on practical experience in other industries, a shift from a proprietary ecosystem to Open Source usually requires around two years, both in terms of migration and offsetting cost. The presented work is based on almost two decades of experience in the space sector, nearly one decade of which as a full-time self-employed scientist, developer, consultant and trainer in a broad spectrum of industries including but certainly not limited to the space sector. Despite ample experience with American companies and government entities, the presented point of view is inherently European.
PGP Key Transition (key9 => key10)
Biennial Key Swap
I have recently set up a new OpenPGP key ("key10") and will be transitioning away from my old one ("key9"). The old "key9" has NOT been compromised. The old "key9" expired on Friday, 2024-08-16. However, it was updated and it will continue to be valid until Tuesday, 2024-09-17. I hereby kindly request all future correspondence to come to the new "key10".
Statische Kacheln für interaktive Karten in statischen Webseiten
Wie man eigene Kacheln herstellt und als statischen Inhalt einbindet
Bibliotheken wie Leaflet haben es einfach gemacht, eigene interaktive Karten in Webseiten einzubinden. Aber woher kommen die Kacheln, auch als Tiles bezeichnet, welche die Grundlage dieser Karten bilden? Neben der direkten Einbindung von Kacheln des OpenStreetMap-Projektes oder diversen akademischen und kommerziellen Produkten kann man selbstverständlich auch seine eigenen Kacheln verwenden. Der typischerweise empfohlene, datenschutzkonforme Weg besteht im Aufsetzen eines Kachel-Servers. Es geht jedoch auch dem Paradigma statischer Webseiten folgend: Die Kacheln lokal rendern und als einfache Dateien auf den eigenen Webspace hochladen.
(Aktualisiert: )
Über die Software hinter dieser Kolumne
Ein offener Software-Test
Dieser (erste) Eintrag in meiner Kolumne, im Weiteren auch als Blog bezeichnet, demonstriert alle Fähigkeiten der verwendeten Software. Er dient gleichermaßen als offener, ständig erweiterter Software-Test für neue Fähigkeiten selbigen Systems. Im Einzelnen werden Absätze, Listen, verschiedene Links, Programm-Code und interaktive Abbildungen demonstriert. Anders als bei allen weiteren Artikeln werden Änderungen in diesem Artikel nicht im Erstellungsdatum kenntlich gemacht. (Die Zusammenfassung von Artikeln kann freie Markdown-Elemente enthalten wie zum Beispiel Links in die Wikipedia.)
'zugbruecke' 0.2 released
Calling into Windows DLLs under Linux, MacOS or BSD
Significantly improved 0.2 release of zugbruecke
, a ctypes
drop-in replacement for calling Windows DLLs from Unix-like systems and pleiszenburg.de open source project.
Compiling and Testing NUMBA from Source
On Ubuntu 22.04 LTS / Linux Mint 21
My recent journey into Numba has made me explore rarely used parts and edge-cases of the library. It inevitably made me discover bugs and inconsistencies. To the numba
developers' credit, they are reacting impressively fast and offer bug-fixes for you to test in dedicated branches. It is therefore absolutely worth supporting those efforts by testing their fixes against your use-cases. This raises a question: How does one test these? Or, in other words, how does one build numba
from source?
(Aktualisiert: )
Serverseitige E-Mail-Filter bei Hetzner, 2022-Edition
Über ein faktisch nicht dokumentiertes Feature
Wenn man bei Hetzner Webhosting-Kunde ist, beispielsweise mit "Level 1" oder "Level 4", erhält man nicht nur eine gewisse Anzahl an Mailboxen. Hetzner unterstützt auch serverseitige Filterung von E-Mails. Doch das Feature ist faktisch nicht dokumentiert und hat dem Anschein nach eine bewegte Geschichte.
Characterizing 'vectorized' and 'guvectorized' for different amounts of data and compiler targets
On Numba's JIT Vectorization Capabilities
The Python package Numba is a JIT compiler that translates a subset of Python and NumPy code into machine code. Among other features, it allows to generate NumPy ufuncs via numba.vectorize and generalized ufuncs via numba.guvectorize. The mentioned types of functions can be compiled for different targets, i.e. for CPU, both single- and multi-threaded (parallel), as well as for CUDA on Nvidia GPUs. I am analyzing the performance of a simple compiled demo workload across different sizes of input data and different compiler targets. TLDR: numba.vectorize
and numba.guvectorize
show near-identical scaling behavior. An array of size more than 10^3 is required to saturate 24 CPU cores. CUDA shows its strengths north of 10^4.
PGP Key Transition (key8 => key9)
Biennial Key Swap
I have recently set up a new OpenPGP key ("key9") and will be transitioning away from my old one ("key8"). The old "key8" has NOT been compromised. The old "key8" expired today, Wednesday, 2022-08-17. However, it was updated and it will continue to be valid until Friday, 2022-08-19. I hereby kindly request all future correspondence to come to the new "key9".
'bewegung' 0.0.7 released
A versatile video renderer
0.0.7 release of bewegung
, a versatile video renderer and pleiszenburg.de open source project. Improved documentation.
International Geomagnetic Reference Field vs. Python
On the proliferation of implementations - plus a new one
There are literally a ton of Python-implementations of the International Geomagnetic Reference Field (IGRF) out there. I just added a new one to the mix. Why?!?
'abgleich' 0.0.8 released
A ZFS synchronization and backup tool
0.0.8 release of abgleich
, a simple ZFS sync tool and pleiszenburg.de open source project. This version is a major rewrite of many of its core functionalities to allow better long-term maintenance and extension. The cleanup of snapshots has been improved and is now also possible on the source zpool. Besides, abgleich
now does not collide anymore with other ZFS backup tools.
'bewegung' 0.0.6 released
A versatile video renderer
0.0.6 release of bewegung
, a versatile video renderer and pleiszenburg.de open source project. Major overhaul of linear algebra functionality, better package structure and a test suite.
My NumFOCUS-proposal got accepted
Array types for scaling for poliastro
Reviewer remarks:
Well written proposal with clear goals and benefits. Likely that this project would not be accomplished without this funding. Integrating with other NumFOCUS projects is a plus.
(Aktualisiert: )
Turning Plugin Management into Actual Package Management
QGIS Enhancement Proposal 179
QGIS Python plugins can not explicitly depend on regular Python packages. Although QGIS Python plugins can depend on other QGIS Python plugins, introduced in QGIS 3.8, this mechanism is far away from mature. Code quality, design and maintainability of the entire current plugin management system within QGIS, based on a detailed analysis of version 3.12, are questionable at best. This document proposes (a) to re-implement the existing plugin management system with all of its features, (b) to clean up the cross-plugin dependency design and (c) to add support for both the conda
and the pip
Python package managers for managing QGIS Python plugins - effectively adding support for dependencies between QGIS Python plugins and regular Python packages. These proposed changes are fully backward compatible and do not introduce adverse performance characteristics.
This proposal does intentionally not address the question of "Python environments", i.e. virtual environments and conda environments.
Array types for scaling for poliastro
A NumFOCUS small development grants program proposal
At the moment, while excellent for individual computations, poliastro
does not scale well to many parallel and array-like computations - e.g. propagating many orbits or many transfer solutions - as required by a lot of contemporary research. This will introduce array types and related infrastructure into poliastro
.
'bewegung' 0.0.5 released
A versatile video renderer
0.0.5 release of bewegung
, a versatile video renderer and pleiszenburg.de open source project. Many small changes in the linear algebra functionality, among other additions.
Pure Python & Numpy openMP-style parallel for-loops!
POSIX shared memory and forks
I recently came across POSIX shared memory and thought like ... what can you do with this and numpy?
ZFS Snapshots mit 'Ablgleich'
Eine Live-Demo und Diskussion mit Christian Zengel (Vlogger Logic)
Ich war zu Gast bei Christian Zengels Vlogger Logic.
'bewegung' 0.0.4 released
A versatile video renderer
0.0.4 release of bewegung
, a versatile video renderer and pleiszenburg.de open source project. It is a pure bug-fix release.
'bewegung' 0.0.3 released
A versatile video renderer
0.0.3 release of bewegung
, a versatile video renderer and pleiszenburg.de open source project. The handling of SVGs has been improved.
'bewegung' 0.0.2 released
A versatile video renderer
Second release of bewegung
, a versatile video renderer and pleiszenburg.de open source project. Dependencies with regard to matplotlib
are handled in a more flexibel manner.
'bewegung' 0.0.1 released
A versatile video renderer
Initial release of bewegung
, a versatile video renderer and pleiszenburg.de open source project.
Asteroid Discovery 1980-2020
'A remake' (old idea, new rendering pipeline)
Nice little by-product of optimizing my animation pipeline: A "remake" of Scott Manley's famous Asteroid Discovery video from 2010, in my case all the way from 1980 to today, September 14 2020, in 1080p.
PGP Key Transition (key7 => key8)
Biennial Key Swap
I have recently set up a new OpenPGP key ("key8") and will be transitioning away from my old one ("key7"). The old "key7" originally expired on Sunday, 2020-08-16. However, it was updated and it will continue to be valid until Friday, 2020-10-16. I hereby kindly request all future correspondence to come to the new "key8".
'abgleich' 0.0.7 released
A ZFS synchronization and backup tool
0.0.7 release of abgleich
, a simple ZFS sync tool and pleiszenburg.de open source project. Yet another pure bug-fix release.
'abgleich' 0.0.5 released
A ZFS synchronization and backup tool
0.0.5 release of abgleich
, a simple ZFS sync tool and pleiszenburg.de open source project. The handling of the root dataset of the tree of synchronized datasets can be configured.
'abgleich' 0.0.6 released
A ZFS synchronization and backup tool
0.0.6 release of abgleich
, a simple ZFS sync tool and pleiszenburg.de open source project. It is a pure bug-fix release.
'abgleich' 0.0.4 released
A ZFS synchronization and backup tool
0.0.4 release of abgleich
, a simple ZFS sync tool and pleiszenburg.de open source project. The tools is now available in both German and English. It can furthermore easily be translated into additional languages.
Cross-platform Python with Wine and Jupyter
'wenv' and 'wenv-kernel'
I built and published two little tools, wenv and wenv-kernel. They allow to run Windows-versions of [C]Python on top of Wine on Linux, MacOS or BSD.
'abgleich' 0.0.3 released
A ZFS synchronization and backup tool
0.0.3 release of abgleich
, a simple ZFS sync tool and pleiszenburg.de open source project. The tool now features a wizard GUI and a couple of additional, useful configuration options.
'abgleich' 0.0.2 released
A ZFS synchronization and backup tool
0.0.2 release of abgleich
, a simple ZFS sync tool and pleiszenburg.de open source project. It now supports Python 3.8 and and offers a fully object oriented API.
Earthquakes 2010-2019
10 years of earthquakes visualized
I got inspired to visualize and animate 10 years of earthquakes in 3D and documented how the video was made, enabling its relatively easy reproduction.
'abgleich' 0.0.1 released
A ZFS synchronization and backup tool
Initial release of abgleich
, a simple ZFS sync tool and pleiszenburg.de open source project.
PGP Key Transition (key6 => key7)
Biennial Key Swap
I have recently set up a new OpenPGP key ("key7") and will be transitioning away from my old one ("key6"). The old key has NOT been compromised and will continue to be valid until Sunday, 2018-08-26. I hereby kindly request all future correspondence to come to the new one.
Windows DLLs unter Linux, MacOS oder BSD nutzen
Pleiszenburg.de veröffentlicht quelloffenes Projekt 'zugbruecke'
zugbruecke ist ein experimentelles Python-Modul (gegenwärtiger Entwicklungsstatus 3/alpha). Es dient dazu, Routinen in Windows-DLLs aus Python-Code heraus aufzurufen, welcher auf Unix / Unix-ähnlichen Betriebssystemen wie Linux, MacOS oder BSD läuft. zugbruecke ist als hundertprozentiger Ersatz für ctypes aus Pythons Standardbibliothek ausgelegt. zugbruecke baut auf Wine auf. Ein eigenständiger Windows-Python-Interpreter, welcher mit Hilfe von Wine im Hintergrund automatisch startet, wird benutzt, um die aufgerufenen DLL-Routinen auszuführen. Die Kommunikation zwischen der Unix- und der Windows/Wine-Seite basiert auf Pythons eingebauter Fähigkeit für "multiprocessing connections" (Interprozesskommunikation zwischen Python-Interpretern). zugbruecke unterstützt Zeiger und struct-Typen - mit Einschränkungen. zugbruecke bietet umfassende Möglichkeiten zur Ausgabe von Statusnachrichten (Logs), welche es erlauben, Probleme mit sich selbst sowie mit Wine zu analysieren. zugbruecke wurde in Python-3-Syntax entwickelt und zielt primär auf die CPython-Implementierung von Python.
DWD eröffnet "Open Data"-Server
Änderung des Gesetzes über den Deutschen Wetterdienst tritt in Kraft
Mit dem Beschluss des "Gesetzes zur Änderung des Gesetzes über den Deutschen Wetterdienst" (DWD) durch Bundestag und Bundesrat, welches heute in Kraft tritt, werden viele vormals kostenpflichtige Messdaten und Produkte des DWD frei zugänglich.
(Aktualisiert: )
Newton wusste, dass er falsch lag
Schneller rechnen, Teil 1: Eine Wolke von Punktmassen
Dies ist der erste Text in einer geplanten Reihe zu effizienterem, schnellerem wissenschaftlichem Rechnen. Darin stelle ich eine einfache physikalische Berechnung vor, welche sich als wiederkehrendes Beispiel wie ein roter Faden durch weitere Texte dieser Reihe ziehen wird. Im Rahmen dieses Artikels wird die umzusetzende Modellphysik analysiert, auf dieser Analyse aufbauend eine erste Struktur für eine spätere Simulation vorgeschlagen und diese abschließend optimiert.
Python 3.5 und PyQt5
Aktualisierung meiner virtuellen Umgebung für F&E
Weiterführend zu meinem Artikel über den Aufbau einer kombinierten virtuellen Umgebung für Python und Node.js mit Benutzerrechten unter Linux erkläre ich in diesem Artikel, worin die wesentlichsten Unterschiede zum Aufbau einer aktuell(er)en Umgebung bestehen. Anstelle von CPython 3.4 kommt CPython 3.5 zum Einsatz. PqQt4 wird durch PyQt5 abgelöst, was den Bau der Umgebung wesentlich vereinfacht. Als Unterbau dient wie zuvor wieder openSUSE 13.1 Linux in seinen Varianten für 32-Bit- und 64-Bit-x86-Architekturen. Dieser Artikel richtet sich an fortgeschrittene Nutzer, die mit dem Umgang mit Linux und einer Kommandozeile vertraut sind.
Python & Node.js mit Benutzerrechten unter Linux
Aufbau einer kombinierten virtuellen Umgebung für F&E
In diesem Artikel demonstriere ich, wie man eine kombinierte virtuelle Python- und Node.js-Umgebung von Grund auf unter Linux ausschließlich mit Benutzerrechten installiert. Administrative Privilegien (root-Rechte) werden, wenn überhaupt, nur zur Installation von System-Abhängigkeiten benötigt. Die beschriebene Installation dient als meine gegenwärtige Ausgangsbasis für Softwareentwicklung und Datenanalyse. Sie basiert auf Python 3.4 (CPython), virtualenv, nodeevn, Node.js 6.2, PyQt4, numpy, matplotlib, pymongo sowie h5py und läuft gleichermaßen auf den Varianten für 32-Bit-Architekturen (x86) sowie 64-Bit-Architekturen (x86_64) von openSUSE 13.1 Linux (jetzt, Stand Frühjahr 2016, weitergepflegt im Rahmen der Langzeit-Unterstützung durch das "Evergreen"-Projekt). Der folgende Text sollte auf andere Versionen von openSUSE sowie andere Linux-Distributionen anwendbar sein, wobei jedoch Paket-Namen und Versionen abweichen können.