Artwork

Inhalt bereitgestellt von Sven Wiegand and Benjamin Hagemeister. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von Sven Wiegand and Benjamin Hagemeister oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.
Player FM - Podcast-App
Gehen Sie mit der App Player FM offline!

SP02/17: Dies und Das

1:03:17
 
Teilen
 

Manage episode 173365058 series 1206977
Inhalt bereitgestellt von Sven Wiegand and Benjamin Hagemeister. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von Sven Wiegand and Benjamin Hagemeister oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.

Feedback zur letzten Episode

Paul hat geschrieben.

Seine Highlights 2016:

  • Unser Podcast (vielen Dank!)
  • Hat endlich Zeit und Muße gefunden Scala-Anwendungen im funktionalen Stil zu schreiben.

Seine Wünsche für 2017:

  • Schneller Scala Compiler. Wird nie kommen. Aber man darf doch träumen.
  • Ich verstehe endlich was Monoiden und Kleislis sind und finde heraus ob Monoiden wirklich als Monaden zur Kategorie der Endofunktoren gehören… danach haue ich in den Sack und lerne Clojure. So wie ich es eigentlich vor hatte. ?
  • Java9 kommt. Pünktlich. Mit Graal und Truffle. Ruby, Scala und Java laufen somit konfliktfrei auf der JVM. Überall glückliche, produktive Menschen.
  • Weltfrieden

Scala Center Advisory Board and SIP-Meeting-Results Dezember 2016

Scala Center Advisory Board

Neue Mitglieder

Das Scala Center Advisory Board hat zwei neue Mitglieder:

  • James Belsey von Morgan Stanley
  • Lars Hupel von Typelevel als zusätzlicher Vertreter der Community

Meeting vom 13. Dezember 2016

Folgende Empfehlungen wurden beschlossen:

  1. Redesign und Neu-Implementierung der Scala Collections für Scala 2.13 auf Basis der Implementierung für Dotty
  2. Fortsetzung der Verwaltung der Webseiten scala-lang.org, docs.scala-lang.org und scala.epfl.ch
  3. SCP-009

SIP-Meeting vom 25. Oktober 2016

SIP-27 (trailing commans) wurde nach ein paar letzten Änderungen akzeptiert.

Für SIP-20 (improved lazy val initialization) gibt es eine Implementierung für Dotty und es wird jemand gesucht, der sich um eine Implementierung für scalac kümmert.

Links

Scastie

Scastie ist eine vom Scala Center Team betriebene interaktive Web-Seite, die es Dir ermöglicht Scala-Code im Browser auszuprobieren, auf den Servern zu speichern und zu teilen (ähnlich wie bei JSFiddle & Co. — wenn auch noch nicht so komfortabel).

Ursprünglich wurde Scastie von Aleh Aleshka als kollaborative Plattform zum Reproduzieren von Fehlern im Scala-Compiler erstellt. Seit neuestem steht das Ergebnis jedem interessierten als Beta-Version zur Verfügung (Login via Github).

Dein Code wird zu den Scala-Center-Servern geschickt, dort mittels SBT compiliert und ausgeführt und der Output zurück zum Server gestreamt.

Cool dabei:

  • Mit einem Click kannst Du das Scala-Target wählen. Zur Auswahl stehen nicht nur die verschiedenen Scala-Versionsn (2.10, 2.11 und 2.12) inklusive aller releasten Sub-Funktionen, sondern auch Dotty und der Typelevel-Scala-Compiler.
  • Über eine interaktive Suche kannst Du sämtliche im scaladex geführte Bibliotheken mit einem Klick hinzufügen und ausprobieren.
  • Wenn das immer noch nicht reicht kannst Du direkt das SBT-Script beeinflussen und so zum Beispiel beliebige Dependencies hinzufügen

Links

Scala Days 2017

Die Agenda für die Scala Days 2017 in Kopenhagen ist online.

Es gibt gleich zwei Vorträge aus der Berliner Scala Community:

Daniel Jentsch hält einen Vortrag über eine ScalaTest Erweiterung zum testen von Abfrageketten mit Futures und externen Systemen.

