Archiv des Autors: stk

Über stk

Medieninformatik-Student mit Visionen. Geht aber trotz Helmut Schmidts eindringlicher Aufforderung deswegen nicht zum Arzt.

Cleaning up the SWU GTFS feed with pygtfs and sqlite3

For a Top Secret Project™ we are currently using SWU’s official GTFS feed. Since we had to clean up the feed a bit and ran into some errors, I thought it best to document our workflow to save it for posterity – it might even help others ;

Step 1: Loading into sqlite

For me, the first step is always to load the feed into sqlite3, since it makes it easier to follow through with all the manipulations I have in mind for later.

My current tool of choice is pygtfs, which can be installed through pip. If you don’t have sqlite installed, you might want to do that now, too.

pip3 install pygtfs
apt install sqlite3

pygtfs brings along the handy gtfs2db tool, which allows for importing your feed into a database right from the command line:

gtfs2db append ~/Downloads/ gtfs.db 

This command will, however, fail after importing all the records and trying to write it to the database, because it can’t read a datetime (ValueError: time data “ does not match format ‚%Y%m%d‘). After some digging I found the missing feed_start_date and feed_end_date in feed_info.txt to be the culprit. According to spec, they are merely optional, but the gtfs2db script seems to depend on it. Nothing a quick edit in the text editor of your choice can’t fix. All there is left to do is to retry the import, and open a sqlite3 session with the newly created database. I am in the habit of switching on the headers and into column mode right from the get-go.

sqlite3 -header -column gtfs.db 

Step 2: Exploring the stops table

For our project, we wanted to clean up the stops table a bit. First of all, in violation of the spec, in the SWU feed the stop_id is multiply assigned to every stop point („Haltepunkt“) within a stop („Haltestelle“). We can find this rather easily:

SELECT stop_name, count(stop_code) FROM stops GROUP BY stop_code ORDER BY count(stop_code) DESC limit 15;
stop_name count(stop_code)
---------- ----------------
ZOB Ost 9
Staufenrin 9
Universit 8
Donaustadi 6
Egertweg 6
Römerplat 6
Gewerbesch 6
Stadtwerke 5
Eselsberg 5
Sonnenstra 5
Theodor-He 5
Kuhberg Sc 5
Hauptbahnh 4
Theater 4

Furthermore, some stop points (i.e., the platforms within one stop) are assigned doubly or even thrice with the same coordinates. This happens if one stop point is being served by different operational branches. In the case of the SWU feed, the internal data format distinguishes between bus, tram and night bus service. This means that if a stop point is being served by all three of those branches, it will appear thrice in the data set:

SELECT stop_id, stop_code, stop_name, stop_lat, stop_lon, COUNT(distinct stop_lon) FROM stops GROUP BY stop_code HAVING count(distinct stop_lon) > 1 ORDER BY count(distinct stop_lon) DESC limit 20;
stop_id stop_code stop_name stop_lat stop_lon COUNT(distinct stop_lon)
---------- ---------- ----------------- ---------- ---------- ------------------------
3579 1240 Universität Süd 48.421839 9.956403 6
3559 1383 Gewerbeschulen K� 48.384625 9.959908 6
1869 1700 ZUP 48.39179 10.0032 6
117 1050 Staufenring 48.403521 10.004344 5
3745 1200 Eselsberg Hasenko 48.414326 9.962903 5
3557 1390 Kuhberg Schulzent 48.383775 9.955289 5
1235 1052 Donaustadion 48.405101 10.006927 4
145 1072 Mecklenburgweg 48.43453 10.024493 4
147 1073 Thüringenweg 48.433379 10.020177 4
149 1074 Haslacher Weg 48.429919 10.013786 4
3260 1087 Egertweg 48.42583 10.01243 4
217 1171 Manfred-Börner-S 48.41967 9.942766 4
3581 1241 Botanischer Garte 48.424912 9.956829 4
3584 1245 Kliniken Wissensc 48.424331 9.952453 4
3586 1246 Universität West 48.422234 9.947201 4
3565 1360 Römerplatz 48.39077 9.975428 4
3561 1393 Grimmelfinger Weg 48.38564 9.965312 4
774 1506 Benzstraße 48.365706 9.941817 4
75 1008 Hauptbahnhof 48.39983 9.98404 3
3571 1020 Stadtwerke 48.4031 9.986038 3

I hacked together the following python script that will unify these stop points so that each coordinate will appear exactly once. That is, it will output SQL statements to be pasted into sqlite which should do the trick. Hacky and crappy, but there we go. Note that I have uncommented (and did not test) the transfers bit, since the SWU feed does not use transfers. Note that this leaves the multiply assigned stop_ids untreated, as of now.

