Archive

Bisherige Präsentationen und Themen.

13. Februar 2024

GUI-Programme im Terminal

Textual macht es leicht GUI-Programme im Terminal umzusetzen. Solche Programme bezeichnet man auch als TUI (text user interface). Die Programmierung ähnelt der von Anwendungen mit anderen GUI-Toolkits wie Qt for Python oder Tkinter. Wir haben uns angesehen wie Textual funktioniert und welche Anwendungen sich damit gut umsetzten lassen.

9. Januar 2024

Heizkörper mit Python fernsteuern

Andre Bunk

Vergessen die Heizung abzudrehen? Mit einem kleinen Python-Programm geht das auch remote. Der Vortrag eine Lösung dafür vorgestellt. Ein auf Flask basierter Webserver, der auf einem Odroid läuft stellt, über FritzConnection eine Verbindung zu einem AVM Router her. Dort legt dieser die Heizungssteuerdaten ab, die die Fritzbox über DECT an den AVM-Thermostat überträgt.

12. Dezember 2023

Konstanten mit Enum thematisch zusammenfassen

Mike Müller

Die Standardbibliothek bietet viele Module für unterschiedlichste Aufgaben. Ein interessantes Modul ist enum, das unter anderem die Klasse Enum enthält. Mit Enum lassen sich thematisch zusammengehörige Konstanten zusammenfassen und organisieren. Oft haben diese Konstanten eine inhaltlich begründet Reihenfolge. Typische Beispiele sind die Wochentage von Montag bis Sonntag, die Monate eines Jahres, die HTTP-Status-Codes wie 200 für OK, 404 für NOT_FOUND und 500 für SERVER_ERROR oder die Himmelsrichtungen wie Nord, Süd, Ost und West.

Wir haben uns ein paar Anwendungsbeispiel angeschaut. Dabei haben wir Fragen wie:

beantwortet.

Unser Stand auf den Chemnitzer Linux-Tagen

Der Call for Presentations der Chemnitzer Linux-Tage ist raus. Wir hatten in den letzten Jahren immer einer Stand. Auch 2024 sollten wir wieder dabei sein. Der Anmeldeschluss ist der 08.01.2024. Da dieses Datum vor unserem nächsten Treffen ist, haben wir in diesem Treffen entschieden wieder teilzunehmen. Für Standbetreuer ist die Teilnahme kostenlos. Außerdem gibt es eine durchgehende Pausenversorgung mit Speisen und Getränken sowie die Möglichkeit der Teilnahme an der Samstagsabendveranstaltung der ORGA mit Kulturprogramm und umfangreichen Buffet. Der Betreuungsaufwand ist übersichtlich. Wir müssen den Stand nur mit mindestens einer Person durchgängig besetzten. Je mehr Betreuer wir haben, desto weniger Zeit am Stand pro Person ist nötig. Es gibt also durchaus Gelegenheit sich einige Vorträge anzusehen.

14. November 2023

Plone - Content Management mit Python

Manuel Reinhardt

Plone ist ein Open Source Content Management System (CMS), das in Python geschrieben ist. Es wirbt mit Stabilität, Sicherheit und Erweiterbarkeit. Manuel arbeitet seit bald 15 Jahren überwiegend mit Plone. Er gab einen kleinen Einblick, was Plone kann und für wen es geeignet ist. Weiterhin zeigte er die wichtigsten Features und umriss die Entwicklung von Add-Ons.

10. Oktober 2023

Python 3.12

Pünktlich zum 2. Oktober ist Python 3.12 erschienen. Wir haben uns ansehen was die neue Version bringt. Python ist wieder etwas schneller geworden. Die so beliebten f-Strings sind noch anwenderfreundlicher geworden. Beliebig tiefe Verschachtelungen und mehrzeilige Ausdrücke können recht nützlich sein. Das Aufräumen geht auch weiter. Einige Uralt-Module sind verschwunden oder werden explizit als bald nicht mehr unterstützt gekennzeichnet. Viele weitere, kleine Verbesserungen können hier und da hilfreich sein. Lohnt sich ein schneller Umstieg? Wir haben versucht diese Frage in unserem Treffen zu beantworten.

12. September 2023

Datenbankzugriff mit Python

Die Arbeit mit relationalen Datenbanken ist eine typische Aufgabe beim Programmieren. Wir haben uns darüber ausgetauscht wie sich diese Aufgabe mit Python umsetzten lässt. Zu den Fragen die wir beantwortet haben gehören zum Beispiel: Welche Bibliotheken sind dafür geeignet? Wie viel SQL muss man beherrschen, um sinnvoll mit Datenbanken in Python zu arbeiten? Reicht SQLite für meine Bedürfnisse?

8. August 2023

Bericht vom PyCamp

Unser Python BarCamp fand am 29. und 30. Juli 2023 im Basislager in Leipzig statt. Es war ein voller Erfolg. Ein paar von uns waren dabei. Wir haben einen kurzen Überblick über den Ablauf und die Themen gegeben. Wer nicht teilnehmen konnte bekam damit eine Zusammenfassung. Das motiviert vielleicht beim nächsten Mal dabei zu sein.

