Kolumne Übersicht

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?

Mehr ›››

  • CUDA
  • JIT
  • Python
  • contributing
  • numba

(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.

Mehr ›››

  • E-Mail
  • Filter
  • Hetzner
  • Sieve

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.

Mehr ›››

  • CUDA
  • HPC
  • JIT
  • Python
  • benchmark
  • generalized universal function
  • numba
  • ufunc
  • vectorization

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".

Mehr ›››

  • communication
  • email
  • gnupg
  • key
  • pgp
  • security
  • signing

(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.)

Mehr ›››

  • Blog
  • Demo
  • Kolumne
  • Software-Test

'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.

Mehr ›››

  • Python
  • Python Package
  • Release
  • animated-gif
  • animation
  • animation-framework
  • compositor
  • h264
  • renderer
  • rendering
  • rendering-engine
  • scientific-visualization
  • video
  • visualization

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?!?

Mehr ›››

  • IGRF
  • Python
  • geomagnetism
  • geophysics
  • magnetic field

'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.

Mehr ›››

  • BSD
  • Backup
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • ZFS

'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.

Mehr ›››

  • Python
  • Python Package
  • Release
  • animated-gif
  • animation
  • animation-framework
  • compositor
  • h264
  • renderer
  • rendering
  • rendering-engine
  • scientific-visualization
  • video
  • visualization

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.

Mehr ›››

  • HPC
  • NumFOCUS
  • Python
  • astrodynamics
  • orbital mechanics
  • poliastro
  • proposal

(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.

Mehr ›››

  • Python
  • QGIS
  • conda
  • cpp
  • deployment
  • distribution
  • packaging
  • pip

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.

Mehr ›››

  • HPC
  • NumFOCUS
  • Python
  • astrodynamics
  • orbital mechanics
  • poliastro
  • proposal

'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.

Mehr ›››

  • Python
  • Python Package
  • Release
  • animated-gif
  • animation
  • animation-framework
  • compositor
  • h264
  • renderer
  • rendering
  • rendering-engine
  • scientific-visualization
  • video
  • visualization

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?

Mehr ›››

  • BSD
  • Linux
  • POSIX
  • Python
  • Unix
  • fork
  • parallel computing
  • shared memory

ZFS Snapshots mit 'Ablgleich'
Eine Live-Demo und Diskussion mit Christian Zengel (Vlogger Logic)

Ich war zu Gast bei Christian Zengels Vlogger Logic.

Mehr ›››

  • BSD
  • Backup
  • Demo
  • Diskussion
  • Linux
  • Python
  • Python Package
  • Unix
  • ZFS

'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.

Mehr ›››

  • Python
  • Python Package
  • Release
  • animated-gif
  • animation
  • animation-framework
  • compositor
  • h264
  • renderer
  • rendering
  • rendering-engine
  • scientific-visualization
  • video
  • visualization

'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.

Mehr ›››

  • Python
  • Python Package
  • Release
  • animated-gif
  • animation
  • animation-framework
  • compositor
  • h264
  • renderer
  • rendering
  • rendering-engine
  • scientific-visualization
  • video
  • visualization

'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.

Mehr ›››

  • Python
  • Python Package
  • Release
  • animated-gif
  • animation
  • animation-framework
  • compositor
  • h264
  • renderer
  • rendering
  • rendering-engine
  • scientific-visualization
  • video
  • visualization

'bewegung' 0.0.1 released
A versatile video renderer

Initial release of bewegung, a versatile video renderer and pleiszenburg.de open source project.

Mehr ›››

  • Python
  • Python Package
  • Release
  • animated-gif
  • animation
  • animation-framework
  • compositor
  • h264
  • renderer
  • rendering
  • rendering-engine
  • scientific-visualization
  • video
  • visualization

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.

Mehr ›››

  • HPC
  • animation
  • asteroids
  • astrodynamics
  • discovery
  • solar system

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".

Mehr ›››

  • communication
  • email
  • gnupg
  • key
  • pgp
  • security
  • signing

'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.

Mehr ›››

  • BSD
  • Backup
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • ZFS

'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.

Mehr ›››

  • BSD
  • Backup
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • ZFS

'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.

Mehr ›››

  • BSD
  • Backup
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • ZFS

'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.

Mehr ›››

  • BSD
  • Backup
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • ZFS

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.

Mehr ›››

  • BSD
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • Windows
  • Wine
  • ipython
  • jupyter

'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.

Mehr ›››

  • BSD
  • Backup
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • ZFS

'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.

Mehr ›››

  • BSD
  • Backup
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • ZFS

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.

Mehr ›››

  • OpenStreetMap
  • Python
  • USGS
  • animation
  • earthquake
  • geophysics
  • globe
  • open data
  • rendering
  • scientific-visualization
  • video
  • visualization

'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.

Mehr ›››

  • BSD
  • Backup
  • Linux
  • Python
  • Python Package
  • Release
  • Unix
  • ZFS

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.

Mehr ›››

  • communication
  • email
  • gnupg
  • key
  • pgp
  • security
  • signing

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.

Mehr ›››

  • Interoperabilität
  • Linux
  • Python
  • Python 3
  • Python-Modul
  • Softwareentwicklung
  • Unix
  • Wine
  • ctypes

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.

Mehr ›››

  • Datenquellen
  • Deutschland
  • Gesetz
  • Meteorologie
  • Offene Daten
  • Open Data
  • Wetter

(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.

Mehr ›››

  • Berechnung
  • Optimierung
  • Physik
  • Simulation
  • Wissenschaftliches Rechnen

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.

Mehr ›››

  • Datenanalyse
  • JavaScript
  • Linux
  • Node.js
  • PyQt
  • PyQt5
  • Python
  • Python 3
  • Softwareentwicklung
  • nodeenv
  • virtualenv

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.

Mehr ›››

  • Datenanalyse
  • JavaScript
  • Linux
  • Node.js
  • PyQt
  • PyQt4
  • Python
  • Python 3
  • Softwareentwicklung
  • nodeenv
  • virtualenv