sched = pygtfs.Schedule("gtfs.db")
sq = sched.stops_query
d = {}
for each in sq.all():
if each.stop_code in d:
for existing in d[each.stop_code]:
if (d[each.stop_code][existing].stop_lat == each.stop_lat) and (d[each.stop_code][existing].stop_lon == each.stop_lon):
print('UPDATE stop_times SET stop_id = ' + d[each.stop_code][existing].stop_id + ' WHERE stop_id = ' + each.stop_id + ';')
#print('UPDATE transfers SET from_stop_id = '+ d[each.stop_code][existing].stop_id + ' WHERE from_stop_id = ' + each.stop_id + ';')
#print('UPDATE transfers SET to_stop_id = '+ d[each.stop_code][existing].stop_id + ' WHERE to_stop_id = ' + each.stop_id + ';')
print('DELETE FROM stops WHERE stop_id = ' + each.stop_id + ';')
d[each.stop_code][each.stop_id] = each;
d[each.stop_code] = {};
d[each.stop_code][each.stop_id] = each

Step 3: Removing Deadheads

One bug in the current SWU feed is that it includes trips that should not be facing towards the customer. Namely, all the trips between the bus depot and the first stop on one vehicle’s Umlauf, and the return trips towards the depot. This might result in strange routing results and will definitely make the transitfeed validator complain. The following SQL statements will delete both the stop_times and the trips for those deadheads:

DELETE FROM trips WHERE trip_id IN (SELECT DISTINCT trip_id FROM stop_times WHERE stop_id IN ("170", "171"));
DELETE FROM stop_times WHERE trip_id IN (SELECT DISTINCT trip_id FROM stop_times WHERE stop_id IN ("170", "171");

Step 4: Re-Exporting the data, casting times past 24:00:00 without using strftime

This was one part which kept me scratching my head for way too long. Simple full-table dumps are not a big issue:

sqlite3 -header -csv gtfs.db 'SELECT * FROM trips'  > trips.txt

After some successfull exports, I hit a bump in the road with the stop_times table because of the way GTFS and sqlite each store times. A vehicle departing one minute before midnight from one stop and arriving two minutes past midnight at the next stop will be modeled with the textual entries of „23:59:00“ and „24:02:00“, respectively. Since the operational day ends somewhen between midnight and the wee hours of the next day, it is not unusual to encounter departure/arrival times that read something like „27:35:00“ – at 03:35 a.m. of the following day, but still within the validity period of the previous/current day (I am getting mixed up with terminology myself, I guess)

However, pygtfs will convert all those textual time entries into DateTime objects, which means that the two times above would be stored as 1970-01-01 23:59:00.000000 and 1970-01-02 00:02:00.000000. And any manipulation with strftime and other functions to manipulate Date and Time didn’t get me anywhere – or, to put it differently, all the usual functions correctly and stubbornly refused to return non-standard times that use funny hours like 24 or anything above.

In the end, the statement to get GTFS compliant times was not that hard, after all. If you ever want to calculate hours, minutes and seconds past a date, this is the way to go:

SELECT trip_id, printf("%02d",((strftime("%s", "arrival_time") - strftime("%s", "1970-01-01 00:00:00.00000")) / (60*60))) || ":" || printf("%02d",(((strftime("%s", "arrival_time") - strftime("%s", "1970-01-01 00:00:00.00000")) % (60*60)) / 60)) || ":" || printf("%02d",(((strftime("%s", "arrival_time") - strftime("%s", "1970-01-01 00:00:00.00000")) % 60) % 60)) AS arrival_time, printf("%02d",((strftime("%s", "departure_time") - strftime("%s", "1970-01-01 00:00:00.00000")) / (60*60))) || ":" || printf("%02d",(((strftime("%s", "departure_time") - strftime("%s", "1970-01-01 00:00:00.00000")) % (60*60)) / 60)) || ":" || printf("%02d",(((strftime("%s", "departure_time") - strftime("%s", "1970-01-01 00:00:00.00000")) % 60) % 60)) AS departure_time, stop_id, stop_sequence, stop_headsign, pickup_type, drop_off_type, shape_dist_traveled, timepoint FROM stop_times

But, as @LucasWerkmeistr pointed out, in this case we are always subtracting 1970-01-01 00:00:00.00000 – which is zero. The simplified version for exporting the tables is as follows:

sqlite3 -header -csv gtfs.db 'SELECT trip_id, printf("%02d",(strftime("%s", "arrival_time") / (60*60))) || ":" || printf("%02d",(strftime("%s", "arrival_time") % (60*60)) / 60) || ":" || printf("%02d",(strftime("%s", "arrival_time") % 60) % 60) AS arrival_time, printf("%02d",(strftime("%s", "departure_time")) / (60*60)) || ":" || printf("%02d",(strftime("%s", "departure_time")  % (60*60)) / 60) || ":" || printf("%02d",(strftime("%s", "departure_time") % 60) % 60) AS departure_time, stop_id, stop_sequence, stop_headsign, pickup_type, drop_off_type, shape_dist_traveled, timepoint FROM stop_times'  > stop_times.txt

Note that the export mentions the shape_dist_traveled and timepoint columns. This is because this iteration was not made on a squeaky clean SWU feed, but after some massaging with Conveyal’s GTFS Editor. But that will be a topic for another time 😉

edited on 2019-03-16 to fix errors in the last two scripts and to clarify stuff

Offene Schnittstellen fuer intermodale Mobilitaet

Die Konsequenz des obigen Zitats finde ich sehr spannend. Mobilitaet in der beschriebenen Form eines gemeinsam gedachten und funktionierenden Systems kann also nur funktionieren, wenn a) ein Anbieter alles aus einer Hand anbietet. Das scheint das Modell zu sein, das einige Verkehrsverbuende fuer sich zu beanspruchen scheinen: Alles soll in ihre App. Und auch einige privatwirtschaftliche Anbieter wollen jeweils marktbeherrschender Platzhirsch werden – denn wenn ihnen die Paymentfunktion gehoert, haben sie den Markt gecornert.