29. und 30. Juli 2023

PyCamp Leipzig

Unser Python BarCamp fand am 29. und 30. Juli 2023 im Basislager in Leipzig statt. Es war ein voller Erfolg. Interessante Themen und tiefe Diskussionen haben die Veranstaltung geprägt. In zwei Tagen haben alle Beteiligten viel Neues gelernt.

11. Juli 2023

Paketierung und Distribution für Python-Nutzer

Jannis Leidel

Der Vortrag hat interessante Aspekte aus diesem Gebiet beleuchtet:

Wie hat sich das Python Package Management in den letzten 15 Jahre entwickelt? Wie könnte es in den kommenden Jahren weitergehen und welche Themen sind im Moment besonders im Entwicklungsfokus? Ich werde einige Bespiele aus den den PyPA und conda Communitys zeigen und Euren Fragen Rede und Antwort stehen. Die Slides geben einen Überblick über die Vortragsinhalte.

Der Vortragende

Jannis Leidel ist der derzeitige Lead-conda-Entwickler. Er hat maßgeblich an pip mitgearbeitet und ist ein Mitgründer der Python Packaging Authority (PyPA).

13. Juni 2023

Freie Diskussionsrunde

Wir haben über verschiedenste aktuelle Python-Themen diskutiert.

9. Mai 2023

Python und Rust

Eine Diskussionsrunde

Die Programmiersprache Rust ist noch relativ jung. Sie wurde im Jahr 2010 veröffentlicht und die erste stabile Version erschien 2015. Verglichen mit dem mehr als 30 Jahre altem "erwachsenem" Python ist Rust also noch ein "Kind". 😉 Trotzdem gibt es schon viele Projekte, die Rust nutzen. So ist Rust seit Version 6.1 des Linux Kernel eine offizielle Programmiersprache für Linux.

Auch für Python-Nutzer is Rust relevant. Das sind ein paar Beispiele für Python-Werkzeuge, die in Rust implementiert sind:

Wir haben diskutiert welche Auswirkungen Rust auf Python und dessen Nutzung hat. Interessante Fragen für unsere Diskussion waren:

Stefan Schwarzer hat wichtige Merkmal von Rust mit einem Beispiel kurz dargestellt. In seiner Vorstellung von Rust hat er diese Links empfohlen:

11. April 2023

Wie entsteht eine Python-Konferenz?

Benjamin Schott

Wie kommt eigentlich die PyCon DE oder die EuroSciPy zustande? Wer organisiert diese Konferenzen? Der Vortrag zeigte aus der Sicht eines an der Organisation einer Python-Konferenz beteiligten zeige wie diese ehrenamtlich durchgeführten Veranstaltungen erfolgreich sein können.

14. März 2023

Nachlese Chemnitzer Linux-Tage

Wir hatten einen Stand auf den Chemnitzer Linux-Tagen (CLT) am 11 und 12. März. Drei von uns waren als Standbetreuer dabei. Wir haben kurz berichtet was es Neues aus regionalen Open-Source-Community gibt.

Auf den CLT gibt es viele interessante Vorträge und Workshops, die sicher die Reise nach Chemnitz wert sind.

14. Februar 2023

Programmieren lassen - Erfahrungen mit ChatGPT

Katharina Ni

ChatGPT ist ein nützliches Werkzeug für Python-Programmieranfänger, das unter anderem hilft, Fehler in im Code zu finden, Boilerplate-Code und Musterdaten zu erzeugen und Hilfe zu erhalten, wenn man den Wald vor lauter Bäumen nicht mehr sieht. Es sollte jedoch nicht verwendet werden, um Programmieren zu lernen oder Code zu generieren, der eine Menge Kontext erfordert.

Wir haben uns interessante Beispiele angesehen. ChatGPT ist beindruckend macht aber auch "dumme" Fehler, die manchmal nicht im Verhältnis zur eigentlich soliden Lösung stehen.

10. Januar 2023

Python 3.11 - Bis zu 60 % schneller

Seit ein paar Monaten ist 3.11 verfügbar. Wir haben uns ansehen was es Neues gibt. Das Projekt Faster CPython hat Python 3.11 signifikant schneller gemacht. Wir haben uns ansehen was das bedeutet. Auch andere Feature wie verbesserte Ausnahmen und mehr Möglichkeiten beim Typing sind interessant.

13. Dezember 2022

Viele Messwerte mit Python sinnvoll darstellen

Andre Bunk

In unserem Treffen im Juli 2020 hatte Andre seine Temperatur-Messung mit einem Odroid-Kleincomputer vorgestellt. In den vergangen fast 3 Jahren sind über 1 Million Messwert angefallen. Die Software mit Sqlite, pandas, SciPy und Dash läuft zuverlässig. Allerdings wird die Darstellung bedingt durch die vielen Werte immer unübersichtlicher. Wir haben uns ansehen welche Möglichkeiten es gibt trotz der vielen Werte die Darstellung übersichtlich und informativ zu gestalten. Als Lösung bietet sich die Berechnung von stündlichen Mittelwerten sowie die Gruppierung nach Stunden an. Das Werkzeug der Wahl dafür ist sicherlich pandas, dass schon im Einsatz ist.