Oleg Ilyenko stellt seine GraphQL Implementierung Sangria vor.

Links

Let by-name implicit parameters have lazy semantics

Es gibt in Scala bisher keine impliziten lazy Parameter. Das kann im Zusammenhang mit generischer Programmierung zu Problemen führen, die Shapeless mit dem Lazy Pseudo-Typ umgeht (mit Macro-Magie dahinter).

Zur Vereinfachung gibt es in dotty jetzt die Möglichkeit implizite ›by-name‹ Parameter zu verwenden (def fun(implicit a => String)).

Links

Play 2.6 M1

Das Play-Team hat den ersten Milestone des 2.6.0‑Releases der Allgemeinheit zum Testen zur Verfügung gestellt. Geplantes Release-Datum ist gemäß dem Roadmap-Dokument März bis April 2017.

Neuheiten

  • Keine Notwendigkeit mehr eine statische Application (Play.current) zur Verfügung zu stellen. Ziel ist es, dass mehrere Applications parallel ausgeführt und getestet werden können ohne sich gegenseitig zu beeinflussen. In diesem Zuge wurden diverse bisher globale Objekte auf Dependency-Injection verschoben (z.B. Action, BodyParser)
  • Unterstützung für Scala 2.12
  • Akka HTTP wird jetzt standardmäßig als HTTP-Server genutzt. Auf Wunsch kann weiterhin Netty (in Version 4.1) genutzt werden.
  • Typsichere Request-Attribute
  • Folgende Libraries wurden als eigenständige Bibliotheken mit unabhängigen Release-Zyklus aus Play herausgelöst:
  • Folgende Funktionalitäten wurden ebenfalls als Module herausgelöst, bleiben aber an Play und dessen Release-Zyklus gekoppelt:
    • Guice-Support (play-guice)
    • Java Forms (play-java-forms)

Fehlende 2.6 Features

Gemäß dem Roadmap-Dokument sind die folgenden weiteren Features für Play 2.6 geplant, derzeit aber noch nicht verfügbar:

  • Typsichere Variante bekannter Request-Header
  • Unterstützung von HTTP/2

Aussicht auf Play 3

In dem Roadmap-Dokument findet sich auch ein Ausblick auf Play 3 (ETA Januar 2018)

Links

Contextual

John Pretty hat die erste Version von Contextual vorgestellt. Mit Contextual kann man sich einfach einen String-Interpolator implementieren, der schon beim kompilieren überprüft ob ein gegebener String bestimmte Bedingungen erfüllt.

Das folgende Beispiel von der Homepage zeigt einen einfachen String-Interpolator für URLs (wobei die Funktion checkValidUrl(...) noch irgendwo anders implementiert werden muss):

import contextual._ case class Url(url: String) object UrlInterpolator extends Interpolator { def contextualize(interpolation: StaticInterpolation) = { val lit@Literal(_, urlString) = interpolation.parts.head if(!checkValidUrl(urlString)) interpolation.abort(lit, 0, "not a valid URL") Nil } def evaluate(interpolation: RuntimeInterpolation): Url = Url(interpolation.literals.head) } implicit class UrlStringContext(sc: StringContext) { val url = Prefix(UrlInterpolator, sc) } 

Mit diesem Interpolator führt dann z.B. url"foobar" zu einem Compiler-Fehler, wäheren url"http://co.ntextu.al" ohne Fehler compiliert.

Links

Scala Enumerations

Es gibt verschiedene Möglichkeiten Enumerations in Scala umzusetzen. Pedro Rijo einen lesenswerten Artikel geschrieben in dem er die verschiedenen Möglichkeiten mit Ihren Vor- und Nachteilen beleuchtet. In einem zweiten Artikel bezieht er auch Java Enumerations in die Betrachtung mit ein.

scala.Enumerations

object Gender extends Enumeration { val Female, Male = Value } 

Features:

  • (De)Serialisierung
  • (Anpassbare) String-Representation
  • Auflistung der verfügbaren Werte- Sortierung
  • Sortierung

Probleme:

  • Unterschiedliche Enumerations haben den selben Typ (nach Type-Erasure)
  • Kein Matching-Check auf Vollständigkeit zur Compile-Zeit