Modell b) waere dagegen, die einzelnen Komponenten fuer Mobilitaet nach den Modellen der Unix-Philosophie oder des Internets zu betrachten: Jede Komponente macht ihren Teil wirklich richtig gut, und laesst sich ueber definierte Schnittstellen zu einem groesseren Ganzen zusammenfuegen.

Die grosse Frage ist in Deutschland seit Jahren, wie man die Schnittstellen in diese Mobilitaet hineinbekommt. Selbst Soll-Fahrplandaten für den ÖPNV sind in Deutschland immer noch Mangelware, und Verbünde preisen ihre architektonischen Inselloesungen zu Echtzeit-Fahrplanauskuenften mit der Marketingluege „Open Services“ an, obwohl sie weder Open noch ein sich in ein Gesamtsystem einbetten lassender Service sind. Und private Mobilitaetsdienstleister nutzen zwar gerne oeffentlichen Raum im Sinne des Gemeingebrauchs fuer ihre Dienste, geben aber im Gegenzug enorm ungern Daten wieder preis.

Max und Consti haben dieser Tage einen laengeren Artikel darueber geschrieben, wie die City of Los Angeles per kommunaler Satzung an dieser Stelle mitbestimmt und den Markt im Sinne des Gemeinwohls steuert. Die Stadt hat sowohl eine Satzung als auch gleich einen passenden Datenstandard verabschiedet, an den sich alle halten muessen, die innerhalb der staedtischen Jurisdiktion Dienste anbieten wollen. Das Motto: Wer hier Geschaefte machen will, muss das auch sozialvertraeglich tun und dafuer Sorge tragen, dass das eigene System sich in das groessere Mobilitaetssystem einbetten laesst.

Im Artikel wird darauf verwiesen, dass Elektrokleinroller jetzt bald auch in Deutschland legal im Strassenverkehr einsetzbar sein werden, und dadurch bald auch Scooter-Sharinganbieter wie Lime und Bird auf den deutschen Markt vordringen werden. Das sei eigentlich der ideale Zeitpunkt, auch in Deutschland kommunale Satzungen zu verabschieden, die sich an der von Los Angeles orientieren.

Mehr Lektuere dazu gibt es im API-Policy-Paper der Transit App, mit einer Menge von Links, die sich zu lesen lohnen.

All your Gesundheitsakten, vorher

Auf dem 35c3 gab es einen recht sueffisanten Vortrag, wie die Gesundheits-App Vivy aufgemacht und alle dort versammelten Sicherheitsluecken vorgefuehrt wurden.

Ich habe mich zu Studienzeiten recht viel mit widerspenstigen Mediziner*innen herumgetrieben, die mittlerweile im Berufsleben angekommen sind (witzigerweise vorwiegend in der [Unfall/Notfall]chirurgie), und die auch die Congress-Talks ansehen, egal ob vor Ort oder die Aufzeichnungen. Der Vivy-Vortrag hat mindestens eine Person aus dem Umfeld recht zornig gemacht, weil hier sehr viel Augenmerk darauf gelegt wird, wie IT-Sicherheit „sein muesste“, ohne aber den Status Quo zu beruecksichtigen. Auf Nachfrage hier der Aufschrieb, warum.

Du hast vorgestern mit den Augen gerollt, als es um den Vivy-Vortrag auf dem Congress ging. Was siehst du da als Aerzt*in, was dich bei so einem Vortrag mit den Schultern zucken laesst?

Klar, bin ich einigermaßen entsetzt auf welchem Niveau sich hier die Anbieter bewegen. Wenn ich auch nicht viel erwartet hätte, so kann ich da ja fast nur Bosheit unterstellen. Wenn mir mein Fahrradhändler zu meinem neuen Custombike eine Spiralschloss aufschwätzen wollte, würde ich mir auch verarscht vorkommen.