8. November 2022

Gradual Typing in Python

Martin Czygan

Being a dynamic language first, Python approaches type safety in a different, gradual way. In this talk, we looked at the broad picture of typing in Python, its history and a bit of theory behind the implementation as well. We'll also saw how typing can improve code quality.

11. Oktober 2022

Modernes Matplotlib

Mike Müller

Matplotlib ist die wahrscheinlich die meist genutzte Plotting-Bibliothek in Python. Matplotlib unterstützt viele verschiedene Plots und biete ein große Palette von Konfigurationsmöglichkeiten. Die erste Version ist 2003 erschienen. Nach fast 20 Jahren Entwicklungszeit haben sich aber auch viele Konzepte überlebt. Deshalb hat Matplotlib teilweise den Ruf "altbacken" und umständlich nutzbar zu sein. Das muss aber nicht sein. Matplotlib kann durchaus mit anderen, neueren Plot-Bibliotheken mithalten. Der Vortrag Effectively using matplotlib auf der EuroSciPy 2022 gab dazu einen guten Überblick. Aufbauend darauf haben wir uns angeschaut an wie modernes Matplotlib funktioniert. Wer Matplotlib noch nicht kannte, konnte die grundlegende Merkmale kennenlernen. Wer Matplotlib schon nutzte konnte sicher auch ein paar neue Tricks mitnehmen, die die Arbeit mit dieser Bibliothek erleichtern und näher an die Workflows anderer Bibliotheken bringen.

13. September 2022

Cross-kompilieren für CPU und GPU mit Numba, oder: Python für Haskell-Liebhaber

Sebastian Ernst

Das Python-Paket numba bietet einen Just-in-Time-Compiler für (C)Python über verschiedene APIs für verschiedene Programmierparadigma an. Besonders interessant für mich waren dabei vectorize und guvectorize, welche in der Lage sind, "numpy-ufuncs" bzw. so genannte "generalisierte ufuncs" zu bauen. Beide Funktionen erlauben das Compilieren ein und des selben Python-Codes für verschiedene Targets, u.a. (x86) CPUs und (Nvidia) GPUs. Der Vortrag zeigte was es dabei alles so zu entdecken gibt und in welche tiefen Löcher man dabei so fallen kann.

9. August 2022

Digitale Probanden-Einwilligung mit Django

Gefan Qian

Der Vortrag hat den aktuellen Stand einer Django-Anwendung vorgestellt, die Daten von Probanden verarbeitet. Im ersten Schritt müssen die Probanden der Verarbeitung ihrer Daten einwilligen. Die Texte der Probanden-Einwilligung stellt die Anwendung dynamisch aus individualisierten Textbausteinen zusammen. Der Proband kann dieser Einwilligung in Form einer Unterschrift per Maus zustimmen. Danach erzeugt die Anwendung die unterschriebene Aufklärung im PDF-Format und zeigt diese im Bowser an.

Wir haben gemeinsam am Code gearbeitet. Dabei konnten wir einen URL-Endpunkt entfernen und die Funktionalität durch einen existierenden Template-Filter ersetzen. Damit hat sich Anzahl der Code-Zeilen beträchtlich reduziert und die Anwendung ist einfacher geworden.

12. Juli 2022

Diskussionsrunde

Wir haben uns über aktuelle Python-Themen ausgetauscht.

14. Juni 2022

Python im Browser

PyScript & Co. - Python im Browser

Eine Keynote der PyCon US hat PyScript vorgestellt. PyScript läuft im Browser und kann Javascript vollständig ersetzen. Es basiert auf Pyodide, das CPython auf WebAssembly/Emscripten laufen lässt. Auf der PyScript Seite gibt es es gibt ein paar schöne Beispiele. Wir haben uns diese näher ansehen.

10. Mai 2022

Pandas-Alternativen

Ein Erfahrungsaustausch

Die Bibliothek pandas ist in der Datenanalyse weit verbreitet. Es gibt eine Reihe von Bibliotheken, die sich an die Funktionsweise, also die API von pandas anlehnen und eine Alternative darstellen können. Weiterhin gibt es Systeme mit pandas-artiger Schnittstelle, die damit im Idealfall den Einarbeitungsaufwand auf Null minimieren. Wir haben uns einige dieser Systeme wie:

kurz angesehen und uns über unsere Erfahrungen zu Vor- und Nachteile dieser Systeme ausgetauscht.

12. April 2022

Offene Diskussionsrunde

8. März 2022

Metadaten-GUI - Teil 2

Gefan Qian

In unserem Treffen im Januar hatte Gefan sein Projekt über eine dynamisch erzeugte Nutzeroberfläche für Konfigurationsdaten vorgestellt. Es gab Einiges an Feedback mit Änderungsvorschlägen. Das sind die wichtigsten Änderungen in der neuen Version:

Es gab noch diese offenen Punkte:

8. Februar 2022,

Auswertung PyCamp