Sealed case objects

sealed trait Gender case object Female case object Male 

Features:

  • Löst die beiden Probleme von scala.Enumeration
  • Möglichkeit zusätzliche vals hinzuzufügen

Probleme:

  • Keine automatische Lösung um alle Werte zu erhalten
  • Keine Standard-(De)Serialisierung
  • Keine Standard-Sortierung

Library itemized

itemized erzeugt mit Hilfe von Macros sealed Trait-Hierarchien:

@enum trait Gender { object Female object Male } 

Features:

  • Auflistung aller möglichen Werte
  • Standard (De)Serialisierung

Probleme:

  • Keine Möglichkeit zusätzliche Eigenschaften hinzuzufügen
  • Unterstützt zwar indizierte Werte, aber keine Standard-Sortierung

Library enumeratum

sealed trait Gender extends EnumEntry object Gender extends Enum[Gender] { val values = findValues case object Female extends Gender case object Male extends Gender } 

Features:

  • Prüfung auf Vollständigkeit von Matches
  • Auflistung der verfügbaren Werte
  • Standard (De)Serialisierung
  • Möglichkeit zusätzliche Werte hinzuzufügen

Nachteile:

  • Sortierung ist möglich erfordert aber eine manuelle Implementierung des Ordered-Traits

Java Enumerations

Der Artikel von Pedro führte zu einer interessanten Diskussion auf Reddit, der unter anderem die klassischen Java-Enumerations als Alternative vorschlugen.

public enum Gender { Female, Male } 

Features:

  • Prüfung auf Vollständigkeit von Matches
  • Auflistung der verfügbaren Werte
  • Standard (De)Serialisierung
  • Keine Type-Erasure
  • Möglichkeit zusätzliche Werte hinzuzufügen
  • Kein Overhead bei der Ausführung auf der JVM

Nachteile:

  • Keine automatische Standard-Sortierung
  • Die Enumeration muss in Java-Code definiert werden. Ggf. eingeschränkte Typ-Nutzung.

Fazit

scala.Enumeration taugt für die meisten Fälle. Wenn das nicht reicht scheint die Library enumeratum eine interessante Alternative zu sein.

Links

Gib uns Dein Feedback als Kommentar auf unserer Web-Site, via Twitter oder Google+.

Kauf uns einen Kaffee

Kapitel

  1. Intro (00:00:00.000)
  2. Einleitung (00:00:37.165)
  3. Hörerfeedback (00:01:44.035)
  4. Scala Center Advisory Board and SIP-Meeting-Results Dezember 2016 (00:04:57.379)
  5. Scastie (00:10:45.389)
  6. ScalaDays 2017 (00:16:48.664)
  7. Let by-name implicit parameters have lazy semantics (00:19:21.880)
  8. Play 2.6 M1 (00:21:37.229)
  9. Contextual (00:41:04.259)
  10. Scala Enumerations (00:48:02.989)
  11. Outro (01:01:02.352)

Lizenz

Creative Commons Lizenzvertrag
Scala Profis von Benjamin Hagemeister & Sven Wiegand ist lizenziert unter einer Creative Commons Namensnennung — Keine Bearbeitungen 4.0 International Lizenz.

Über diese Lizenz hinausgehende Erlaubnisse kannst Du unter http://scalaprofis.de erhalten.

Titelsong basierend auf Wish You Were Here von THE.MADPIX.PROJECT lizensiert unter Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0).

  continue reading

Kapitel

1. Intro (00:00:00)

2. Einleitung (00:00:37)

3. Hörerfeedback (00:01:44)

4. Scala Center Advisory Board and SIP-Meeting-Results Dezember 2016 (00:04:57)

5. Scastie (00:10:45)

6. ScalaDays 2017 (00:16:48)

7. Let by-name implicit parameters have lazy semantics (00:19:21)

8. Play 2.6 M1 (00:21:37)

9. Contextual (00:41:04)

10. Scala Enumerations (00:48:02)

11. Outro (01:01:02)

15 Episoden

Artwork

SP02/17: Dies und Das

Scala Profis

13 subscribers