Aber du musst dir auch mal vor Augen halten, wo wir momentan stehen. Aktuell führt mein einziger Weg zu medizinischen Informationen über das mir unbekannte Patient selbst; das ich vielleicht jetzt gleich operieren soll. Aus Datenschutzperspektive natürlich optimal, führt aber im Normalfall zu unvollständigen und nicht selten zu falschen Informationen. Standardsituation: „Haben sie irgendwelche Erkrankungen?“ – „Nein.“ – „Nehmen sie regelmäßig Medikamente?“ – „Ja, jede Menge. Aber die kann ich nicht alle auswendig. Morgens nehme ich immer so einen gelbe und eine ganz kleine weiße Tablette.“ – „…“

Das klingt jetzt aber nicht nach dem typischen Congresspublikum, oder? Oder Bleeding-Edge-Smartphonenutzer*innen?

Der Normalfall ist ja nicht, dass gesunde 20–30Jährige mit Smartphone samt überschaubarer medizinischer Vorgeschichte daherkommen, sondern dein/e ältere/r multipel vorerkrankte/r Oma/Opa. Und was mache ich wenn es dement, bewusstlos oder ein Kind ist? Für den Fall, dass ich das Hausarzt ermitteln kann – aktuell zentraler Datenserver und -hub – kann ich es natürlich kontaktieren; Montag bis Freitag zwischen 08:30 und 12:00 Uhr. Und das faxt (!) mir dann hoffentlich die relevanten Unterlagen. Das ist momentan die einzige (offizielle) Datenübermittlung zwischen medizinischem Personal. Btw: Wie authentifiziere ich mich eigentlich am Telefon? Das hat witzigerweise bisher noch niemanden interessiert.

Wie laeuft denn das sonst normalerweise im Gesundheitswesen, wenn es um Datenhaltung und -uebertragung geht?

Das mit den Medikamenten macht mich übrigens am allergrantigsten. Im Optimalfall hat das Patient einen – mehr oder weniger aktuellen, aber immerhin inzwischen standardisierten – ausgedruckten Medikamentenplan dabei, auch über einen handgeschriebenen Zettel freu ich mich schon, aber meistens kramt der Mensch in seinem Kopf. Und was mache ich damit? Ich tippe die Liste in unser Patientenmanagementsystem, damit es die Pflegekraft auf Station dann handschriftlich in das papierene [System] (= Dokumentation„system“ während des stationären Aufenthaltes) übermittelt, wo es dann Woche für Woche neu übertragen wird, bis ich das Patient entlasse und dann wiederum alles in den Entlassbrief abtippe. Wenn bei dieser Art von Datenübertragung KEIN Fehler passiert, ist das reine Glückssache.
Da kann ich mich nur schwer mit dem Gedanken anfreunden, ALLES sei besser als DAS. Hier geht es nicht um hypothetische soziale Gefahren sondern ganz konkrete medizinische.
Zum Beispiel eben darum, wie Patient IM KRANKENHAUS an die RICHTIGEN Medikamente in der RICHTIGEN Dosierung kommt. Und das regelhaft.
Achso, frohes neues Jahr übrigens. 2019!!!11

Was mich im Zusammenhang mit dem Vivy-Votrag noch mit den Augen rollen lässt ist die Aussage „Die sichere spezifizierte Akte wird niemand nutzen.“, weil das mit der elektronischen Gesundheitskarte zu umständlich sei. Dazu kann ich dann nur sagen: Selbst schuld. Meiner Meinung nach wäre es völlig ausreichend wenn es ENDLICH ein sichere Lösung zum Informationsaustausch mit der gematik gäbe. Vor allem weil wir alle jetzt schon die Karte haben! Wer es weniger umständlich möchte, der nimmt halt Abstriche bei der Sicherheit in Kauf. Ist doch dann selbst gewählt.

Ist das jetzt die Medizin-Variante des beliebten Nerdspruchs „Kein Backup? Kein Mitleid!“?

Kurz gesagt: Ja.

Wo ich schon gar nicht mehr mit den Augen rollen kann, ist bei der Frage, warum wir bei der gematik seit 2 Jahren auf dem Niveau der Versichertenstammdaten festhängen.
Dabei bietet die Idee dahinter alles, was ich mir als „LeistungserbringerIn“ wünsche.
Kann man nicht daran weiterarbeiten statt irgendwelche fancy Apps zu unterstützen?
Wer sich übrigens dafür interessiert:

Okay, das heisst, der Jetzt-Zustand ist einfach Kommunikation per Fax… Telefon… abschreiben? Oder noch was schlimmeres?

Innerhalb eines Krankenhauses oder einer Praxis gibt es ein Patientenmanagementsystem, wo jeder für sich Daten sammelt. (Der Nutzer loggt sich hier übrigens mit seinem standardisierten Nutzernamen und seinem Wunschpasswort – meist ohne jegliche Anforderung bezüglich der Stärke – ein.)
Immerhin eine dezentrale Lösung. Leider sind diese Systeme weder vernetzt noch vernetzbar, da völlig inkompatibel, weil nicht standardisiert. Wie wird also übertragen? Ausdruck, Scan, Ausdruck, Fax, Scan, Ausdruck… die Qualität kannst du dir vorstellen. Aber hey, ganz hinterm Mond leben ÄrztInnen auch nicht; es gibt ja noch Whatsapp…