Unser PyCamp Ende Januar ist gelaufen. Wir haben kurz ausgewertet welche Themen wir dort diskutiert hatten. Einige das Konzept eines BarCamps noch nicht und konnten mehr darüber lernen warum es viele Teilnehmer als sehr produktives Format empfinden.

11. Januar 2022

Metadaten-GUI - Eine dynamisch erzeugte Nutzeroberfläche für Konfigurationsdaten

Gefan Qian

Der Vortrag stellte ein Programm vor, das anhand einer JSON-Datei eine GUI mit den jeweiligen Elementen generiert. Diese JSON-Datei ist eine manuell geschriebene Konfigurationsdatei. Die TKinter-GUI erzeugt anhand der Konfigurationsdaten dynamisch Elemente wie Checkbox, Dropdown-Menü, Selectbox oder Kalender. Dabei bestimmen die Konfigurationsdaten die Anzahl und Reihenfolge dieser GUI-Elemente.

In Zukunft soll ein weiteres Werkzeug Konfigurationsdateien über ein GUI erzeugen können. Wir wollen diskutieren wie sich das grundsätzlich umsetzen lässt.

14. Dezember 2021

Django-Admin - Ein mächtiges Werkzeug für Django-Apps und andere Anwendungen

Andreas Bamberger

Der Django-Admin ist ein grafisches User-Interface für Django-Models. Er lässt sich vielseitig anwenden. Typische Anwendungen sind zum Beispiel:

Der Vortrag hat den Django-Admin und dessen Nutzung vorgestellt.

Alle Beispiele liegen im Repo zum Vortrag: https://gitlab.com/a_ba/lpug-django-xmas-admin

9. November 2021

Vereinsverwaltung mit Django

Stephan Dick-Rustmeier

Der Vortrag hat den aktuellen Stand der Arbeiten an einer Software für die bessere, digitale Verwaltung eines Modellflug-Vereins vorgestellt. Ziel ist es, dass die Django-basierte Web-Anwendung mit allen modernen Webrowsern auf allen gängigen Betriebssystemen funktioniert.

Ein wichtiger Bestandteil des Vortrages war die Datenmodellierung, also wie die Anwendung Daten in Datenbank-Modellen abbildet. Der Vortrag zeigte den derzeitigen Ansatz.

Wie immer war dies kein klassischer Vortrag mit ein paar Fragen am Ende. Vielmehr war es eine Vorstellung eines laufenden Projektes mit Quelltexten und Demonstrationen. Fragen und Anmerkungen der Teilnehmer waren ein wichtiger Bestandteil. Es gab eine lebendige Diskussion aus der die Teilnehmer etwas Neues lernen konnten. Der er Vortragende hat wertvolle Anregungen für seine weitere Arbeit an dem Projekt erhalten.

12. Oktober 2021

Neue Features in Python 3.10

Python 3.10 ist da. Seit Anfang Oktober ist die neue Version offiziell raus. Wir haben uns angeschaut was diese Version bringt. Neben dem "Mega-Feature" Structural Pattern Matching gibt es noch einige interessante Neuerungen wie verbesserte Fehlermeldungen, mehrere Kontext-Manager in Klammern oder zip, das optional nur gleichlange Sequenzen verarbeitet.

Wir sind durch die neun Features What’s New In Python 3.10 gegangen. Einige davon haben wir gemeinsam ausprobiert.

10. August 2021

Diskussionsrunde

Wir haben über verschiedene Themen diskutiert.

13. Juli 2021, 19:00 Uhr

Aufgaben abarbeiten lassen

Dienste, Busse, Warteschlangen und andere Helfer

Unser Anwendungsfall:

Messdaten kommen kontinuierlich von einem Messgerät. Diese soll ein Dienst verarbeiten und das Ergebnis an den nächsten Dienst weitergeben, der wiederum mit den Daten arbeitet und das Ergebnis entsprechend weiterreicht. Im letzten Schritt zeigt ein Dienst das Ergebnis grafisch an. Die Dienste können lokal oder im Netz laufen.

Wir wollen diskutieren welche Möglichkeit der Umsetzung es in Python gibt. Was sind die Vor- und Nachteile diese für verschiedene Aufgaben-Größen? Wie komplex sind diese Lösungen?

Bibliothek, die hier helfen könnten wären zum Beispiel python-task-queue oder Azure Service Bus-Warteschlangen.

8. Juni 2021

Freie Diskussionsrunde

Wir uns über die letzten Entwicklungen im Python-Ökosystem ausgetauscht. Es gab eine lebhafte Diskussion.

11. Mai 2021

Python-Pakete installieren

Eine Diskussionsrunde

Es gibt viele sehr nützliche Bibliotheken für Python. Man muss diese aber auch installieren können. Oft geht das problemlos mit pip. Manchmal gibt es aber Probleme. Wir wollen uns austauschen wie man solche Probleme möglichst vermeiden oder verhindern kann. Welche Techniken, Bibliotheken und Vorgehensweisen gibt es dafür? Was nutzt ihr? Welche Erfahrungen habt ihr mit verschiedenen Methoden gemacht?

