Diskussion: mamba - conda-forge
Warum mamba?
https://github.com/mamba-org/mamba
Warum mamba?
https://github.com/mamba-org/mamba
Ich denke, dass ich heute nach der - sicher sehr kontroversen - Poetry-Session nicht mehr zu viel zu gebrauchen bin.
Wenn Ihr mit Micropython arbeiten wollt: ruft mich an, schreibt mir. Ich helfe gerne weiter.
Sorry, aber meine Batterie ist nach zwei Jahren Corona und Beinnahe-Pleite ziemlich ausgelutscht.
Poetry wird wohl das zukünftige Werkzeug für den Umgang mit Paketen und Venvs unter Python werden. Poetry erfüllt die PEP517, PEP518 und PEP621, welche den Weg für die Paket-Verwaltung unter Python festlegen. Es gibt auch schon eine Diskussion um die PEP682.
Ich reflektiere (ironisch, kein historischer Abriss!) das bisherige Arbeiten mit Python-Paketen und stelle dem Poetry gegenüber.
Im Live hacking zeige ich
- Die Installation von poetry auf einem frischen Debian bullseye.
- Die Anwendung von Poetry bei der Paket-Entwicklung
-- erzeugen,
-- Abhängigkeiten zu definieren,
-- builden
-- distributieren
- Poetry als venv-manager
Wir setzen seit zwei Jahren Poetry produktiv bei all unseren Kunden ein. Daher hoffen wir Eure Fragen zu Poetry kompetent beantworten zu können.
Volker und Sandra
Notizen, Links, Daten erfassen, mit Notizen versehen, Taggen und langfristig Archivieren. Querverweise erstellen und managen. Das alles mit Lebensdauern > 20 Jahre digital umsetzen. Session mit Austausch und Beitrag von Allen erwünscht.
Update:
Am Samstag Lightning Talk zu https://logseq.com
logseq: Org-mode oder Markdown on Steroids mit den Möglichkeiten von aktuellen Javascript UIs als Browser- oder Electron-App mit lokalem oder Cloudspeicher (serverless, OpenSource)
Integration mit Zotero und PDF-Markup Annotations.
Wer Org-Mode kennt, kennt die Möglichkeiten im Postprocessing mit Pandoc etc.
Mich interessiert die Orchestrierung von Notizen, Dokumentation und Publikation von Essenzen in Form von Präsentationen, Büchern (jaaa Bücher) und nichtlinearen Formaten wie Video, Lernsystemen Timelines etc. Insbesondere Integration mit Tools wie JupyterLab.
Wer mag seine langjährigen Erfahrungen mit seinen Workflows teilen und welche Rolle Python dabei spielt und wo andere Tools besser sind.
- Wie haben wir™ damals Programmieren gelernt?
- Was war unsere Motivation?
- Warum?
- Was hat geklappt?
- Was waren Momente, in denen man am liebsten alles hinwerfen wollte?
- Warum hat man weiter gemacht?
Hintergrund: Ich lehre an einer Hochschule und versuche Studierende zum Programmieren zu 'motivieren'. Es ist erschreckend, wie viele Studierende (selbst der Informatik,) nahezu kein Interesse am Programmieren bzw. Grundverständnis für Dinge, die in der Informatik üblich sind haben. Es fehlt regelrecht der 'Spaß am Gerät'.
Disclaimer: Ich habe nicht viele Antworten, sondern mehr Fragen.
Als erfahrener Python-Entwickler vorwiegend für wissenschaftliche und HPC-Anwendungen sind Webanwendungen eine nicht alltägliche Aufgabe für mich. Vor einiger Zeit habe ich eine kleine Webanwendung zur Verarbeitung von Formulardaten basierend auf Flask, Uwsgi und Nginx auf Ubuntu 20.04 zum Laufen gebracht, ins Netz gestellt und dieser HTTPS/TLS-Support via Letsencrypt verpasst. Eine intensive Recherche und mehrere Seiten Notizen zum Thema sagen mir, dass die Fallen bezüglich Sicherheit reichhaltig sind.
Wer hat Lust, einmal über diesen Prozess zu diskutieren und durch die relevantesten Sicherheitsaspekte zu gehen? Wie bekommt man so etwas als Anfänger halbwegs sicher ins Netz?
Bei unserem letzten Python Meeting Düsseldorf Sprint im Herbst 2021, haben Oliver Stapel und ich an einem Projekt gearbeitet, um die Protokolle der Plenarsitzungen des NRW Landtags maschinell auswertbar zu machen.
Im Vortrag zeige ich die Vorgehensweise, typische Fehlerquellen bei solchen Ansätzen, Protokolle in strukturierte Daten zu verwandeln und werde, wenn noch Zeit ist, auch das OpenSearch (=ElasticSearch) System zeigen, in das wir die Daten füttert haben.
PS: Ich bin nur Samstag dabei.
Mit der speziellen Methode `__repr__` lässt sich die Repräsentation einer Instanz einer eigenen Klasse anpassen. Diese Repräsentation zeigt Python z.B. im REPL (interaktiver Prompt mit >>>, IPython oder Jupyter). Wir wollen uns an schauen wie das geht. Ich würde kurz das Prinzip vorstellen. Danach würde ich gern über das Thema diskutieren. Wie sind eure Erfahrungen damit? Habt Ihre persönliche "Best Practises"?
Jupyter Notebooks nutzen auch die "halb-speziellen" (meine Wortschöpfung ;) ) Methoden `_repr_html` und `_rep_svg_` um visuell reichere Darstellungen via HTML oder SVG zu ermöglichen. Das Paradebeispiel dazu ist pandas. Ich würde die Diskussion dann auch gern um dieses Thema erweitern.
Das Python-Paket `dask` wird zunehmend populärer zum einfachen verteilten Rechnen auf Computer-Clustern. Dort, wo früher beispielsweise komplexe Technologien wie MPI noch unausweichlich waren, kann man derlei Dinge mittels `dask` heute oftmals in relativ einfach gehaltenem Python-Code verstecken. Parallelisierung und Verteilung der Rechenlast erfolgt, je nach Anwendung, nahezu automatisch und transparent.
`dask` erlaubt unter anderem zu `numpy.ndarray` kompatible `dask.array`-Objekte sowie zu `pandas.Dataframe` kompatible `dask.dataframe`-Objekte. Während die API im Vergleich zu `numpy` und `pandas` nahezu identisch ist, wird der Speicherinhalt entsprechender Objekte auf ein Cluster verteilt. Berechnungen erfolgen entsprechend ebenfalls verteilt. Dies erlaubt es, riesige Datenmengen durch den Zusammenschluss von ausreichend Computern gleichzeitig im RAM zu halten und auf beliebig vielen CPU-Kernen zu verarbeiten.
Ein durch `dask` selbst allenfalls unzureichend gelöstes Problem ist das eigentliche Deployment. `dask` lokal zu installieren und zu starten ist einfach. Es auf ein Cluster zu bekommen erfordert jedoch nach wie vor einiges an Hintergrundwissen und Zeit. Kommerzielle Dienste wie "Coiled" setzen an dieser Stelle an und bieten über Web-Oberflächen Cluster on-demand an, welche in konventionellen Cloud-Angeboten gehostet werden. Entsprechende Dienste sind jedoch oft deutlich teurer als die tatsächlich verwendeten Cloud-Ressourcen.
In diesem kleinen Tutorial gebe ich am Beispiel meines Python-Paketes `scherbelberg` eine Einführung, wie man in Eigenregie direkt ein Dask-Cluster in der Cloud des Anbieters Hetzner erstellen kann und vom eigenen Computer aus anspricht. Darauf aufbauend unternehme ich mit euch eine Reihe an kleineren Experimenten, um die Fähigkeiten von `dask` zu veranschaulichen.
- https://dask.org
- https://github.com/pleiszenburg/scherbelberg
---
Falls ihr dieses Tutorial live mitmachen wollt, benötigt ihr idealerweise eine Python-Installation auf Basis von Conda-Forge und CPython 3.8 auf Linux. Prinzipiell sollten das meiste jedoch auch auf Windows 10 (ohne WSL) und OS X funktionieren. Falls ihr `dask` nicht nur lokal, sondern auch auf einem echten Cluster testen wollt, benötigt ihr darüber hinaus einen Hetzner-API-Token.
- https://github.com/conda-forge/miniforge#miniforge3
- https://docs.hetzner.cloud/#getting-started
Wer hat Erfahrung mit der Async/Sync Programmierung und möchte sich darüber austauschen?
Das Thema:
Neue Web Frameworks, wie z.B. das populäre FastAPI funktionieren besonders gut, wenn man diese asynchron nutzt.
Was macht man aber, wenn die zu erledigende Arbeit nur strikt synchron läuft?
Ein Lösungsansatz ist es, eine "Queue" aus der Standard-Library zu nutzen, wie z.B eine Priority Queue. Der asynchrone Code schreibt einen Task in diese Queue. Ein synchroner Hintergrundsthread, arbeitet diese in einer Reihenfolge ab.
Ich möchte darüber diskutieren, wie man asynchron am Besten auf die Abarbeitung warten kann - unter Berücksichtung, dass es Timeouts geben kann, einige Tasks überhaupt nicht beantwortet werden und dass die Reihenfolge der Abarbeitung sich anhand einer Priorität ändert kann.
Spannend ist es, was die beste Lösung ist, es nur mit der Standard-Library (und FastAPI) zu machen, genauso interessant sind Erfahrungen mit anderen Libraries.
Setup, Konfiguration, Anpassung und Integration in komplexere Setups. Austausch von Erfahrungen und neue Ansätze zur Weiterentwicklung im Hinblick auf Postproduction und Multichannel Publikation von Aufzeichnungen und Ergebnissen. Rechtliche Aspekte usw. . Weitere Aspekte gerne in den Kommentaren ergänzen.
Ich geben einen sanften Einstieg in die Programmierung mit Micropython auf ESP32 Microcontrollern. Mit live Hacking und Einsteiger-tauglichen Beispielen.
Ihr seid ausdrücklich eingeladen Euch selber ein oder zwei ESP32 Controller und Zubehör sowie Sensoren kaufen. So mit rund 30 EUR könnt Ihr schon tolle Sachen machen, die mit z.B. einem RaspberryPi viel umständlicher und vor allen viel teuerer wären. Sprecht mich volker.jaenisch@inqbus.de bitte im Vorfeld rechtzeitig an, welche Hardware Ihr (für Euer Projekt) benötigt.
Hier Vorschläge für ein paar Komponenten. Z.B. von https://www.az-delivery.de auch der große Fluß hat viele Teile, aber aufpassen viele davon sind Plagiate.
ESP32:
Für Batterie-Anwendungen ESP32 lolin32. 9EUR. Wegen Akku bei mir nachfragen! Achtung Polung!!!
Für Kabel-gebundene Anwendungen nodeMCU-32s. 3er Pack 21EUR
Wenn Ihr die Controller ohne Beinchen kauft, benötigt Ihr einen etwas feineren Lötkolben. Das Teil von Opa aus dem Baumarkt ist dafür eher ungeeignet.
Als stabile Basis ist ein Breadboard unerlässlcih. Ab 4 EUR.
Ein Pack Jumper-Wire Kabel MM/FF/FM (5EUR) ist nötig, wenn Ihr nicht selber Eure Kabel crimpen könnt. Zum crimpen bitte Nachfragen.
Beliebte Sensoren:
DHT22 (T/RH),
BH1750 (Licht),
VL53L0X (Lidar ToF),
BME680 (T,RH, Gas),
SoMoSe (Bodenfeuchte)
Beliebte Ausgabe Geräte:
SSD1306 (OLED-Display)
Neopixel-LEDs (Adafruit)
Nützliches: TXS0108E (Pegelwandler 3.3-5.5V )
Für die Session wäre ein sinnvolles Minimum:
Breadboard, Jumper-Kabel,
ESP32 nodeMCU-32s, ein OLED-Display und einer der o.g. Sensoren.
Wenn weniger die Hardware als die Software im Vordergrund stehen soll gebe ich gerne meine Erfahrungen aus zwei Jahren Entwicklung mit Micropython weiter. Hierbei kann ich von der reinen Anwendung esphome/homeassistant/influxDB/grafana bis zur C-Programmierung von Micropython-(Erweiterungen) viel erzählen.