published

iconTeilen
 
Manage episode 173365058 series 1206977
Inhalt bereitgestellt von Sven Wiegand and Benjamin Hagemeister. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von Sven Wiegand and Benjamin Hagemeister oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.

Feedback zur letzten Episode

Paul hat geschrieben.

Seine Highlights 2016:

  • Unser Podcast (vielen Dank!)
  • Hat endlich Zeit und Muße gefunden Scala-Anwendungen im funktionalen Stil zu schreiben.

Seine Wünsche für 2017:

  • Schneller Scala Compiler. Wird nie kommen. Aber man darf doch träumen.
  • Ich verstehe endlich was Monoiden und Kleislis sind und finde heraus ob Monoiden wirklich als Monaden zur Kategorie der Endofunktoren gehören… danach haue ich in den Sack und lerne Clojure. So wie ich es eigentlich vor hatte. ?
  • Java9 kommt. Pünktlich. Mit Graal und Truffle. Ruby, Scala und Java laufen somit konfliktfrei auf der JVM. Überall glückliche, produktive Menschen.
  • Weltfrieden

Scala Center Advisory Board and SIP-Meeting-Results Dezember 2016

Scala Center Advisory Board

Neue Mitglieder

Das Scala Center Advisory Board hat zwei neue Mitglieder:

  • James Belsey von Morgan Stanley
  • Lars Hupel von Typelevel als zusätzlicher Vertreter der Community

Meeting vom 13. Dezember 2016

Folgende Empfehlungen wurden beschlossen:

  1. Redesign und Neu-Implementierung der Scala Collections für Scala 2.13 auf Basis der Implementierung für Dotty
  2. Fortsetzung der Verwaltung der Webseiten scala-lang.org, docs.scala-lang.org und scala.epfl.ch
  3. SCP-009

SIP-Meeting vom 25. Oktober 2016

SIP-27 (trailing commans) wurde nach ein paar letzten Änderungen akzeptiert.

Für SIP-20 (improved lazy val initialization) gibt es eine Implementierung für Dotty und es wird jemand gesucht, der sich um eine Implementierung für scalac kümmert.

Links

Scastie

Scastie ist eine vom Scala Center Team betriebene interaktive Web-Seite, die es Dir ermöglicht Scala-Code im Browser auszuprobieren, auf den Servern zu speichern und zu teilen (ähnlich wie bei JSFiddle & Co. — wenn auch noch nicht so komfortabel).

Ursprünglich wurde Scastie von Aleh Aleshka als kollaborative Plattform zum Reproduzieren von Fehlern im Scala-Compiler erstellt. Seit neuestem steht das Ergebnis jedem interessierten als Beta-Version zur Verfügung (Login via Github).

Dein Code wird zu den Scala-Center-Servern geschickt, dort mittels SBT compiliert und ausgeführt und der Output zurück zum Server gestreamt.

Cool dabei:

  • Mit einem Click kannst Du das Scala-Target wählen. Zur Auswahl stehen nicht nur die verschiedenen Scala-Versionsn (2.10, 2.11 und 2.12) inklusive aller releasten Sub-Funktionen, sondern auch Dotty und der Typelevel-Scala-Compiler.
  • Über eine interaktive Suche kannst Du sämtliche im scaladex geführte Bibliotheken mit einem Klick hinzufügen und ausprobieren.
  • Wenn das immer noch nicht reicht kannst Du direkt das SBT-Script beeinflussen und so zum Beispiel beliebige Dependencies hinzufügen

Links

Scala Days 2017

Die Agenda für die Scala Days 2017 in Kopenhagen ist online.

Es gibt gleich zwei Vorträge aus der Berliner Scala Community:

Daniel Jentsch hält einen Vortrag über eine ScalaTest Erweiterung zum testen von Abfrageketten mit Futures und externen Systemen.

Oleg Ilyenko stellt seine GraphQL Implementierung Sangria vor.

Links

Let by-name implicit parameters have lazy semantics

Es gibt in Scala bisher keine impliziten lazy Parameter. Das kann im Zusammenhang mit generischer Programmierung zu Problemen führen, die Shapeless mit dem Lazy Pseudo-Typ umgeht (mit Macro-Magie dahinter).