13. April 2021

Meet Mob - Erste Erfahrungen mit dem Programmieren in der Gruppe

Oliver Bestwalter

Seit Anfang des Jahres nehme ich in einer Gruppe Teil, die sich einmal in der Woche remote trifft, um gemeinsam ein OSS Projekt zu pflegen. Die Technik nennt sich "remote mob programming" oder "remote ensemble programming". Ich möchte ein wenig von der Methode und meinen Erfahrungen erzählen.

9. März 2021

Structural Pattern Matching in Python

Eine Diskussionsrunde

Python bekommt "Structural Pattern Matching". Dies ist eine relativ große Neuerung. Es gibt teilweise hitzige Diskussionen darüber ob dies eine tolle Erweiterung der Sprache ist oder ob damit die Sprache zu komplex wird und sich zu sehr an die "C++-Philosophie" je mehr Features, desto besser annähert.

Es gibt drei PEPs zu diesem Thema:

Wir haben uns die wichtigsten Elemente davon ansehen und dazu diskutiert. Dabei versuchten wir Antworten auf Fragen wie diesen zu finden:

9. Februar 2021

pip, conda, mamba - Python-Pakete installieren und virtuelle Umgebungen anlegen

Eine Diskussionsrunde

12. Januar 2021

Große Datenmengen in Videos animieren mit "bewegung"

Sebastian M. Ernst

bewegung is a versatile video renderer, primarily targeting scientific visualizations of large quantities of data. Its core concepts are sequences and layers. Sequences describe a certain time span within a video and can overlap. Each sequence can hold multiple layers. Layers can be generated with cairo, Pillow, datashader, matplotlib and bewegung's internal drawing system DrawingBoard. Final compositing of every video frame and video effects are implemented via Pillow. Video encoding is handled by ffmpeg. bewegung also includes a simple vector algebra system and a "camera" for 3D to 2D projections. bewegung is developed with ease of use, compute time and memory efficiency in mind.

8. Dezember 2020

Web APIs mit Django und GraphQL

Andreas Bamberger

Vortragsinhalt:

Präsentation und Code: https://gitlab.com/a_ba/lpug-django-graphene

10.11.2020

Diskussionsrunde - "Was mich an besonders Python stört, was mir an Python besonders gefällt."

Wir haben uns online getroffen und intensiv diskutiert. Dabei kamen Merkmale von Python, die wir besonders mögen oder die uns besonders stören zur Sprache. Es gab verschiedene Meinungen zu ein paar Themen, so dass man viel lernen konnte.

13.10.2020

Einfache Web-Anwendungen mit Flask

Lukas Werner

Die kleine Einführung in das Web Framework Flask ging auf folgende Punkte ein:

Da jeder der Punkte eine eigene Vorstellung ausfüllen könnte, hat der Vortrag die meisten Punkte nur kurz umrissen. Einen großen Teil der Vortragszeit hat die Diskussion zum Thema eingenommen.

08.09.2020

Was ist neu in Python 3.9

Die neue Python-Version wird bald verfügbar sein. Deshalb haben wir uns angesehen was Python 3.9 an neuen Merkmalen bietet.

Es gab wieder viele interessante Diskussionen zu verschiedensten Themen um Python und Softwareentwicklung. Wir hatten viele Erst-Teilnehmer, die sich rege an der Diskussion beteiligten.

11.08.2020

Die Programmiersprache Nim aus Python-Sicht - Ein Erfahrungsbericht

Stefan Schwarzer

Als langjähriger Python-Entwickler bin ich auf der Suche nach einer flexiblen statisch typisierten Programmiersprache vor einem Jahr auf Nim ( https://nim-lang.org ) gekommen.

Ich möchte euch etwas über die Sprache erzählen, unter anderem über besondere Unterschiede zu Python und wie man beide Sprachen kombinieren kann. Ich habe darüber hinaus einiges an Material, aber wir müssen nicht alles strikt durchgehen, denn ein User-Group-Treffen lebt ja auch von der Diskussion. :-)

14.07.2020

Hardware mit Python ansteuern

Hardware mit Python ansteuern

Andre Bunk

Andre stellte sein Projekt vor. Das sind die wichtigsten Punkte:

  1. Pumpensteuerung für den Garten
  2. Temperaturmessung mit TC74
  3. Speichern dieser Messdaten mit SQLite
  4. Auswertung von Textdateien des Mediathekview mit Python
  5. Auswertung der gemessenen Temperaturwerte
  6. Benutzung-Schnittstelle mit tkinter geplant

Die Quelltexte stehen zur Verfügung:

FTP: odroid.home-webserver.de
Nutzer: gast
Passwort: gastgast1

12.05.2020

Online-Treffen

Programming Guidelines

Thomas Güttler

Mit 13 Jahren habe ich das Programmieren angefangen und bin nun 43.

Seit dem habe ich sehr viele Fehler gemacht und habe daraus mehr oder weniger viel gelernt.