Funfact, ich arbeite in einem Klinikverbund, indem die einzelnen Kliniken immerhin schonmal die selbe Software verwenden. Bisher jedoch jeder für sich auf einer eigenen Datenbank; das heißt, dass ich bisher nich mal auf Daten meines eigenen Klinikverbundes zugreifen konnte. Die Datenbanken werden 2019 jetzt endlich zusammengeführt… haben sie gesagt… In Wirklichkeit wurden alle Kliniken auf die Datenbank der größten geschalten. Mit der Konsequenz, dass zum Jahreswechsel die Patientenakten der bisher von mir Behandelten leer waren. Eine Zusammenführung ging nämlich nicht, da die einzelnen Kliniken random Patienten- und Fall-IDs in ihren Datenbanken vergeben haben. Natürlich sind die ganzen alten Daten nicht verloren. Ich kann mich während einer Frist auch noch in das alte System einloggen. Und irgendwann wird es mal ein Archiv geben, das in die Patientenakte eingebunden wird, wo zumindest die exportierbaren (?) Informationen liegen werden. Ich vermute ja als Bilddatei :-p


Ich sitze gerade im Zug zurueck nach Ulm, nach 20 spannenden Tagen in Berlin und Leipzig. Der 35. Chaos Communication Congress ist – wieder mal viel zu schnell – zu Ende gegangen, und im zweiten Jahr Leipzig konnte unser Cluster Orbit gemeinsames Habitat von Jugend hackt, Wikimedia Deutschland, Open Knowledge Foundation Deutschland, mediale pfade, Verschwoerhaus und Verstehbahnhof nochmal eine ordentliche Schippe mehr drauflegen.

So haben wir mal eben die Flaeche unserer WG auf ueber 800 m² etwa verdoppelt, den Technikaufwand fuer unsere Buehne im Esszimmer ordentlich hochgefahren, einen Dome als Kinderzimmer fuer die U18-Teilnehmis aufgebaut bekommen, und konnten uns den gesamten Congress lang (und auch schon waehrend der Aufbauphase) mit einer ganz soliden Kueche selber versorgen. Irgendwie eine absurde Vorstellung, wenn ich mir vor Augen halte, dass ich mich erst vier Jahre zuvor das erste Mal ueberhaupt erst nach viel Zoegern und Zuspruch auf einen Congress getraut hatte.

Diese Professionalisierung trifft irgendwie auch das diffuse Gefuehl, das seit gestern in diversen Twitterthreads herumwabert. Nein, es ist nicht mehr alles Chaos und unordentlich. Nein, man kann beim besten Willen nicht alles auf dem Congress sehen, erleben, mitmachen. Aber die (von manchen bemaengelte) Professionalisierung ruehrt auch daher, dass mittlerweile richtig gute Werkzeuge entstanden sind, die das alles moeglich machen, und dass notwendiges Wissen und notwendige Fertigkeiten mittlerweile in einer viel groesseren Breite anzutreffen sind. Maxi konnte mal eben ein Pretalx aufsetzen, um die Planung der 37,5 Stunden(!) eigenen Programms bei uns nicht mehr ueber Spreadsheets machen zu muessen. Was dort herausfaellt, kann dann relativ schmerzfrei vor der Tuere auf einem Info-Beamer gezeigt werden, und die aufgezeichneten Vortraege laufen ruck zuck in das CDN auf

Denn, das ist ja vollkommen klar: Moeglichst alles was an Input bei uns laeuft, soll ja auch gestreamt und fuer die Nachwelt erhalten werden. Nicht weil man’s muss, oder weil man’s soll – sondern weil es geht. Und weil das Verschwoerhaus die Ausstattung dafuer hat und Maxi sich in die Technik dahinter hineingefuchst hatte, plus krasser Zusatzhardware von mediale pfade fuer das Hebocon-Finale beim Junghackertag.

Selbstverstaendlich werden Wissen und Fertigkeiten auch weitergegeben – es gab mehrere Technikschulungen fuer alle Engel, die fuer Streaming und Aufzeichnung die Kamera fuehrten, oder Bild und Ton mischten. Damit eben nicht alles z.B. an Maxi haengen muss, und damit wir eine Experimentierwiese fuer alle werden koennen, die sich noch nicht trauen, an den „grossen“ Buehnen zu heralden, Videoengeln und dergleichen mehr.

Eskalationspotenzial ist derweil natuerlich immer noch vorhanden: Vortragsraum und Meeting-Flaeche waren haufig mehr nachgefragt als wir Platz hatten, und spaetabends bei der Getraenkeprobe kam ploetzlich der Vorschlag auf, ob das Uebersetzungs-Team nicht im kommenden Jahr die Vortraege nicht auch ins Englische uebersetzen solle – quasi als Einsteigerprogramm fuer die UebersetzerInnen aus dem c3lingo-Team. Warum nicht. Weil’s geht.