Zur Vereinfachung gibt es in dotty jetzt die Möglichkeit implizite ›by-name‹ Parameter zu verwenden (def fun(implicit a => String)).

Links

Play 2.6 M1

Das Play-Team hat den ersten Milestone des 2.6.0‑Releases der Allgemeinheit zum Testen zur Verfügung gestellt. Geplantes Release-Datum ist gemäß dem Roadmap-Dokument März bis April 2017.

Neuheiten

  • Keine Notwendigkeit mehr eine statische Application (Play.current) zur Verfügung zu stellen. Ziel ist es, dass mehrere Applications parallel ausgeführt und getestet werden können ohne sich gegenseitig zu beeinflussen. In diesem Zuge wurden diverse bisher globale Objekte auf Dependency-Injection verschoben (z.B. Action, BodyParser)
  • Unterstützung für Scala 2.12
  • Akka HTTP wird jetzt standardmäßig als HTTP-Server genutzt. Auf Wunsch kann weiterhin Netty (in Version 4.1) genutzt werden.
  • Typsichere Request-Attribute
  • Folgende Libraries wurden als eigenständige Bibliotheken mit unabhängigen Release-Zyklus aus Play herausgelöst:
  • Folgende Funktionalitäten wurden ebenfalls als Module herausgelöst, bleiben aber an Play und dessen Release-Zyklus gekoppelt:
    • Guice-Support (play-guice)
    • Java Forms (play-java-forms)

Fehlende 2.6 Features

Gemäß dem Roadmap-Dokument sind die folgenden weiteren Features für Play 2.6 geplant, derzeit aber noch nicht verfügbar:

  • Typsichere Variante bekannter Request-Header
  • Unterstützung von HTTP/2

Aussicht auf Play 3

In dem Roadmap-Dokument findet sich auch ein Ausblick auf Play 3 (ETA Januar 2018)

Links

Contextual

John Pretty hat die erste Version von Contextual vorgestellt. Mit Contextual kann man sich einfach einen String-Interpolator implementieren, der schon beim kompilieren überprüft ob ein gegebener String bestimmte Bedingungen erfüllt.

Das folgende Beispiel von der Homepage zeigt einen einfachen String-Interpolator für URLs (wobei die Funktion checkValidUrl(...) noch irgendwo anders implementiert werden muss):

import contextual._ case class Url(url: String) object UrlInterpolator extends Interpolator { def contextualize(interpolation: StaticInterpolation) = { val lit@Literal(_, urlString) = interpolation.parts.head if(!checkValidUrl(urlString)) interpolation.abort(lit, 0, "not a valid URL") Nil } def evaluate(interpolation: RuntimeInterpolation): Url = Url(interpolation.literals.head) } implicit class UrlStringContext(sc: StringContext) { val url = Prefix(UrlInterpolator, sc) } 

Mit diesem Interpolator führt dann z.B. url"foobar" zu einem Compiler-Fehler, wäheren url"http://co.ntextu.al" ohne Fehler compiliert.

Links

Scala Enumerations

Es gibt verschiedene Möglichkeiten Enumerations in Scala umzusetzen. Pedro Rijo einen lesenswerten Artikel geschrieben in dem er die verschiedenen Möglichkeiten mit Ihren Vor- und Nachteilen beleuchtet. In einem zweiten Artikel bezieht er auch Java Enumerations in die Betrachtung mit ein.

scala.Enumerations

object Gender extends Enumeration { val Female, Male = Value } 

Features:

  • (De)Serialisierung
  • (Anpassbare) String-Representation
  • Auflistung der verfügbaren Werte- Sortierung
  • Sortierung

Probleme:

  • Unterschiedliche Enumerations haben den selben Typ (nach Type-Erasure)
  • Kein Matching-Check auf Vollständigkeit zur Compile-Zeit

Sealed case objects

sealed trait Gender case object Female case object Male 

Features:

  • Löst die beiden Probleme von scala.Enumeration
  • Möglichkeit zusätzliche vals hinzuzufügen