Seit einer Weile schreibe ich meine persönlichen Programming Guidelines auf. Zum einen um mehr Klarheit über mein eigenes Handeln zu finden. Zum anderen , um dem einen oder anderen Neueinsteiger ein paar Irrwege zu ersparen.

Der Text ist auf englisch und hier zu finden:

https://github.com/guettli/programming-guidelines

14.01.2020

Python-Konferenzen 2020

Mittlerweile gibt es im Prinzip jede Woche ein oder mehrere Python-Konferenzen irgendwo auf der Welt. Welche Python-Konferenzen sind besonders interessant? Wie läuft eine solche Konferenz ab? Lohnt es sich teilzunehmen? Wenn, ja warum? Mike Müller gab persönliche Eindrücke von ein paar Python-Konferenzen der letzten Jahre und versuchte damit diese Fragen zu beantworten. Das ist natürlich subjektiv und auf wenige Konferenz beschränkt. Trotzdem könnte es bei der Entscheidung helfen eine Python-Konferenzen zu besuchen und dann die richtige auszusuchen.

13.08.2019

Fortran-Bibliotheken in Python nutzen

Mike Müller

Viele wissenschaftliche Anwendungen sind in Fortran implementiert. Es ist wahrscheinlich die älteste Hochsprache, die noch relativ weit verbreitet ist. Für numerische Anwendungen kann Fortran-Code durchaus beträchtlich schnellere Programme ergeben als Code in C oder ähnlichen Sprachen. Für andere Programmieraufgaben als numerische Algorithmen ist Fortran allerdings nicht so gut geeignet. Hier kommen die Fähigkeiten von Python ins Spiel Quelltext anderer Programmiersprachen relativ einfach als sogenannten Erweiterungen in Python integrieren zu können.

Dieser Vortrag stellt das Werkzeug f2py vor. Damit lassen sich Fortran-Quelltext elegant in Python-Erweiterungen einbauen. Der Zugriff auf Fortran-Arrays, die in Fortran-Modulen liegen ist mit NumPy-Arrays von Python aus nahtlos möglich. Oft sind Fortran-Quelltexte sehr monolithisch mit einer großen Schleifen für Simulations-Zeitschritte aufgebaut. Der Vortrag zeigt wie sich mit Hilfe von Callbacks und Threads Erweiterungen bauen lassen, die die Eingriffe in diese monolithische Struktur auf ein Minimum beschränken. Eine Demo zeigt wie sich in einem Jupyter-Notebook Fortran-Variablen live von Python aus anzeigen und verändern lassen.

Keine Angst: Fortran-Wissen ist nicht nötig, um dem Vortrag folgen zu können. Solide Python-Kenntnisse sind ausreichend. Sogar ohne Python-Wissen sollten die Grundprinzipien zu verstehen sein.


10.09.2019

Programming Guidelines

Thomas Güttler

Mit 13 Jahren habe ich das Programmieren angefangen und bin nun 43.

Seit dem habe ich sehr viele Fehler gemacht und habe daraus mehr oder weniger viel gelernt.

Seit einer Weile schreibe ich meine persönlichen Programming Guidelines auf. Zum einen um mehr Klarheit über mein eigenes Handeln zu finden. Zum anderen , um dem einen oder anderen Neueinsteiger ein paar Irrwege zu ersparen.

Der Text ist auf englisch und hier zu finden:

https://github.com/guettli/programming-guidelines


Treffen am 11. Oktober 2018 19:00 Uhr

Robert Lieback sprach über "Desktop-Anwendungen mit PyQt5 und PyInstaller"

Best-Practices für die Desktopentwicklung: Vom Qt-Designer, über das Event-Management, zur Distribution mit PyInstaller.


Treffen am 08. Mai 2018 19:00 Uhr

Sebastian Ernst über das Thema Zahlen stapeln mit HDF5 (h5py), Bcolz & Zarr gesprochen.


Treffen am 08. Mai 2018 19:00 Uhr

Markus Zapke-Gründemann sprach über "Can packaging improve Django deployments?"

How can packaging Django projects make deployments easier, faster and more reliable?

This is a preview of Markus' talk at DjangoCon Europe 2018 in Heidelberg. The talk will be held in English.

Es waren 13 Personen anwesend. Nach dem Vortrag gab es eine lebhafte Diskussion zum Thema Deployment von Django Projekten. Außerdem wurde das Thema Packaging weiter vertieft.


Treffen am 10. April 2018 19:00 Uhr

Andreas Linz sprach über "Think DSP - Digital Signal Processing in Python".

Der Vortrag war eine Zusammenfassung des Open-Source Buches ThinkDSP von Allen Downey und gleichzeitig eine Einführung in die Grundlagen der (Audio-)Signalverarbeitung.

Zu dem Buch gibt es eine Reihe von Jupyter Notebooks, die die vorgestellten Konzepte veranschaulichen.

Mit 17 Anwesenden war der Vortrag sehr gut besucht.


Treffen am 13. Februar 2018 19:00 Uhr

Unser Vortrag war diesmal:

Martin Czygan

Deep Learning with PyTorch

PyTorch is a machine learning framework, with focus on deep neural nets. PyTorch is sometimes regarded as the most pythonic among the current generation of such tools.