Und das ist auch der Punkt, der mir am sympathischsten an dieser Entwicklung ist. Wissen, wie man so etwas gut machen kann, verteilt sich ueber die klassische Congress-Orga hinaus in die Breite. Es gibt immer noch unheimlich viele Dinge (vor allem beim Aufbau), die nur funktionieren, wenn man weiss welche Einzelperson aus „der Orga™“ eventuell als einzige im Kopf (und nur da) haben koennte, wie man eine bestimmte Sache loest. Aber vieles laeuft einfach, und erlaubt es, waehrend der Veranstaltung eine Abstraktionsschicht hoeher zu gehen und sich um ganz andere Dinge zu kuemmern.

Beispielsweise, die Medienpraesenz zu nutzen, um politische Botschaften zu platzieren. Wikimedia hatte dieses Jahr die Datenpumpe als anfassbare Metapher dabei – denn nachdem manche Deppen Daten als „das neue Oel“ bezeichnet haben, muss die Botschaft natuerlich lauten, dass Daten vielmehr so etwas wie Wasser sind. Insbesondere gehoeren sie nicht monopolisiert und privatwirtschaftlichen Interessen untergeordnet, anstatt dem Gemeinwohl zu dienen. Anscheinend funktionierte das auch ganz gut – einzelne Pressemenschen waren ganz erleichtert, mal einen anderen visuellen Aufhaenger festhalten zu koennen als „schon wieder diese Rakete“.

Vielleicht ist das meiner etwas seltsamen Doppelrolle zwischen Datenaktivist und Verwaltungsmitarbeiter geschuldet, aber ich mag auch die damit verbunde Aufforderung, dass die Menschen auf dem Congress sich nicht nur als Zaungaeste der Gesellschaft sehen sollen, die sich – wie man das bei Nerds bisweilen gerne macht – vorrangig ueber die vollkommene Ahnungslosigkeit von Verwaltung und natuerlich Den Politikern™ bei dem ganzen Digitalisierungsgeloet lustig machen. Wer Aenderungen des Status Quo mitgestalten und nicht nur vom Spielfeldrand beobachten moechte, handelt selbstverstaendlich politisch und kann sich nicht hinter der absurden Fiktion verstecken, dass Hacken irgendwie unpolitisch sein koenne. Das anzuerkennen ist der erste Schritt, und das hat dieses Jahr glaube ich recht gut bei vielen Menschen auf dem Congress funktioniert. Jetzt geht’s drum, das in die Breite und in die Linie nach draussen zu tragen. Ich glaube, das koennte was werden.

Bits und Baeume 2018

Ich fahre gerade (wegen koerperlicher Angeschlagenheit und des weiten Weges etwas verfrueht) von der Bits-und-Baeume-Konferenz aus Berlin zurueck nach Ulm, und wollte noch ein paar der Gespraeche und Gedanken festhalten, die wir in den letzten 48h hatten.

Die Idee der Konferenz war, die jeweiligen Bubbles aus $irgendwas_mit_Digitalisierung und $Nachhaltigkeit zusammenzuwerfen – um die Ueberschneidungen beider Themenfelder aufzuzeigen und die Menschen zusammenzubringen. Ich war offen gestanden anfangs etwas skeptisch, ob es das jetzt wirklich braucht. Nach dem Wochenende kann ich aber ganz im Gegenteil sagen: Das braucht es.

Die Veranstaltung besetzt eine Luecke, die von anderen Konferenzen und Congressen bislang eher maessig ausgefuellt wird. Ich fand es immer wieder schoen, eben nicht zum zehnten Mal dasselbe zu hoeren, sondern deutlich andere Stimmen, die den eigenen Horizont erweitern und zum Nachdenken anregen. Kam ich mir in den letzten Monaten auf anderen Veranstaltungen haeufig wie so ein Mini-Moechtegern-Extremist vor, der den Technozentrismus in der Smart-City-Diskussion infrage stellt und nach der gesellschaftlichen Rolle der technischen Loesungen fragt, fuehlte ich mich dort wie ein Digitale-Werkzeuge-Apologet, der immer wieder ins Achtung gestellt wurde. Weil die grundsaetzlichen Fragen noch viel weiter draussen sind, und ich in letzter Zeit auf ganz anderen Diskussionsebenen unterwegs war.

Das tat enorm gut.

Wir sprachen heute mittag auch ueber die Atmosphaere in den schick umdekorierten Hallen der TU: Die war ruhig, entspannt, unpraetentioes – und vor allem offenbar vollkommen trollfrei. Das tat auch gut. Vielleicht liegt’s am ausschliesslich veganen Essen, wer weiss :>

