Blog

  • Notizen: Dash von plot.ly auf uberspace

    Notizen: Dash von plot.ly auf uberspace

    Gestern hat plot.ly Dash veröffentlicht. Ein Open-Source-Framework zum Erstellen von interaktiven Daten-Dashboards. Ich finde es spannend, weil es mehrere Tools kombiniert, mit denen ich bereits gearbeitet habe und gerade bei kleinen Projekten helfen kann, schneller zu Ergebnissen zu kommen. Plot.ly arbeitet mit Python und nutzt im Frontend D3. Dash setzt auf Flask und React.

    Dash hat direkt funktioniert, weshalb ich ein kleines Testprojekt damit umsetzen wollte. Da ich beim Deployen dann doch auf ein paar Schwierigkeiten gestoßen bin, wollte ich hier festhalten, wie ich vorgegangen bin. Für mein späteres ich und falls es sonst jemanden interessiert. Meine Admin-Fähigkeiten beschränken sich auf ein Minimum. Die Notizen sollten daher nicht als Anleitung gesehen werden. Falls ihr Fehler oder problematische Dinge seht, bitte ein Kommentar schreiben.

    Code auf Webspace laden

    Ich mag uberspace. Deshalb habe ich es auch für dieses Experiment genutzt.

    Als Code-Grundlage habe ich die dash-hello-world-Demo genutzt. Im Ordner html habe ich einen Unterordner Projekte und darin dash2 angelegt. Kompletter Pfad: ‚/var/www/virtual/dash/html/projekte/dash2‘. Dorthin habe ich den hello-world-Code gepackt. Die app.py habe ich umgeschrieben, sodass einige Packages aus der requirements.txt überflüssig wurden. Da ich es aber erst später gemacht habe, habe ich dennoch alle installiert. Klüger wäre es das vorher zu machen. Man kann aber auch später Packages wieder löschen oder die virtuelle Umgebung neu machen. Meine app.py hat man Ende so ausgesehen: https://gist.github.com/lucahammer/4f138ed70381b1733679dd39e81be1fa.

    Virtuelle Umgebung erstellen

    Da die hello-world-Demo auf Python2.7 bestand, habe ich den Versuch mit 3.6 abgebrochen und eine 2.7 Umgebung erstellt. Also in den zuvor erstellten Ordner wechseln und mit folgenden Befehlen die Umgebung erstellen und betreten.
    virtualenv venv
    source venv/bin/activate

    Details im uberspace-wiki.

    Packages installieren

    Nun werden die benötigten Packages installiert. Wie oben erwähnt, könnt ihr die requirements.txt an eure Bedürfnisse anpassen. Ich habe sie erstmal so gelassen.
    pip install -r 'requirements.txt'

    Erster Test

    Um zu sehen, ob der Code grundsätzlich funktioniert habe ich den den Development-Server mit dem Befehl python app.py gestartet. (Alles im venv). Da dieser standardmäßig über Port 8050 startet, habe ich den Port zuerst in der app.py angepasst. Wie ihr einen freien Port bei uberspace findet, ist ebenfalls im Wiki ausführlich beschrieben.

    Damit die Website von außen erreichbar ist, muss der Port weitergeleitet werden. Dazu habe ich in der .htaccess (im Ordner /html) folgende Anweisungen genutzt:
    RewriteEngine On
    RewriteRule ^(.*) http://localhost:62799/$1 [P]

    Der Port muss natürlich entsprechend dem in app.py genutzten ausgetauscht werden.

    Wenn alles geklappt hat, kann man die Website nun über die uberspace-Adresse aufrufen.

    Umsteigen auf gunicorn

    Da der Entwickler auf reddit auf gunicorn verwies und ich mich erinnerte, damit bei Django auf uberspace schon einmal gearbeitet zu haben, habe ich mich entschieden es damit zu versuchen.

    # gunicorn installieren
    pip install gunicorn
    # Testen ob es funktioniert
    gunicorn --error-logfile - --reload --chdir /home/$USER/html/projekte/dash2 --bind 127.0.0.1:62799 app:server
    # mit ctrl+c abbrechen
    # über daemon-tools dauerhaft einrichten
    test -d ~/service || uberspace-setup-svscan
    uberspace-setup-service gunicorn gunicorn --error-logfile - --reload --chdir /home/$USER/html/projekte/dash2 --bind 127.0.0.1:62799 app:server

    Auch hier wieder: 62799 durch den vorher gewählten Port austauschen.

    Die .htaccess könnte nach dem Vorschlag von uberspace angepasst werden:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteBase /
    RewriteRule ^(.*) http://127.0.0.1:62798/$1 [P]
    RequestHeader set X-Forwarded-Proto https env=HTTPS

    Fertig

    Nun sollte Dash laufen. Wenn Änderungen am Server vorgenommen werden, kann der Daemon mit dem reload-Befehl angestoßen werden:
    svc -h ~/service/gunicorn

  • Wochenrückblick 2017-12 bis 16: Wien, Visualisierung, Tools, Vortrag

    Monatsrückblick April. Ausnahmsweise oder der neue Standard. Wir werden es nächste Woche erfahren.

    Der neue Geschirrspüler ist angekommen. Er funktioniert. Die Spedition hat das Altgerät nicht mitgenommen. Sie haben behauptet, dass es in ihren Unterlagen nicht steht und sie ihn deshalb nicht mitnehmen können. Ende der Diskussion. Meine Unterlagen, wo es stand, interessierten sie nicht. Also Amazon angeschrieben, was los sei. Drei Tage später musste die Spedition nochmals kommen und ihn abholen. Hätte auch einfacher gelöst werden können, wenn die Unterlagen nicht als absolute Wahrheit betrachtet worden wären.

    Vom 29. bis 30. Mai war die MIT Europe Conference in Wien. Ich mag das MIT. Ich war mit Fresh Van Root für die Social Media Live-Betreuung beauftragt. Wir haben auf dem Blog zusammengefasst, was wichtig bei der Betreuung von Events auf Social Media ist. Das erste Mal seit etwa zehn Jahren, dass ich beruflich einen Anzug trug. Die Konferenz selbst war spannend mit guten Vorträgen.

    Den Besuch in Wien habe ich zusätzlich genutzt um Freunde zu treffen. Und Thomas Meyer von swat.io. Die suchen übrigens einen Content Marketing Manager, falls jemand Interesse hat.

    Mia hat für eine Woche den Instagramaccounts von Lottie Dolls übernommen. Die Fotos und Geschichten waren großartig. Zeigen auch die höchsten Interaktionszahlen die der Account je hatte (Abseits von Promotions).

    Mateschitz hat ein kontroverses Interview gegeben. Ich habe mir angesehen, wer wie dazu getwittert hat. Neben den Medienmenschen hat es auch viele Personen mit menschenfeindlichen Ansichten auf die Tweetfläche gerufen.

    Das re:publica Programm wurde veröffentlicht. Mein Vortrag rund um Trolle und Datenvisualisierung findet am Montag von 13:30 bis 14:00 Uhr auf Stage 3 statt. Ich habe ihn erst viermal umgeschrieben.

    Ich habe ein kleines Tool zur Auswertung von Twitteraccounts geschrieben. Im Moment extrahiert es alle Domains der letzten 600 bis 1000 Tweets eines Twitteraccounts. Bisher etwa zwei Tage investiert. Irgendwann soll es in die Richtung von Tweetstats gehen, das leider schon länger nicht mehr aktualisiert wird.

    Ich bin ein Libertarian Socialist.

    Rund um den Bundesparteitag der AfD wurde der Hashtag #koeln2204 genutzt. Ich habe eine Visualisierung mit den Accounts erstellt, die den Hahstag genutzt haben oder in Tweets damit erwähnt wurden. Reichweitenmäßig meine bisher erfolgreichste Visualisierung und Tweet. Derzeit bei knapp 140k Views. Wenn man mehr als 100k(?) Views an einem Tag hat, schaltet die Statistik in stündlich statt täglich um und die Einzelstatistik wird alle paar Sekunden aktualisiert.

    Mein persönliches Highlight war der Retweet von Jan Böhmermann.

    Ab morgen bin ich wieder regelmäßig in der Uni. Arbeit läuft auch. Nächsten Sonntag dann Berlin. re:publica 2017.

    [grey_box]Weitere Rückblicke: Sascha (pausiert), Björn, Jürgen, Jana, Melanie, Marcel und Cecilia.[/grey_box]

  • Wochenrückblick 2017-10 und 11: Tirol und Geschirrspüler

    Doppelfeature. Erst wollte ich am Montag nachholen, dann am Dienstag, dann am Mittwoch, dann habe ich es vergessen. Daher gibt es dieses Mal einfach zwei Wochen. Ihr werdet das verkraften.

    Woche 10

    Am Montag gab es Schnee. Riesige, großartige Flocken. Ich habe ein Video gemacht. Mit meinem Vater und dem Kind machte ich einen Schneespaziergang. Wir besuchten die Esel und Alpakas im Tal unten, bauten eine Art Schneemann und machten eine Schneeballschlacht. Wie damals.

    Wir waren im Stubay. Schwimmbad in dem ich als Kind oft war, das vor ein paar Jahren komplett renoviert wurde. Ist schick geworden, aber auch teuer.

    Nachdem wir das letzte Mal in Innsbruck frühstücken waren und das eher umständlich und stressig war, sind wir dieses Mal nur zum Bäcker Ruetz in Schönberg gefahren. Entspannt, leckere Sachen und nur ein paar Minuten entfernt.

    Donnerstag kurz nach Innsbruck ins Einkaufzentrum. Ernüchternd.

    Der Bauernmarkt in Fulpmes war überraschend klein und dennoch haben wir mehr mitgenommen als bei vielen größeren. Tolle Bienenprodukte, Brot, Käse, Wurst und Gehäkeltes.

    Samstag mit der Stubaitalbahn nach Innsbruck. Das letzte Mal vor etwa zwanzig Jahren damit gefahren. War sehr schön. Auf der anderen Talseite, durch den Wald, mit tollem Ausblick, über kleine Brücken. Kann ich nur empfehlen. Auch in der Stadt überraschend wenig los. Touristen seien auf den Pisten, meinte mein Vater.

    Im Ludwig tolle Burger gegessen.

    Sonntags die vielleicht beste Pizza im Stubaital bestellt. Bei Gasthaus Traube.

    Wieder aufs Dach gestiegen, um ein schnelles Panorama aufzunehmen.

    Woche 11

    Montag Schlutzkrapfen von einer Bäuerin in Mieders und packen.

    Heimfahrt über München und Kassel.

    Die restliche Woche Arbeit aufgeholt und mich mit meinem ewigen Geschirrspülerthema beschäftigt.

    Während wir in Tirol waren hat ein anderer Elektriker die Heißluft unseres Backofens repariert und sich den inzwischen wieder kaputten Geschirrspüler angeschaut. Man müsste die komplette Bodenwanne austauschen und natürlich noch ein neues Heizelement einbauen. Rentiert sich nicht. Habe ich inzwischen eingesehen. Bereue dennoch nicht es versucht zu haben. Aber nun war es an der Zeit einen neuen Geschirrspüler zu kaufen.

    Weil das Problem der Spülmaschine ein typisches war, war ich zuerst entschlossen ein Modell eines anderen Herstellers zu wählen. Wie bei den meisten größten Käufen habe ich versucht einen Überblick über den Markt zu bekommen. Zuerst welche Marken von welchen Herstellern es gibt und dann wie die einzelnen Produktreihen aufgebaut sind. Meist sind die tatsächlichen Optionen wesentlich reduzierter als ein erster Blick vermuten lässt. Bei meiner Suche nach einem Fernseher für einen Freund zeigte sich, dass in der gewünschten Größe lediglich sechs Modelle in jeweils zwei Ausführungen relevant waren. Aber wie ist das mit Geschirrspülern? Überraschenderweise scheinen Geschirrspülermärkte sich stärker an Nationalstastengrenzen zu halten. Vzug bekommt man quasi nur in der Schweiz, elektra bregenz nur in Österreich. Der deutsche Markt wird von B/S/H Group dominiert. Die Gruppe führt zahlreiche Marken, deren Modelle sich aber nicht grundsätzlich voneinander unterscheiden. Oft gibt es baugleiche Modelle unter zwei oder mehr Marken. Zu B/S/H gehören Bosch (204 vollintegrierbare Modelle laut Geizhals.de), Siemens (216), Neff (115), Constructa (9) und zahlreiche andere. AEG (67) erfreut sich auch einer gewissen Beliebtheit, allerdings wurde auch dort die Produktion vor einigen Jahren optimiert, wodurch die Langlebigkeit gelitten hat. Beko (33) und Grundig (10) gehören wie elektra bregenz zu Arçelik A.?.. Weiters sind da Bauknecht (38), Amica (12) Exquisit (10) Gaggenau (13) Gorenje (20) Küppersbusch (13) und Smeg (28). Am teuersten, aber angeblich auch mit der höchsten Qualität ist Miele (41). Ich war kurz davor mich für Miele zu entscheiden. Kostet zwar das doppelt bis dreifache und der Elektriker meinte, dass sie zwar seltener Probleme haben, aber trotzdem oft genug, sodass er sie nicht nehmen würde. Bei Stiftung Warentest haben immer wieder Miele und B/S/H Geräte die Nase vorne.

    Geschirrspüler funktionieren alle ziemlich ähnlich. Innerhalb einer Marke gibt es selten unterschiedliche Bauweisen. Sie unterteilen zwar oft nach Serien, aber die Geräte selbst sind dabei ziemlich ähnlich.

    Zuerst steht die Entscheidung für die Bauform. Bei uns durch die Küche bedingt vollintegriert. Die Front kommt in dem Fall von der Küche und wird an das quasi nackte Gerät drangeschraubt. Bedienelemente sind auf der Oberseite der Türe und nicht von außen sichtbar. Teilintegriert wäre, wenn die Bedienelemente vorne sind, aber darunter ebenfalls eine Platte von der Küche. Dann gibt es noch Unterbau, wo die Vorderseite komplett vom Geschirrspüler ist oder Freistehend, wo der Geschirrspüler eine Oberseite besitzt.

    Während es mehrere unterschiedliche Breiten gibt, sind bei uns eigentlich nur 45cm und 60cm relevant. Auch bei der Höhe sind nur normal (82cm) oder hoch (86cm) relevant. Hohe haben einen etwas größeren Innenraum. Passt bei uns aber nicht. Breite durch den alten mit 60cm vorgegeben. 45cm ist für eine Familie auch zu klein.

    Dann kommen auch schon die unterschiedlichen Features. Besteckschublade statt Besteckkorb? Höhenverstellbare Geschirrkörbe? Warmwasseranschluss? Anzahl der Programme und Arten der Programme? Display? Automatische Türöffnung? Restzeitanzeige auf dem Fußboden vor dem Geschirrspüler? Startzeitvorwahl? Lautstärke? Wasserverbrauch? Stromverbrauch?

    Wir entschieden uns für einen Besteckkorb, zumindest A++ Energieeffizienz, maximal 44dB(A), Auqastop und Infolight (kleine Lampe in Bodennähe, die rot leuchtet, wenn der Geschirrspüler läuft). Anschließend haben wir uns für das günstigste Modell entschieden, wie der Elektriker uns geraten hat. In unserem Fall war dies der Bosch SMV68N20EU (Affiliatelink) für 450€, welcher von Stiftung Warentest 2015 mit Gut bewertet wurde. Laut Amazonbewertungen hatte dieser ein Problem mit einem hohen Piepston im Betrieb, dieser scheint aber bei den neueren Geräten nicht mehr vorhanden zu sein. Günstiger wären zwei Modelle von Bauknecht gewesen, da uns von diesen aber explizit abgeraten wurde, habe ich sie rausfallen lassen. Auch interessant wäre der Beko DIN 26320 W, aber da er recht neu auf dem Markt ist, gibt es wenig Infos dazu. Oder der Grundig Edition 70, welcher wiederum mit etwas über 5 Jahren Garantie daherkommt. Beider derzeit bei Mediamarkt mit 30€ Gutschein-Dings und versandkostenfreier Lieferung erhältlich. Ich vermute der Grundig ist nahezu baugleich mit dem Beko. Und wie ich das so schreibe, frage ich mich, ob das nicht die bessere Option gewesen wäre. Buyers remorse kann ich.

    Am Dienstag Abend soll das Gerät da sein.

    [grey_box]Weitere Rückblicke: Sascha (pausiert), Björn, Jürgen, Jana, Melanie, Marcel und Cecilia.[/grey_box]

  • Wochenrückblick 2017-9: Tirol, Alpenzoo, Ponys und Schnee

    Wir sind in Tirol und gerade fallen wunderschöne, dicke Schneeflocken vom Himmel. Das Kind ist mit Opa bei den Alpakkas.

    Die Zugfahrt am Mittwoch war ohne nennenswerten Vorkommnissen. Am Donnerstag haben wir vormittags Lebensmittel gekauft und uns nachmittags bei Ikea eine 240x200cm große Bettdecke und für Mia ein Kissen geholt.

    Am Freitag ging es am Vormittag in den Alpenzoo. Fotos auf Google Maps. Wie auch die letzten Male, als wir in Tirol waren. Am Morgen ist dort wenig los und die Tiere werden gefüttert. Auch schön am Alpenzoo: Dort gibt es nur Tiere, die es aktuell oder in der Vergangenheit in den Alpen gegeben hat.

    Gestern ging es zum Tag der offenen Türe der Volksschule Mieders. Wurde komplett neu gebaut. Hat uns gut gefallen. Alles sehr modern. Viel Holz. Die meisten Tafeln Touchscreens. Tafelwischen ist nur noch ein Knopfdruck.

    Am Nachmittag fuhren wir zum Natterer Boden. Ein Bauernhof und Restaurant, wo es diverse Tiere gibt, die man teilweise streicheln kann. Als wir einen kleinen Spaziergang drumherum gemacht haben, kam uns ein Pony durch den Wald entgegen. Ich habe mich in den Weg gestellt und versucht es aufzuhalten, hatte dann aber doch nicht genug Mut zuzupacken, als es nicht abbremste. Als wir wieder zum Hof kamen, wussten sie schon Bescheid. Wir aßen einen leckeren Kaiserschmarrn und Topfenpalatschinken.

    Heute bleiben wir zuhause und schauen dem Schnee zu.

    [grey_box]Weitere Rückblicke: Sascha (pausiert), Björn, Jürgen, Jana, Melanie, Marcel und Cecilia.[/grey_box]

  • Wochenrückblick 2017-8: Klausuraufsicht, Klausurkorrektur und Geschirrspüler

    Eine Hoch-Tief-Woche. Ich weiß nicht mehr, was ich am Montag gemacht habe. Aber am Dienstag hatte ich Klausuraufsicht. Im Hörsaal L1. Ein recht neuer Hörsaal. Ich glaube zwei bis drei Jahre alt. Vielleicht täusche ich mich aber auch. Alles dunkel gehalten. Modern. Die Sitzplätze stark ansteigend, sodass alle Studierenden einen guten Blick nach vorne haben. Bei einer Klausur irrelevant. Die Tafeln mit elektrischem Antrieb, weil man sie per Hand gar nicht so hoch schieben könnte. Ebenfalls irrelevant. Bei Klausuren ist es schwierig alle Studierenden zugleich im Auge zu haben. Wir waren zu zweit und teilten uns meist auf, sodass wir jeweils schräg gegenüber standen. Etwa eine Person rechts oben hinter den Studierenden und eine Person links unten vor den Studierenden. Durch die starke Steigung hat man, zumindest gefühlt einen schlechteren Einblick. Dafür hat dieser Hörsaal eine eigene Überwachungsbrücke. Vermutlich nicht primär dafür gedacht, aber wer weiß. Jedenfalls gibt es gibt es neben den Tafeln eine Stiege, über die man auf die Höhe der letzten Sitze des Hörsaals kommt und dort eine Hochebene, von der man alle Studierenden sehr gut beobachten kann. Man sieht von oben auf jeden Tisch und erkennt verdächtige Bewegungen noch besser. Nachteil dabei ist die Entfernung. Ich gehe grundsätzlich nicht davon aus, dass die Studierenden schummeln. Meine Hauptaufgabe ist ihnen zu helfen, wenn etwas unklar ist. Und wenn man dann dort oben steht, muss man erst die ganzen Stiegen wieder herunterlaufen, um zu den Studierenden zu kommen. Dennoch mochte ich den Blick von dort.

    Am Mittwoch habe ich dann Korrekturmarathon gemacht. Normalerweise brauche ich ein paar Tage bis eine Woche. Die Klausur hatte 12 Seiten, 43 Studierende nahmen teil. Erstmals habe ich genau die Zeit gemessen, die ich gebraucht habe. Mit toggl. 6 Stunden und 55 Minuten. Am Freitag kamen nochmals ein oder zwei Stunden dazu, weil ich noch ein paar Auswertungen gemacht habe, bevor ich alles dem Professor geschickt habe. Dieser wird sich um die finale Korrektur kümmern.

    Je Seite habe ich zwischen 5:40 und 40 Minuten gebraucht. Siebeneinhalb Sekunden für ein Blatt finde ich ziemlich gut. Aber auch mit einer Minute pro Blatt bei den aufwändigeren, bin ich zufrieden. Im Schnitt habe ich pro Klausur 6 Minuten gebraucht. Je Blatt 30 Sekunden. (31+17+15+10+6+41+38+40+17+13+20+36). Anschließend eine Stunde um die Punkte von den Klausuren in Excel zu übertragen, eine halbe Stunde, um dort alles zu überprüfen und nochmals 45 Minuten, um die Gesamtpunktezahlen nach Themenbereich per Hand auf die Klausuren zu schreiben.

    Am Donnerstag stand Fresh Van Root im Vordergrund.

    Freitag nochmals Unizeug und am Samstag Familientag mit Spazieren und Kinderzimmer aufräumen.

    Am Dienstag ist die neue Heizpumpe für den Geschirrspüler gekommen. Habe ich direkt eingebaut und sie hat bis heute brav ihren Dienst getan. Sechs Spülgänge später erneut das Problem, dass das Wasser kalt bleibt. Ich hatte erst Sorge, dass ich etwas falsch gemacht habe. Nachdem ich aber etwas recherchiert und in einem Forum nachgefragt habe, stellte sich heraus, dass es öfters passiert, dass Heizpumpen nach kurzem Einsatz kaputt gehen. Also beim Ersatzteillieferanten als fehlerhaft reklamiert. Mal schauen, was herauskommt. Vorerst wieder per Hand spülen. Ist das nicht eine tolle Sidestory, die sich durch meine Rückblicke zieht? Ich könnte gut darauf verzichten.

    Mein Vortrag bei der re:publica wurde angenommen. Offizielle Bestätigung steht noch aus, aber aus organisatorischen Gründen, wurde ich schon informiert. Ich werde also demnächst ein Early Bird Student Ticket zu verkaufen haben. Ich freue mich sehr auf die re:publica und hoffe die oder den anderen von euch dort zu treffen.

    Ubers Firmenkultur ist sexistische Kackscheiße.

    Medium auf Deutsch wird eingestellt.

    Laurie Penne hat einen sehr guten und sehr langen Artikel über Milo Yiannopoulos und seine Gefolgschaft geschrieben.

    Ab Mittwoch sind wir für zwei Wochen in Tirol. Das wird hoffentlich mehr schön als anstrengend.

    [grey_box]Weitere Rückblicke: Sascha (pausiert), Björn, Jürgen, Jana, Melanie, Marcel und Cecilia.[/grey_box]