We briefly introduce the problems deep learning tries to solve; then we take a look at PyTorch and it's pythonic approach.

Repository with slides and notebooks:


Gemütliches Weihnachtstreffen am 12.12.2017 19:00 Uhr

Das letzte LPUG-Treffen im Jahr 2017 haben wir im Rahmen der Weihnachtszeit in gemütlicher Runde zum freien Plausch genutzt. Weiterhin haben über mögliche Inhalte im nächsten Jahr und die zukünftige Gestaltung der LPUG gesprochen.

Struktur der LPUG in 2018

grobe Jahresplanung

Unser Ziel ist es, zwei symmetrische Halbjahre aufzubauen. Über das Jahr verteilt könnten dann u.a. folgende Themenblöcke als Inhalt fungieren:

Planungsstufen

Um die Mitarbeit zu motivieren und besser planbar zu gestalten, haben wir verschiedene Planungsstufen.

1. konkret (Thema, Person, Datum)

2. in Planung (Thema, Person)

3. interessant (Thema)

Treffen am 12. September 2017 19:00 Uhr

How to Create a Python Package and Write Reusable Code

Philipp Hanemann

Python wird von vielen Nutzern wertgeschätzt, weil sie mit dieser Programmiersprache sehr produktiv sind. Von der Idee bis zur Umsetzung sind oftmals nur wenige, aber dennoch gut lesbare Zeilen Code notwendig. Dies ist vor allem in der Reichhaltigkeit der vorhandenen Bibliotheken begründet. Diese bündeln in der Regel Funktionen und Klassen mit einem bestimmten thematischen Fokus und stellen damit wiederverwertbaren Code dar. Einmal installiert, kann der Nutzer auf die Werkzeuge der Bibliothek bequem zugreifen.

Glücklicherweise ist der Aufwand eine eigene Bibliothek zu bauen unwesentlich höher als einfache Skripte zu schreiben. Nichtsdestotrotz gibt es für ein strukturelles einiges zu beachten.

Der Vortrag zeigt wie robuster und wiederverwertbarer Code entsteht. Die Präsentation stellt ein paar Konzepte vor und bereitet den danach folgenden interaktiven Erfahrungsaustausch vor.

Treffen am 8. August 2017 19:00 Uhr

Wir haben unser erstes Coding Dojo durchgeführt. Ein Dojo besteht aus Programmierübungen, sogenannte Katas, für kleine, in sich abgeschlossene Probleme. Dazu haben wir Paare gebildet. Ein Ziel der Übungen war es Test-Driven-Development (TDD) zu trainieren, also die Tests vor der Implementierung zu schreiben. Ähnlich wie bei Katas im Kampfsport geht es primär darum grundsätzliche Fähigkeiten zu internalisieren.

Unsere Kata

Problem

Wir haben uns die Russische Bauernmultiplikation heraus gesucht:

Schreibe eine Funktion, die zwei ganze Zahlen mit dem Algorithmus „russische Bauernmultiplikation“ multipliziert.

Die Signatur der Methode sieht wie folgt aus:

mul(int: x, int: y) --> int:
    # your code here

Der Algorithmus der sogenannten Russischen Bauernmultiplikation verläuft wie folgt: man halbiert die linke der beiden Zahlen so lange, bis die 1 erreicht ist. Nachkommastellen werden abgerundet. Die rechte Zahl wird jeweils daneben geschrieben und verdoppelt. Von den rechten Zahlen werden alle gestrichen, neben denen links eine gerade Zahl steht. Die verbleibenden nicht gestrichenen Zahlen der rechten Seite werden dann addiert und bilden das Ergebnis der Multiplikation.

Beispiel:

47 *  42
--------
47    42
23    84
11   168
 5   336
 2  (672)  # deleted because 2 ist even)
 1  1344
========
    1974

Das geht natürlich auch einfacher:

>>> 47 *  42
1974

Lösungen

Iterative Lösung

Die Summe ist zu Beginn Null sum_ = 0. Wenn der erste Wert negativ ist, kehren wir einfach die Vorzeichen der beiden Zahlen um. Damit decken wir auch negative Zahlen ab. Solange der erste Wert größer Null ist (while x > 0:), summieren wir auf. Aber nur wenn der erste Wert gerade ist: if x % 2:. Der erste Wert wird mit Integer-Divison halbiert x = x // 2 und der zweite verdoppelt y = y * 2.

def mul(x, y):
    sum_ = 0
    if x < 0:
        x, y = -x,  -y
    while x > 0:
        if x % 2:
            sum_ += y
        x, y = x // 2, y * 2
    return sum_

Lösung mit Generator

Das ist eine Variation der obigen iterativen Lösung. Anstatt der Summierung geht zu addierende Wert mit yield bei jedem Iterationsschritt raus. Das finale sum() konsumiert den Generator, den die Generatorfunktion get() zurück gibt.

def get(x, y):
    if x < 0:
        x, y = -x,  -y
    while x > 0:
        if x % 2:
            yield y
        x, y = x // 2, y * 2

def mul2(x, y):
    return sum(v for v in get(x, y))

Einfache Rekursive Lösung

Rekursiver Ansatz: Das Problem wird beschrieben als eine Kaskade von Referenzen auf "kleinere" Instanzen des selben Problems. Die Kaskade mündet in einen trivialen Sonderfall, für den eine direkte Lösung angegeben wird. Bei rekursiven Lösungen muss darauf geachtet werden, dass die Abfolge von Referenzen stets gegen den trivialen Sonderfall konvergiert.

Die erste Zeile im Rumpf fängt hier den Sonderfall x == 0 ab. Das ist allgemeiner als gefordert. Strikt nach Aufgabenstellung würde schon der Sonderfall x == 1 genügen; dann würden wir y statt 0 zurückgeben. Das würde i.A. genau so gut funktionieren, aber das Programm würde dann bei der Multiplikation mit einer linksseiten 0 nicht terminieren.

Die zweite Zeile im Rumpf übersetzt Aufrufe mit einem negativen Argument für x in arithmetisch gleichwertige Aufrufe mit positivem x (siehe dritte Zeile). Auch das ist allgemeiner als gefordert. Ohne diese Zeile terminiert das Programm nur für nicht-negative x.

Die dritte Zeile im Rumpf realisiert die eigentlichen Zwischenschritte der Bauernmultiplikation. Der rekursive Aufruf entspricht dabei dem Aufaddieren der darüberliegenden Summanden in der Tabelle. Der aktuelle Summand bleibt unberücksichtigt wenn x gerade ist (x % 2 == 0).

Konvergenz ist dadurch garantiert, dass die dritte Zeile im Rumpf mul stets mit einem betraglich kleineren x aufruft, so dass der Sonderfall x == 0 früher oder später erreicht wird.

def mul(x, y):
    if x == 0:
        return 0
    if x < 0:
        return mul(-x, -y)
    return (0 if x % 2 == 0 else y) + mul( x//2, y*2 )

13. Juni 2017 um 19:00 Uhr

Wir hatten einen interessanten Vortrag:

Cython

Stefan Behnel

Cython ist ein optimierender statischer Complier für Python, der das Erstellen von C-Erweiterungen für Python erleichtert. Als Quelle kann (1) reines Python, (2) Python mit Typ-Deklarationen (Cython-spezifisch) oder (3) C-Quelltext dienen.

Der Cython-Kern-Entwickler Stefan Behnel stellte Cython vor. Er zeigte an praktischen Beispielen wie leicht es ist mit Cython zu arbeiten. Er beantwortete tiefgehende Fragen zu Anwendung und Funktionsweise von Cython.

11. April 2017 um 19:00 Uhr

Diesmal hatten wir wieder eine freie Diskussion zu Pythonthemen.

14. März 2017 um 19:00 Uhr

Wir hatten einen Vortrag:

Mike Müller

Statische Typisierung für Python

Python ist eine dynamisch getypte Sprache. Das wird auch in Zukunft so bleiben. Mit mypy und dem Modul typing der Standardbibliothek ist es aber auch möglich statische Typen als Hinweise hinzuzufügen.

Diese statischen Typen wertet Python zur Laufzeit nicht aus. mypy arbeitet als Werkzeug mit dem Quelltext und überprüft die Richtigkeit der Typen ähnlich wie ein Compiler bei statisch getypten Sprachen. Der Vortrag stellte das generelle Vorgehen für die Nutzung der optionalen statischen Typisierung mit mypy und die Neuerungen, die Python 3.6 hier mitbringt vor.

14. Februar 2017 um 19:00 Uhr

Diesmal hatten wir eine freie Diskussion zu Pythonthemen. Wir haben uns geschaut welche neuen Bibliotheken in der letzten Zeit erschien sind.

10. Januar 2017 um 19:00 Uhr

Unser Thema war diesmal die nebenläufige und parallele Programmierung. Dabei haben wir uns vor allem mit den Unterschieden in den Anwendungsfällen und der Programmierung mit multiprocessing und asyncio beschäftigt.

Dazu haben wir mit Code-Beispielen gearbeitet, die zeigen, wie sich mit diesen Methoden Rechenzeit einsparen lassen kann oder eben nicht.

13. Dezember 2016 um 19:00 Uhr

Diesmal hatten ein vorweihnachtliches Treffen mit offenem Thema. Wir diskutierten über die letzten Entwicklungen bei Python. Dabei gab es immer neue Python-Bibliotheken zu entdecken.

8. November 2016 um 19:00 Uhr

Zum Treffen gab es einen Einführungsvortrag zu neuronalen Netzen. Theoretische Hintergründe wurde skiziert und eine Reihe von Implementierungen in Python vorgestellt: Basierend auf numpy, scikit-learn, tensorflow und keras. Die Folien und Code sind in diesem Repo zu finden. Die Präsentation mündete in eine Diskussion zu intelligenten Algorithmen im Allgemeinen und auch ihre gesellschaftlichen Auswirkungen.

09. August 2016

Rust for Pythonistas

The slides are available at github and slideshare.