Ich konnte nur einen Bruchteil der Sessions live oder durch Erzaehlungen miterleben, das VOC hat aber wieder einmal grossartige Arbeit geleistet und die Vortraege Minuten nach Abschluss der Zeitslots ins Netz gestellt. Bislang kann ich Bits und Raeume hervorheben, und die Podiumsdiskussion „mit Digitalisierung zur Verkehrswende“, in der mal eben die Zerschlagung von VW gefordert wurde. Leon Kaiser brachte ausserdem in seinem Beitrag im Pecha-Kucha-Format Sporangium einen soliden Achtminueter ueber die De-Bullshitifizierung der Blockchain (Direktlink). Den Rest muss ich erst alles noch selber erst einmal nachsehen 😀

(Exkurs: Am Ende des Sporangium ertoente auf einmal naeherkommender Gesang aus den Hallen, was das Publikum immer ratloser machte – das stellte sich als das Berliner Heimatjodelduo Esels Albtraum heraus, die spaeter auch noch Stuecke wie den Bullenjodler im Lichthof auffuehrten :D)

Ich war selber auch eingeladen worden, zusammen mit Eva Blum-Dumontet (Privacy International) und Sybille Bauriedl (Europa-Universitaet Flensburg) „Reclaim the Smart City“ zu fordern und anschliessend auf dem Panel zu diskutieren. Ich sag mal so: Das hat geerdet. Ich habe die ganze Geschichte, was wir da in Ulm eigentlich mit der gar-nicht-so-smarten-City machen (und die ich jetzt seit zweieinhalb Jahren immer noch nicht hier niedergeschrieben habe), in den letzten Monaten fast immer nur anderen Kommunalmenschen oder gar Geschaeftsleuten erzaehlt, die selber gerne irgendwas mit Smart City machen wuerden. Das hat meine Koordinaten offenbar ganz ordentlich verschoben, und beim auszugsweisen Nachschauen dessen, was ich da gesagt habe, ist mir dieser offensichtliche engstirnige Verwaltungswicht ganz schoen peinlich.
Insofern danke v.A. an Sybille Bauriedl fuer die deutliche Zielrejustierung, worum’s eigentlich geht, und die kritischen Nachfragen aus dem Publikum. Und danke auch fuer das sehr direkte und offene Feedback nach dem Vortrag, dass sich mein Part im Vortrag sehr nach Selbstbeweihraeucherung angehoert habe. Ich muss diese Geschichte umbauen, die groesseren Ziele und auch viel mehr die vielen tollen Menschen in unserer lokalen Community in den Vordergrund stellen. Und ich muss wohl auch wieder haeufiger auf solche Veranstaltungen gehen, um mich vom Stadt-Alltag nicht allzusehr glattschleifen zu lassen.

Andersherum wuerde mich echt interessieren, ob die Rejustage auch bei anderen stattgefunden hat. Die „Facebook-Zerschlagen-Kampagne“ fuehlte sich ein wenig arg nach Hackerfolklore an. Datenschutz ist fuer die uebergeordneten Ziele halt ebensowenig Selbstzweck wie die Digitalisierung fuer die lebenswerte Stadt. Naja.

Es bleiben Dank und Glueckwunsch fuer ein gelungenes Konferenzformat, das fuer mich Anstoss zu viel Nach- und Weiterdenken war. Und ich bin gespannt, was aus den teilweise absurden Vernetzungsgelegenheitem am Rande noch wird 😉

PS: Es gab Baumkletterkurse! Mit Robin Wood! Wie geil ist das!

(hab mich nicht getraut. naja und ich hab den termin verschlafen)

Linksammlung, offene-Tabs-vom-Sommer-2018-Edition

Understanding the Users of Open Data – Studie vom Mai 2017, welche NutzerInnengruppen eigentlich die Offenen Daten von NYC nutzen, und daraus gebildete Personas (via Knut)


Scientists Warn the UN of Capitalism’s Imminent Demise – “Capitalism as we know it is over. So suggests a new report commissioned by a group of scientists appointed by the UN Secretary-General. The main reason? We’re transitioning rapidly to a radically different global economy, due to our increasingly unsustainable exploitation of the planet’s environmental resources.”


Five Things We Need to Know About Technological Change – Vortrag von Neil Postman von 1998, der nichts von seiner Aktualitaet verloren hat. Kernpunkte:

  • Jeder Fortschritt ist ein Kompromiss: Der entstandene Vorteil wird mit einem verbundenen Nachteil erkauft. “ulture always pays a price for technology”
  • Die Vor- und Nachteile der neuen Technologie sind nicht gleichverteilt – eine Gruppe profitiert, eine andere erleidet einen Nachteil, und vermutlich juckt’s eine große Gruppe gar nicht erst
  • Jede Technologie basiert auf einer darunterliegenden Philosophie, die wiederum die Denkweise von Menschen beeinflusst, die sich davon leiten lassen. So wie manche Leute gerade ueber alles eine Blockchain pflastern wollen. Vielleicht.
  • Technologischer Fortschritt ist nicht additiv, er verändert jeweils das Ökosystem, in dem er sich befindet
  • Medien [d.h. Technologien] haben die Tendenz, mythisch zu werden: “When a technology become mythic, it is always dangerous because it is then accepted as it is, and is therefore not easily susceptible to modification or control. If you should propose to the average American that television broadcasting should not begin until 5 PM and should cease at 11 PM, or propose that there should be no television commercials, he will think the idea ridiculous. But not because he disagrees with
    your cultural agenda. He will think it ridiculous because he assumes you are proposing that something in nature be changed; as if you are suggesting that the sun should rise at 10 AM instead of at 6.”