Probleme:

  • Keine automatische Lösung um alle Werte zu erhalten
  • Keine Standard-(De)Serialisierung
  • Keine Standard-Sortierung

Library itemized

itemized erzeugt mit Hilfe von Macros sealed Trait-Hierarchien:

@enum trait Gender { object Female object Male } 

Features:

  • Auflistung aller möglichen Werte
  • Standard (De)Serialisierung

Probleme:

  • Keine Möglichkeit zusätzliche Eigenschaften hinzuzufügen
  • Unterstützt zwar indizierte Werte, aber keine Standard-Sortierung

Library enumeratum

sealed trait Gender extends EnumEntry object Gender extends Enum[Gender] { val values = findValues case object Female extends Gender case object Male extends Gender } 

Features:

  • Prüfung auf Vollständigkeit von Matches
  • Auflistung der verfügbaren Werte
  • Standard (De)Serialisierung
  • Möglichkeit zusätzliche Werte hinzuzufügen

Nachteile:

  • Sortierung ist möglich erfordert aber eine manuelle Implementierung des Ordered-Traits

Java Enumerations

Der Artikel von Pedro führte zu einer interessanten Diskussion auf Reddit, der unter anderem die klassischen Java-Enumerations als Alternative vorschlugen.

public enum Gender { Female, Male } 

Features:

  • Prüfung auf Vollständigkeit von Matches
  • Auflistung der verfügbaren Werte
  • Standard (De)Serialisierung
  • Keine Type-Erasure
  • Möglichkeit zusätzliche Werte hinzuzufügen
  • Kein Overhead bei der Ausführung auf der JVM

Nachteile:

  • Keine automatische Standard-Sortierung
  • Die Enumeration muss in Java-Code definiert werden. Ggf. eingeschränkte Typ-Nutzung.

Fazit

scala.Enumeration taugt für die meisten Fälle. Wenn das nicht reicht scheint die Library enumeratum eine interessante Alternative zu sein.

Links

Gib uns Dein Feedback als Kommentar auf unserer Web-Site, via Twitter oder Google+.

Kauf uns einen Kaffee

Kapitel

  1. Intro (00:00:00.000)
  2. Einleitung (00:00:37.165)
  3. Hörerfeedback (00:01:44.035)
  4. Scala Center Advisory Board and SIP-Meeting-Results Dezember 2016 (00:04:57.379)
  5. Scastie (00:10:45.389)
  6. ScalaDays 2017 (00:16:48.664)
  7. Let by-name implicit parameters have lazy semantics (00:19:21.880)
  8. Play 2.6 M1 (00:21:37.229)
  9. Contextual (00:41:04.259)
  10. Scala Enumerations (00:48:02.989)
  11. Outro (01:01:02.352)

Lizenz

Creative Commons Lizenzvertrag
Scala Profis von Benjamin Hagemeister & Sven Wiegand ist lizenziert unter einer Creative Commons Namensnennung — Keine Bearbeitungen 4.0 International Lizenz.

Über diese Lizenz hinausgehende Erlaubnisse kannst Du unter http://scalaprofis.de erhalten.

Titelsong basierend auf Wish You Were Here von THE.MADPIX.PROJECT lizensiert unter Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0).

  continue reading

Kapitel

1. Intro (00:00:00)

2. Einleitung (00:00:37)

3. Hörerfeedback (00:01:44)

4. Scala Center Advisory Board and SIP-Meeting-Results Dezember 2016 (00:04:57)

5. Scastie (00:10:45)

6. ScalaDays 2017 (00:16:48)

7. Let by-name implicit parameters have lazy semantics (00:19:21)

8. Play 2.6 M1 (00:21:37)

9. Contextual (00:41:04)

10. Scala Enumerations (00:48:02)

11. Outro (01:01:02)

15 Episoden

Alle Folgen

×
 
Loading …

Willkommen auf Player FM!

Player FM scannt gerade das Web nach Podcasts mit hoher Qualität, die du genießen kannst. Es ist die beste Podcast-App und funktioniert auf Android, iPhone und im Web. Melde dich an, um Abos geräteübergreifend zu synchronisieren.

 

Kurzanleitung