Tesla, software and disruption – “A great, innovative car and a great car company are not the same thing” (via @tobiasknobloch)


Anatomy of an AI System – Tiefer(!) Einstieg in die Zusammenhaenge von Rohstoffbeschaffung, Energiebedarf, Wertschoepfung (und der Ausbeutung privaten Handelns durch Unternehmen), Konsumverhalten etc. am Beispiel von Amazon Echo. (via @lorz)

Linktipp: The social ideology of the motorcar

The worst thing about cars is that they are like castles or villas by the sea: luxury goods invented for the exclusive pleasure of a very rich minority, and which in conception and nature were never intended for the people. […T]he essence of luxury is that it cannot be democratized. If everyone can have luxury, no one gets any advantages from it. On the contrary, everyone diddles, cheats, and frustrates everyone else, and is diddled, cheated, and frustrated in return.

so beginnt ein Aufsatz, der mir neulich durch die Timeline kam, und sich die Muehe macht, von den Grundlagen her durchzuargumentieren, wie und warum das private Automobil Staedte zerstoert. Ein lesenswerter Artikel, der auch auf die typischen Einwaende eingeht. Zum Beispiel: Oeffentlicher Nahverkehr ist keine Alternative, er ist auf dem Land rar und unpraktisch und teuer! Ja, natuerlich, denn er wurde rar und unpraktisch und teuer gemacht, so wie die gesamte Infrastruktur sich ueber Jahrzehnte am motorisierten Individualverkehr in eigenen Kraftfahrzeugen orientiert hat.

Nichts weniger als eine komplette Umordnung sei demnach die Loesung (hervorhebung von mir):

To get around everyday they would be able to use all kinds of transportation adapted to a medium-sized town: municipal bicycles, trolleys or trolley-buses, electric taxis without drivers. For longer trips into the country, as well as for guests, a pool of communal automobiles would be available in neighborhood garages. The car would no longer be a necessity.[…]

Meanwhile, what is to be done to get there? Above all, never make transportation an issue by itself. Always connect it to the problem of the city, of the social division of labour, and to the way this compartmentalizes the many dimensions of life.

Der Artikel ist von 1973.


In Fortsetzung zum Februar, zwei lesenswerte Artikel:

It’s not all lightbulbsIf we abandon the cult of the Great White Innovator, we will understand the history of technology in a much deeper way

Der Untertitel lautet, “most of the time, innovators don’t move fast and break things”, und im Wesentlichen raeumt der Text mit der Idee auf, einzelne Erfinder wie Edison, Jobs oder (Himmel bewahre) Musk seien irgendwie fuer Fortschritt verantwortlich. Inklusive der Grundidee, dass Innovation ein Selbstzweck sei, der notwendigerweise gut ist, am besten noch mit Silicon-Valley-Entrepreneurship unterfuettert:

One cause of this confusion, I believe, stems from our decades-long fascination with Silicon Valley: once a romance, it now has all the hallmarks of a dysfunctional relationship. Just as ‘computer’ is a synecdoche for ‘technology’, Silicon Valley has come to reflect a certain monoculture of thought and expression about technology. One must tread carefully here, of course. Just as the medieval Catholic Church or the Cold War Kremlin were not monolithic entities, there is not one single Silicon Valley. Rather, it’s a complex assemblage of workers, managers, investors, engineers, et al. Unfortunately, some technology pundits ignore this diversity and reduce Silicon Valley to a caricature landscape of disruptive startups.

Anhand (westlicher) Beispiele gestaffelten Fortschritts macht Autor McCray deutlich: Haeufig ist es ueberhaupt nicht die naechste, tolle Generation einer Technologie, die aktuell wertvoll sein kann – sondern die vergleichsweise langweilige, bestehende (oder gar altbacken wirkende) Technologiegeneration, die nur vernuenftig eingesetzt und gepflegt werden sollte. Oeffentlicher Nahverkehr statt Robo- oder Flugtaxis, zum Beispiel.


Ueberleitend auf den zweiten Artikel:

The self-driving car that will never arriveSelf-driving cars are delusional tech optimism rooted in greed, sorry

Casey Johnston zieht einmal rundum vom Leder: So schnell werden wir selbstfahrende Autos nicht auf der Strasse erleben. Das dafuer notwendige weitere Hypethema KI sei noch lange nicht so weit, wie es dafuer sein muesste. Lesenswert.

Soviet Valley

Schoener Twitterthread: