[
  {
    "start": 0.001,
    "end": 5.12,
    "text": "Also habe ich vielleicht 100 Tests oder so, die dieses Produkt abtesten und ich habe eigentlich"
  },
  {
    "start": 5.3,
    "end": 6.74,
    "text": "ein Produkt, das genau dasselbe kann,"
  },
  {
    "start": 7.18,
    "end": 9.0,
    "text": "aber ich muss trotzdem alle 100 Tests anfassen."
  },
  {
    "start": 10.08,
    "end": 13.78,
    "text": "Diese Uhr, die funktioniert komplett anders, weil der Sensor, den man sich um die Brust"
  },
  {
    "start": 13.88,
    "end": 14.94,
    "text": "macht, der misst die Elektroden,"
  },
  {
    "start": 15.14,
    "end": 18.38,
    "text": "den elektrischen Impuls und die Uhr, die macht es optisch."
  },
  {
    "start": 19.68,
    "end": 23.06,
    "text": "Da ist schon ein bisschen KI verwendet worden, aber die Engine von Balder, die ist tatsächlich"
  },
  {
    "start": 23.2,
    "end": 24.86,
    "text": "noch Oldschool-Handarbeit."
  },
  {
    "start": 26.9,
    "end": 29.2,
    "text": "Das ist so viel, das schaffe ich in meinem Leben, glaube ich, gar nicht."
  },
  {
    "start": 30.88,
    "end": 35.38,
    "text": "Hallo und herzlich willkommen zu einer neuen Folge von Podcast Software Testing."
  },
  {
    "start": 35.78,
    "end": 41.32,
    "text": "Ich bin Richie und habe wieder eine Folge von der TACON 2026 aus Leipzig mitgebracht."
  },
  {
    "start": 41.52,
    "end": 43.38,
    "text": "Bei mir zu Gast war Max Stahlschmidt."
  },
  {
    "start": 43.53,
    "end": 47.12,
    "text": "Mit ihm habe ich über sein Open Source Test Framework Balder gesprochen."
  },
  {
    "start": 47.62,
    "end": 52.6,
    "text": "Warum bewährte Frameworks bei Produktvarianten an ihre Grenzen stoßen, wie er Testlogik"
  },
  {
    "start": 52.64,
    "end": 57.48,
    "text": "und Implementierung trennt und wie er 100 verschiedene End-to-End-Tests von einem Gerät"
  },
  {
    "start": 57.48,
    "end": 58.62,
    "text": "auf das andere bringt,"
  },
  {
    "start": 58.88,
    "end": 60.46,
    "text": "ohne die Tests selbst anzufassen."
  },
  {
    "start": 60.66,
    "end": 62.36,
    "text": "Das erfahrt ihr in dieser Folge."
  },
  {
    "start": 62.6,
    "end": 63.74,
    "text": "Und jetzt viel Spaß damit."
  },
  {
    "start": 74.02,
    "end": 75.46,
    "text": "Hallo Max, schön, dass du da bist."
  },
  {
    "start": 75.68,
    "end": 77.52,
    "text": "Hallo Richie, vielen Dank für die Einladung."
  },
  {
    "start": 77.88,
    "end": 78.08,
    "text": "Freut mich."
  },
  {
    "start": 78.2,
    "end": 81.2,
    "text": "Wir haben gerade gesprochen über deine Zeit in Mauritius."
  },
  {
    "start": 81.27,
    "end": 82.26,
    "text": "Ich hoffe, ich darf das hier so sagen,"
  },
  {
    "start": 82.62,
    "end": 83.82,
    "text": "dass du da eine Zeit lang gelebt hast."
  },
  {
    "start": 83.82,
    "end": 85.9,
    "text": "Und ich war gerade vor ein paar Monaten dort auf der Insel."
  },
  {
    "start": 85.92,
    "end": 86.76,
    "text": "das ist eine tolle Insel."
  },
  {
    "start": 87.08,
    "end": 90.14,
    "text": "Da hat man gerade einen schönen Aufhänger für einen netten Plausch."
  },
  {
    "start": 90.68,
    "end": 92.36,
    "text": "Das stimmt, ja. Ich bin knapp verpasst bei der Konferenz."
  },
  {
    "start": 92.74,
    "end": 94.36,
    "text": "Drei Monate vor bin ich zurückgezogen."
  },
  {
    "start": 94.46,
    "end": 94.58,
    "text": "Ja,"
  },
  {
    "start": 94.76,
    "end": 94.88,
    "text": "genau."
  },
  {
    "start": 95.66,
    "end": 96.2,
    "text": "Ja gut,"
  },
  {
    "start": 96.4,
    "end": 97.4,
    "text": "manchmal ist das Timing etwas meins."
  },
  {
    "start": 97.4,
    "end": 97.98,
    "text": "Ist es halt so."
  },
  {
    "start": 98.14,
    "end": 98.2,
    "text": "Ja,"
  },
  {
    "start": 98.44,
    "end": 98.54,
    "text": "genau."
  },
  {
    "start": 98.74,
    "end": 102.66,
    "text": "Aber jetzt bist du auf einer anderen Konferenz. Wir sind hier auf der TACON 2026 in"
  },
  {
    "start": 102.84,
    "end": 106.22,
    "text": "Leipzig und du hast deinen Vortrag schon gehabt. Also entspannt,"
  },
  {
    "start": 106.4,
    "end": 108.679,
    "text": "zweiter Tag läuft jetzt so langsam"
  },
  {
    "start": 108.68,
    "end": 110.04,
    "text": "ins Finale."
  },
  {
    "start": 111.28,
    "end": 115.9,
    "text": "Und ja, ich habe dein Abstract gelesen vorneweg und habe mir gedacht, ein Thema,"
  },
  {
    "start": 116.46,
    "end": 118.04,
    "text": "worüber wir uns einmal unterhalten sollten."
  },
  {
    "start": 118.54,
    "end": 122.8,
    "text": "Weil du hast dir überlegt, du schreibst dein eigenes Test Framework, oder?"
  },
  {
    "start": 123.44,
    "end": 125.74,
    "text": "Genau, also überlegt habe ich es mir nicht."
  },
  {
    "start": 125.96,
    "end": 131.18,
    "text": "Es war ja so, dass mich die damalige Arbeit ein bisschen darauf gebracht hat,"
  },
  {
    "start": 131.74,
    "end": 134.12,
    "text": "dass es ja oft schon das Problem gibt,"
  },
  {
    "start": 134.78,
    "end": 137.88,
    "text": "gerade jetzt beim Embedded Testing, da stammt es eigentlich her,"
  },
  {
    "start": 138.16,
    "end": 140.98,
    "text": "dass wir mehrere Produktvarianten haben,"
  },
  {
    "start": 141.3,
    "end": 147.16,
    "text": "die schon einen großen Set an gleichen Funktionen mitnehmen in die neue Variante,"
  },
  {
    "start": 147.74,
    "end": 150.8,
    "text": "aber sich halt trotzdem immer was ändert. Also kommt mal ein neues Protokoll hinzu,"
  },
  {
    "start": 151.2,
    "end": 154.66,
    "text": "da wird mal das optimiert, dann kommt die Schnittstelle weg und dafür kommt das ran."
  },
  {
    "start": 155.16,
    "end": 156.64,
    "text": "Aber so der Kern von dem Ganzen,"
  },
  {
    "start": 156.8,
    "end": 158.28,
    "text": "der bleibt schon oft immer gleich."
  },
  {
    "start": 158.54,
    "end": 161.78,
    "text": "Und das haben wir damals schon versucht, bei der Firma da noch,"
  },
  {
    "start": 162.12,
    "end": 164.34,
    "text": "das in der Testautomation abzubilden,"
  },
  {
    "start": 164.34,
    "end": 166.16,
    "text": "dass man da halt die Elemente wiederverwenden kann,"
  },
  {
    "start": 166.44,
    "end": 169.84,
    "text": "aber sind da immer an Grenzen gestoßen mit bewährten Testframeworks."
  },
  {
    "start": 170.06,
    "end": 175.74,
    "text": "Und da ist dann die Idee daraus entstanden von Balder, also von dem Tool, wo ich da..."
  },
  {
    "start": 175.9,
    "end": 178.12,
    "text": "Das werden wir natürlich dann auch verlinken unten,"
  },
  {
    "start": 178.3,
    "end": 184.66,
    "text": "aber was ist denn so das Kernkonzept, oder was macht Balder spezifisch gut?"
  },
  {
    "start": 185.38,
    "end": 191.92,
    "text": "Also die Idee dahinter ist, man trennt die Testlogik, also eine abstrakte Testlogik von der eigentlichen Implementierung."
  },
  {
    "start": 192.46,
    "end": 195.46,
    "text": "Und dann hat man sozusagen einen Test, der sagt, das definiert man dann einfach."
  },
  {
    "start": 195.58,
    "end": 201.22,
    "text": "Man hat jetzt zum Beispiel ein Simulations-Device, das schickt dann was raus."
  },
  {
    "start": 201.68,
    "end": 205.94,
    "text": "Ich lese es mit dem Leser wieder entgegen und mache dann den Vergleich und schaue,"
  },
  {
    "start": 206.04,
    "end": 206.98,
    "text": "ob es in der Toleranz liegt."
  },
  {
    "start": 207.1,
    "end": 208.6,
    "text": "Das ist jetzt der abstrakte Test, den ich habe."
  },
  {
    "start": 208.66,
    "end": 209.62,
    "text": "Ich habe noch gar nicht definiert,"
  },
  {
    "start": 209.88,
    "end": 212.94,
    "text": "mit welcher Technologie oder was das Device überhaupt ist."
  },
  {
    "start": 213.46,
    "end": 214.82,
    "text": "Aber den Test habe ich schon mal gegeben."
  },
  {
    "start": 214.86,
    "end": 216.96,
    "text": "Und jetzt baue ich die Implementierung dazu"
  },
  {
    "start": 218.34,
    "end": 222.12,
    "text": "und fülle diese abstrakten Funktionen dann einfach mit Inhalt für meinen Anwendungsfall."
  },
  {
    "start": 222.14,
    "end": 227.64,
    "text": "Wenn sich jetzt zum Beispiel das Protokoll ändert, dann tausche ich einfach nur den Teil aus und kann den Test wiederverwenden."
  },
  {
    "start": 228.4,
    "end": 235.94,
    "text": "Und somit habe ich halt diese Abstraktion geschaffen, dass ich wirklich den Test wiederverwenden kann, aber ich kann ihn jederzeit komplett individualisieren."
  },
  {
    "start": 237.48,
    "end": 245.24,
    "text": "Und so wie ich es herausgelesen habe, ist ja ein Spezifikum ja auch ein bisschen, dass man mit diesen Konfigurationen auch besser arbeiten kann."
  },
  {
    "start": 245.28,
    "end": 250.76,
    "text": "Also dass das dann quasi auf eben verschiedenen Konfigurationen läuft und man eigentlich den Test nur einmal macht."
  },
  {
    "start": 250.78,
    "end": 254.2,
    "text": "Hast du da noch Beispiele für uns konkret, dass wir uns das mal bildlich vorstellen können?"
  },
  {
    "start": 254.8,
    "end": 257.239,
    "text": "Ja, zum Beispiel, also bei meinem Vortrag,"
  },
  {
    "start": 257.53,
    "end": 259.579,
    "text": "da habe ich ein, also das habe ich wirklich auch,"
  },
  {
    "start": 259.65,
    "end": 263.3,
    "text": "das haben wir bei uns in der Firma komplett nachgebaut als Pilotprojekt einfach."
  },
  {
    "start": 263.88,
    "end": 271.48,
    "text": "Und da haben wir Geräte bestellt von verschiedenen Herstellern, so Sport-Herzfrequenz-Sensor,"
  },
  {
    "start": 271.48,
    "end": 274.36,
    "text": "die man sich so in die Brust macht da hauptsächlich zum Joggen."
  },
  {
    "start": 275.18,
    "end": 277.74,
    "text": "Und die haben wir im End-to-End-Bereich dann getestet."
  },
  {
    "start": 277.78,
    "end": 280.14,
    "text": "Da hat man dann erst mal die Tests für einen Sensor hoch."
  },
  {
    "start": 280.14,
    "end": 282.9,
    "text": "Der hatte dann noch ein kleines Feature-Set gehabt, der konnte halt Bluetooth,"
  },
  {
    "start": 283.5,
    "end": 283.76,
    "text": "aber zum"
  },
  {
    "start": 283.9,
    "end": 285.92,
    "text": "Beispiel nicht weitere Protokolle."
  },
  {
    "start": 286.82,
    "end": 288.08,
    "text": "Und dann kam ein neuer dazu."
  },
  {
    "start": 288.3,
    "end": 291.86,
    "text": "Der hat eben dann noch ANT+, das ist so ein Protokoll im Sportbereich, unterstützt."
  },
  {
    "start": 292.88,
    "end": 297.24,
    "text": "Und dann ist halt die Idee, dass man Balder dann hernimmt und man kann die Tests wieder"
  },
  {
    "start": 297.44,
    "end": 300.94,
    "text": "verwenden. Man kann die Sachen anpassen, die sich jetzt in dem bestehenden Feature-Set"
  },
  {
    "start": 301.02,
    "end": 301.44,
    "text": "geändert hat."
  },
  {
    "start": 301.84,
    "end": 305.259,
    "text": "Aber ich kann jetzt zum Beispiel die Tests, ob der in der Messgenauigkeit das"
  },
  {
    "start": 305.26,
    "end": 309.84,
    "text": "ganze durchführt, das kann ich auch auf ANT+ portieren und kann den ganzen Test-Set, den"
  },
  {
    "start": 309.92,
    "end": 310.8,
    "text": "ich dafür benutzt habe,"
  },
  {
    "start": 311.16,
    "end": 312.18,
    "text": "kann ich einfach wiederverwenden."
  },
  {
    "start": 312.72,
    "end": 313.88,
    "text": "Das ist zum Beispiel was Balder kann."
  },
  {
    "start": 314.36,
    "end": 317.38,
    "text": "Oder was dann der nächste Schritt war, man kann sich ja vorstellen, dass so ein Hersteller"
  },
  {
    "start": 317.72,
    "end": 318.92,
    "text": "dann auch mal so eine Uhr macht,"
  },
  {
    "start": 319.98,
    "end": 321.74,
    "text": "aber diese Uhr, die funktioniert komplett anders, weil"
  },
  {
    "start": 322.14,
    "end": 324.82,
    "text": "der Sensor, den man sich um die Brust macht, der misst per Elektroden,"
  },
  {
    "start": 325.54,
    "end": 326.22,
    "text": "den elektrischen"
  },
  {
    "start": 326.38,
    "end": 328.24,
    "text": "Impuls und die Uhr, die macht es optisch."
  },
  {
    "start": 328.98,
    "end": 334.08,
    "text": "Also da habe ich vielleicht 100 Tests oder so, die dieses Produkt abtesten und ich habe"
  },
  {
    "start": 334.02,
    "end": 335.84,
    "text": "eigentlich ein Produkt, das genau dasselbe kann,"
  },
  {
    "start": 336.3,
    "end": 337.64,
    "text": "aber ich muss trotzdem alle 100 Tests"
  },
  {
    "start": 337.76,
    "end": 340.58,
    "text": "anfassen, weil ja jeder Test sozusagen den Puls simuliert."
  },
  {
    "start": 341.58,
    "end": 342.8,
    "text": "Im End-to-End-Bereich sind wir."
  },
  {
    "start": 343.4,
    "end": 347.44,
    "text": "Und da ist Balder sehr, sehr stark, weil da muss ich einfach nur diese Feature austauschen,"
  },
  {
    "start": 347.52,
    "end": 348.34,
    "text": "nennt man das in Balder,"
  },
  {
    "start": 349.04,
    "end": 349.64,
    "text": "wo ich sage,"
  },
  {
    "start": 350.1,
    "end": 351.82,
    "text": "simuliere mir das Herz, das gibt es ein Feature."
  },
  {
    "start": 352.34,
    "end": 356.66,
    "text": "Und da ist halt die alte Implementierung war per Funktionsgenerator, dass es ein elektrisches"
  },
  {
    "start": 356.82,
    "end": 360.52,
    "text": "Signal ist und das tauscht man dann einfach aus mit einer Implementierung, die das Licht"
  },
  {
    "start": 360.6,
    "end": 361.42,
    "text": "simuliert zum Beispiel."
  },
  {
    "start": 362.12,
    "end": 362.66,
    "text": "Und das war es dann."
  },
  {
    "start": 365.199,
    "end": 367.88,
    "text": "Im Vordergrund waren es genau zwei Features, die wir austauschten."
  },
  {
    "start": 367.98,
    "end": 368.66,
    "text": "Aber es gibt noch eins,"
  },
  {
    "start": 368.98,
    "end": 371.96,
    "text": "der schaltet sich automatisch ein und aus, wenn man den an und abnimmt."
  },
  {
    "start": 372.3,
    "end": 372.98,
    "text": "Und"
  },
  {
    "start": 372.98,
    "end": 377.66,
    "text": "das muss man natürlich auch überschreiben, weil beim Optischen ist das dann das Umgebungslicht, das man simulieren muss."
  },
  {
    "start": 378.06,
    "end": 378.3,
    "text": "Damit"
  },
  {
    "start": 378.3,
    "end": 379.34,
    "text": "erkennt er, dass er abgegangen ist."
  },
  {
    "start": 379.78,
    "end": 379.94,
    "text": "Und"
  },
  {
    "start": 379.94,
    "end": 383.9,
    "text": "beim Funktionsgenerator macht man ihn einfach aus, weil du mit der Hoche um dich und dann funktioniert es. Und"
  },
  {
    "start": 383.9,
    "end": 385.96,
    "text": "das sind die zwei einzigsten Features, die wir ausgetauscht haben. Dann"
  },
  {
    "start": 385.96,
    "end": 389.32,
    "text": "hat man diese ganzen 100 End-to-End-Tests, die man hat,"
  },
  {
    "start": 389.68,
    "end": 391.14,
    "text": "portiert auf dieses andere Device."
  },
  {
    "start": 391.14,
    "end": 391.3,
    "text": "Ja,"
  },
  {
    "start": 391.5,
    "end": 392.88,
    "text": "und die Tests bleiben trotzdem,"
  },
  {
    "start": 393.12,
    "end": 396.98,
    "text": "dass ich die quasi auch an einer Stelle pflegen kann."
  },
  {
    "start": 397.16,
    "end": 399.82,
    "text": "Also die muss ich dann nicht noch zweimal, kein Copy-Paste."
  },
  {
    "start": 399.87,
    "end": 400.0,
    "text": "Nein,"
  },
  {
    "start": 400.36,
    "end": 402.42,
    "text": "genau, du bleibst im gleichen Projekt sozusagen."
  },
  {
    "start": 403.0,
    "end": 407.4,
    "text": "Du kannst sie auch auslagern in eigene Packages und wenn es ganz groß ist, dann geht das auch natürlich."
  },
  {
    "start": 407.8,
    "end": 411.36,
    "text": "Aber in dem Fall jetzt, wo es überschaubar ist für die Tests, dann würde ich das in einem Projekt lassen"
  },
  {
    "start": 412.02,
    "end": 415.24,
    "text": "und mache dann einfach unterschiedliche Varianten, die ich aufrufe."
  },
  {
    "start": 415.34,
    "end": 419.3,
    "text": "Aber der Test, also für diese ganzen drei Produkte oder wenn man hat dann auch mehr,"
  },
  {
    "start": 420.38,
    "end": 422.0,
    "text": "gibt es keinen duplizierten Code."
  },
  {
    "start": 423.96,
    "end": 425.78,
    "text": "Wenn wir mal so an eine Ebene tiefer gehen,"
  },
  {
    "start": 425.96,
    "end": 426.84,
    "text": "rein technisch,"
  },
  {
    "start": 427.04,
    "end": 428.9,
    "text": "wie ist denn die Architektur"
  },
  {
    "start": 428.98,
    "end": 433.06,
    "text": "des Frameworks aus, beziehungsweise auf welcher technologischen Basis ist es gebaut?"
  },
  {
    "start": 433.68,
    "end": 439.3,
    "text": "Es ist ein Python-Test-Framework und es hat eigentlich keine Dependencies."
  },
  {
    "start": 439.94,
    "end": 444.16,
    "text": "Also es ist komplett von Grund auf gebaut, weil dieser Matching-Algorithmus, also da"
  },
  {
    "start": 443.98,
    "end": 448.96,
    "text": "wird ja vorne mit gemeint, es wird getrennt in abstrakter Testlogik und in der Implementierung."
  },
  {
    "start": 449.03,
    "end": 454.82,
    "text": "In Balder nennt man die abstrakte Testlogik Szenarien und die Implementierung sind die"
  },
  {
    "start": 455.0,
    "end": 455.26,
    "text": "Setups."
  },
  {
    "start": 455.86,
    "end": 456.46,
    "text": "Und Szenarien,"
  },
  {
    "start": 456.86,
    "end": 458.06,
    "text": "da definierst du,"
  },
  {
    "start": 458.59,
    "end": 460.76,
    "text": "was brauche ich, um diesen Test, der ist der Test mit"
  },
  {
    "start": 460.78,
    "end": 464.12,
    "text": "untergeordnet, auszuführen und im Setup schreibe ich rein, was habe ich."
  },
  {
    "start": 465.06,
    "end": 468.24,
    "text": "Und dann tut Balder später automatisch das Mappen."
  },
  {
    "start": 469.24,
    "end": 470.34,
    "text": "Also der schaut sich dann an,"
  },
  {
    "start": 470.76,
    "end": 472.779,
    "text": "okay, beim Szenario steht zum Beispiel drin, ich brauche ein"
  },
  {
    "start": 472.78,
    "end": 476.04,
    "text": "was den Herzimpuls raussendet."
  },
  {
    "start": 476.36,
    "end": 478.44,
    "text": "Ich brauche ein anderes Device, was es lesen kann."
  },
  {
    "start": 479.36,
    "end": 481.16,
    "text": "Die drei Devices sind irgendwie verbunden."
  },
  {
    "start": 481.86,
    "end": 483.18,
    "text": "So kann ich den Test so runterschreiben."
  },
  {
    "start": 483.54,
    "end": 487.24,
    "text": "Und im Setup tue ich dann sozusagen die Implementierung von diesen einzelnen Features,"
  },
  {
    "start": 487.24,
    "end": 488.12,
    "text": "die die Devices haben,"
  },
  {
    "start": 488.3,
    "end": 488.74,
    "text": "zuweisen."
  },
  {
    "start": 490.18,
    "end": 490.32,
    "text": "Okay,"
  },
  {
    "start": 490.72,
    "end": 492.42,
    "text": "das heißt, dass ich kann es quasi autark nutzen."
  },
  {
    "start": 492.86,
    "end": 493.0,
    "text": "Genau."
  },
  {
    "start": 493.12,
    "end": 497.28,
    "text": "Also ich habe quasi keine Abhängigkeit und kann es dann damit dann einordnen."
  },
  {
    "start": 497.28,
    "end": 499.74,
    "text": "Genau, das war eigentlich ein notwendiger Schritt, das so zu machen,"
  },
  {
    "start": 499.74,
    "end": 503.72,
    "text": "weil alle anderen Frameworks, also es war immer die Idee, das auf Pytest aufzubauen,"
  },
  {
    "start": 504.3,
    "end": 509.9,
    "text": "aber Pytest hat dieses Matching, das hat das nicht und man würde dann viel zu viel"
  },
  {
    "start": 510.36,
    "end": 514.219,
    "text": "Zweck entfremden vom Pytest, das was dann eigentlich das Ganze unübersichtlich und"
  },
  {
    "start": 514.7,
    "end": 519.34,
    "text": "schwieriger macht und man kann es sowieso nicht integrieren ins Pytest-Ökosystem,"
  },
  {
    "start": 519.479,
    "end": 524.039,
    "text": "weil es einfach komplett anders aufgebaut ist durch dieses Matching."
  },
  {
    "start": 525.0,
    "end": 531.54,
    "text": "Wie ist denn die Ablage oder die Storage oder wie auch immer von den Testfällen?"
  },
  {
    "start": 534.11,
    "end": 538.72,
    "text": "Kann ich die irgendwo in anderen Systemen auch haben und dann da wieder nutzen oder ist das quasi nur in dem Framework?"
  },
  {
    "start": 538.95,
    "end": 540.58,
    "text": "Und genauso zum Reporting,"
  },
  {
    "start": 541.8,
    "end": 543.46,
    "text": "wie kommen da Ergebnisse raus?"
  },
  {
    "start": 543.58,
    "end": 543.8,
    "text": "Ja,"
  },
  {
    "start": 544.47,
    "end": 546.4,
    "text": "also es ist schon so,"
  },
  {
    "start": 546.56,
    "end": 552.26,
    "text": "dass man die Testfälle selbst im Balder Ökosystem,"
  },
  {
    "start": 553.44,
    "end": 560.02,
    "text": "ja die funktionieren eigentlich da drin, weil man ja wirklich im Testfall abstrakte Sachen eigentlich aufruft und Balder mappt das dann erst zusammen."
  },
  {
    "start": 560.51,
    "end": 567.16,
    "text": "Also man kann die eigentlich jetzt wirklich schwierig auf andere portieren, aber das ist eigentlich auch gar nicht so die Idee,"
  },
  {
    "start": 567.38,
    "end": 572.14,
    "text": "sondern du hast dieses System und das ist so definiert,"
  },
  {
    "start": 572.79,
    "end": 574.24,
    "text": "das braucht es einfach so in der Art."
  },
  {
    "start": 576.64,
    "end": 578.48,
    "text": "Und bezüglich Reporting oder so?"
  },
  {
    "start": 578.73,
    "end": 578.84,
    "text": "Genau,"
  },
  {
    "start": 579.2,
    "end": 580.24,
    "text": "ich habe gerade überlegt, was da nötig ist."
  },
  {
    "start": 580.24,
    "end": 580.82,
    "text": "Ja, was war das zweite?"
  },
  {
    "start": 582.14,
    "end": 586.86,
    "text": "Wir haben aktuell JUnit Plugin, also das Ganze kann man erweitern, das ist eine Plugin Engine,"
  },
  {
    "start": 587.04,
    "end": 592.24,
    "text": "man kann beliebige Plugins hinzubauen und da gibt es aktuell ein JUnit Plugin,"
  },
  {
    "start": 592.38,
    "end": 592.58,
    "text": "das,"
  },
  {
    "start": 592.78,
    "end": 594.62,
    "text": "was man ja sehr viel im Reporting machen kann."
  },
  {
    "start": 595.18,
    "end": 597.56,
    "text": "Aber mehr ist noch in der Pipeline,"
  },
  {
    "start": 597.76,
    "end": 599.98,
    "text": "aber da haben wir jetzt noch nicht fertige Anbindung."
  },
  {
    "start": 600.16,
    "end": 601.86,
    "text": "Alles, was man mit JUnit-Files machen kann,"
  },
  {
    "start": 602.34,
    "end": 603.32,
    "text": "das geht da natürlich."
  },
  {
    "start": 604.579,
    "end": 606.74,
    "text": "Aber so andere Tools anbinden direkt,"
  },
  {
    "start": 606.96,
    "end": 608.44,
    "text": "da müsste man sich halt eigene Plugins schreiben."
  },
  {
    "start": 608.52,
    "end": 608.64,
    "text": "Ja,"
  },
  {
    "start": 608.8,
    "end": 611.22,
    "text": "okay, aber das ist eine offene Architektur."
  },
  {
    "start": 611.32,
    "end": 611.44,
    "text": "Genau,"
  },
  {
    "start": 611.64,
    "end": 613.5,
    "text": "weil der ist komplett MIT-lizenziert."
  },
  {
    "start": 613.62,
    "end": 618.12,
    "text": "Also man kann da jederzeit ranmachen und eben die Plugin-Engine ermöglicht dann,"
  },
  {
    "start": 618.18,
    "end": 619.52,
    "text": "dass man auf alles, wie bei PyTest,"
  },
  {
    "start": 620.1,
    "end": 622.02,
    "text": "vielleicht noch nicht so gut wie bei PyTest,"
  },
  {
    "start": 622.06,
    "end": 628.2,
    "text": "Also es muss noch ein bisschen weiter ausgebaut werden, aber das Wichtigste kann man auf jeden Fall schon in der Plugin Engine sehr einfach anbinden."
  },
  {
    "start": 628.48,
    "end": 628.6,
    "text": "Ja,"
  },
  {
    "start": 628.78,
    "end": 628.9,
    "text": "ja."
  },
  {
    "start": 629.34,
    "end": 637.6,
    "text": "Und das Plugin habt ihr gemacht. Gibt es andere auch schon von Externen, die auch da irgendwie in dem Ökosystem drinnen,"
  },
  {
    "start": 637.85,
    "end": 638.52,
    "text": "die das nutzen?"
  },
  {
    "start": 638.69,
    "end": 639.82,
    "text": "Wieso weißt du davon bzw."
  },
  {
    "start": 641.2,
    "end": 642.38,
    "text": "auch das Tool erweitern?"
  },
  {
    "start": 643.34,
    "end": 648.02,
    "text": "Ja, Contributor, das war auch eigentlich der Hauptgrund, warum ich so ein bisschen hier bin. Das Projekt ist noch relativ neu."
  },
  {
    "start": 648.3,
    "end": 651.32,
    "text": "Also ich entwickle schon länger dran,"
  },
  {
    "start": 651.92,
    "end": 653.94,
    "text": "aber offiziell releast es ist jetzt noch nicht mal ein Jahr."
  },
  {
    "start": 655.639,
    "end": 659.4,
    "text": "Und wir wünschen uns natürlich, dass Leute, die Lust auf Open Source haben,"
  },
  {
    "start": 659.88,
    "end": 664.7,
    "text": "dass sie da noch ein bisschen mit einsteigen und vielleicht auch sagen, oh das klingt cool, da hätte ich Lust drauf."
  },
  {
    "start": 665.18,
    "end": 667.48,
    "text": "Und da dann noch ein bisschen mehr mit dazu machen."
  },
  {
    "start": 668.439,
    "end": 671.68,
    "text": "Aber aktuell ist es noch, also das meiste bin tatsächlich ich."
  },
  {
    "start": 672.94,
    "end": 676.26,
    "text": "Ich weiß, dass es schon ein paar Leute aktiv benutzen."
  },
  {
    "start": 676.7,
    "end": 681.12,
    "text": "aber entwickeln wirklich mit ist noch ein bisschen mauer."
  },
  {
    "start": 681.4,
    "end": 682.44,
    "text": "Was machst du und dein Agent?"
  },
  {
    "start": 682.84,
    "end": 683.2,
    "text": "Nein,"
  },
  {
    "start": 683.56,
    "end": 683.68,
    "text": "tatsächlich,"
  },
  {
    "start": 684.82,
    "end": 686.1,
    "text": "das ganze Framework ist Handarbeit."
  },
  {
    "start": 686.78,
    "end": 688.44,
    "text": "Das hört man ja selten heute."
  },
  {
    "start": 688.64,
    "end": 689.48,
    "text": "Also es gibt,"
  },
  {
    "start": 689.76,
    "end": 692.98,
    "text": "man kann das erweitern mit sogenannten BalderHub-Paketen."
  },
  {
    "start": 693.44,
    "end": 695.34,
    "text": "Das ist so ähnlich wie Dockerhub, ist die Idee dahinter,"
  },
  {
    "start": 695.34,
    "end": 698.46,
    "text": "dass man dann schon fertige Tests eben für sich wiederverwenden kann."
  },
  {
    "start": 699.24,
    "end": 701.94,
    "text": "Und da habe ich tatsächlich letztens KI benutzt,"
  },
  {
    "start": 701.98,
    "end": 703.06,
    "text": "einfach weil es sehr angenehm ist,"
  },
  {
    "start": 705.22,
    "end": 708.66,
    "text": "für Django, also für so ein Webframework, da gibt es eine Admin-Interface,"
  },
  {
    "start": 708.72,
    "end": 711.46,
    "text": "was schon vorgefertigt ist und da gibt es schon fertige Features dann, die du in"
  },
  {
    "start": 711.46,
    "end": 714.22,
    "text": "Balder benutzen kannst. Dann brauchst du gar nichts mehr schreiben, wenn du da ein paar Tests machst,"
  },
  {
    "start": 714.28,
    "end": 715.28,
    "text": "sondern einfach nur konfigurieren,"
  },
  {
    "start": 715.74,
    "end": 718.36,
    "text": "was da jetzt passieren soll sozusagen und die"
  },
  {
    "start": 718.56,
    "end": 719.64,
    "text": "Selektoren rauszufinden,"
  },
  {
    "start": 719.92,
    "end": 722.66,
    "text": "die einzelnen, da ist KI halt wirklich sehr cool."
  },
  {
    "start": 722.88,
    "end": 723.62,
    "text": "Da habe ich einfach gesagt,"
  },
  {
    "start": 723.82,
    "end": 724.86,
    "text": "bitte suchen wir das alles mal raus."
  },
  {
    "start": 725.24,
    "end": 726.12,
    "text": "Das hat er gemacht."
  },
  {
    "start": 726.24,
    "end": 729.379,
    "text": "Also das ist ja schon ein bisschen KI verwendet worden, aber die Engine von Balder"
  },
  {
    "start": 729.38,
    "end": 731.44,
    "text": "tatsächlich noch Oldschool-Handarbeit."
  },
  {
    "start": 731.98,
    "end": 732.3,
    "text": "Richtig,"
  },
  {
    "start": 733.04,
    "end": 734.16,
    "text": "manuelle Handarbeit, genau."
  },
  {
    "start": 735.4,
    "end": 736.58,
    "text": "Du hast ja jetzt quasi"
  },
  {
    "start": 736.66,
    "end": 740.3,
    "text": "Beispiele gebracht, die stark aus dem Geräte-Kontext kommen,"
  },
  {
    "start": 740.46,
    "end": 741.86,
    "text": "also auch irgendwo mit"
  },
  {
    "start": 742.4,
    "end": 747.08,
    "text": "Protokollen, mit Embedded-Arbeiten, mit verschiedenen Komponenten, die da zusammenwirken."
  },
  {
    "start": 747.4,
    "end": 747.9,
    "text": "Siehst du da"
  },
  {
    "start": 748.0,
    "end": 754.76,
    "text": "den primären Nutzen oder ist das quasi auch transportabel in andere Welten oder wo siehst du"
  },
  {
    "start": 754.48,
    "end": 757.66,
    "text": "den größten Nutzen, wenn halt jemand sagt,"
  },
  {
    "start": 757.84,
    "end": 759.34,
    "text": "das würde ich mal anschauen wollen."
  },
  {
    "start": 759.58,
    "end": 759.7,
    "text": "Ja,"
  },
  {
    "start": 760.16,
    "end": 763.14,
    "text": "also es ist eigentlich von den Domänen her komplett offen."
  },
  {
    "start": 763.32,
    "end": 763.96,
    "text": "Also es ist für alles,"
  },
  {
    "start": 764.28,
    "end": 765.66,
    "text": "initial war es mal für Embedded entwickelt."
  },
  {
    "start": 765.7,
    "end": 770.0,
    "text": "Und dann gab es tatsächlich so, dass wir bei uns in der Firma eher Kunden hatten,"
  },
  {
    "start": 770.12,
    "end": 771.46,
    "text": "die im Web-Bereich unterwegs sind."
  },
  {
    "start": 772.26,
    "end": 774.56,
    "text": "Und dann haben wir gedacht, okay, jetzt wäre es eigentlich ganz cool,"
  },
  {
    "start": 774.72,
    "end": 776.68,
    "text": "wenn es im Web aufgeht, theoretisch müsste es gehen,"
  },
  {
    "start": 776.76,
    "end": 779.9,
    "text": "aber man müsste da noch ein paar BalderHub-Pakete sozusagen dazu bauen,"
  },
  {
    "start": 779.96,
    "end": 782.42,
    "text": "die halt die ganzen Testfunktionen übernehmen sozusagen."
  },
  {
    "start": 783.2,
    "end": 785.86,
    "text": "Und das war jetzt eigentlich auch die Arbeit der letzten Monate hauptsächlich,"
  },
  {
    "start": 786.9,
    "end": 789.24,
    "text": "dass man da halt im Web-Bereich auch viel abtesten kann."
  },
  {
    "start": 789.26,
    "end": 791.12,
    "text": "Also wir haben ein BalderHub-Paket für Selenium."
  },
  {
    "start": 791.86,
    "end": 797.42,
    "text": "Das ist sozusagen ein Abstraktionslayer höher, der einfach alles das Browser-Steuern übernimmt."
  },
  {
    "start": 797.52,
    "end": 800.52,
    "text": "Das kann man theoretisch auch mit anderen Frameworks wie Playwright oder so mal austauschen,"
  },
  {
    "start": 800.52,
    "end": 801.78,
    "text": "aber aktuell haben wir nur Selenium."
  },
  {
    "start": 802.74,
    "end": 806.12,
    "text": "Dann haben wir ein HTML-Paket, da kann man dann Page-Objekte definieren einfach."
  },
  {
    "start": 806.64,
    "end": 808.42,
    "text": "Da braucht man sich dann auch gar nicht mehr um Selenium kümmern,"
  },
  {
    "start": 808.48,
    "end": 810.54,
    "text": "sondern man sagt einfach, ich habe jetzt hier ein <div>-Element,"
  },
  {
    "start": 811.0,
    "end": 814.34,
    "text": "Das hat den und den Selector und dann kann ich das im Page-Objekt einfach ansteuern."
  },
  {
    "start": 814.94,
    "end": 821.64,
    "text": "Und was eines der größten Nutzteile der Hub-Pakete ist, die im Web-Bereich sind,"
  },
  {
    "start": 822.24,
    "end": 822.36,
    "text": "ist"
  },
  {
    "start": 822.52,
    "end": 825.26,
    "text": "das CRUD-Paket, also Create, Retrieve, Update,"
  },
  {
    "start": 825.44,
    "end": 828.04,
    "text": "Delete und das Data-Paket, weil da kann man"
  },
  {
    "start": 828.12,
    "end": 831.34,
    "text": "sich dann sozusagen Datenumgebungen definieren, einfach Datenmodelle,"
  },
  {
    "start": 831.7,
    "end": 832.4,
    "text": "dass ich jetzt zum Beispiel"
  },
  {
    "start": 832.6,
    "end": 835.54,
    "text": "einen Benutzer habe mit Vornamen, Nachnamen und so weiter und so fort."
  },
  {
    "start": 836.44,
    "end": 840.84,
    "text": "Und mit CRUD kann ich dann einfach sagen, okay, jetzt create mir das Objekt und dann"
  },
  {
    "start": 840.92,
    "end": 845.02,
    "text": "kann ich wieder das andere Paket nehmen, gibt es auch für REST, und dann kann ich"
  },
  {
    "start": 845.06,
    "end": 849.62,
    "text": "das zum Beispiel über REST erstellen und über das Frontend dann, dann schreibe"
  },
  {
    "start": 849.66,
    "end": 853.0,
    "text": "ich mir ein Feature, um es zurückzulesen, kann ich dann lesen, ob dies angelegt wurde"
  },
  {
    "start": 853.16,
    "end": 853.56,
    "text": "zum Beispiel."
  },
  {
    "start": 853.92,
    "end": 855.1,
    "text": "Und das ist dann,"
  },
  {
    "start": 855.29,
    "end": 857.74,
    "text": "also da greife ich dann auf mehrere von diesen BalderHub-Paketen, je"
  },
  {
    "start": 857.74,
    "end": 862.76,
    "text": "nachdem, was ich brauche, zu und kann da meine Tests für Web eigentlich relativ gut aufbauen."
  },
  {
    "start": 863.2,
    "end": 865.32,
    "text": "was wir bisher hatten,"
  },
  {
    "start": 866.08,
    "end": 869.4,
    "text": "konnte man fast alles mit diesen CRUD-Paketen abdecken."
  },
  {
    "start": 869.79,
    "end": 873.36,
    "text": "Und das sind eben die Testlogik und die ganze Verifizierung und so ist das schon drin."
  },
  {
    "start": 873.82,
    "end": 875.08,
    "text": "Also definierst im Datenmodell,"
  },
  {
    "start": 875.24,
    "end": 876.58,
    "text": "okay, du hast jetzt optionale Felder,"
  },
  {
    "start": 876.74,
    "end": 877.58,
    "text": "das ist optional,"
  },
  {
    "start": 878.02,
    "end": 879.82,
    "text": "das muss ein String sein und so weiter und so fort."
  },
  {
    "start": 880.42,
    "end": 884.76,
    "text": "Und dann kannst du eben diese Features zum Lesen oder zum Schreiben,"
  },
  {
    "start": 885.5,
    "end": 886.96,
    "text": "beim REST sind die zum Beispiel auch schon fertig,"
  },
  {
    "start": 887.1,
    "end": 891.08,
    "text": "weil das ist ja schon klar, wie der Datensatz sozusagen da rein muss."
  },
  {
    "start": 892.02,
    "end": 895.26,
    "text": "Und wenn du jetzt natürlich eine eigene Umgebung hast, dann musst du halt vom Page-Objekt dann"
  },
  {
    "start": 895.36,
    "end": 895.9,
    "text": "dahin kommen,"
  },
  {
    "start": 896.28,
    "end": 897.28,
    "text": "dass du die Daten extrahierst."
  },
  {
    "start": 897.32,
    "end": 898.98,
    "text": "Du musst aber nur diese eine Schnittstelle schreiben,"
  },
  {
    "start": 899.34,
    "end": 900.66,
    "text": "das importieren und dann läuft"
  },
  {
    "start": 900.76,
    "end": 902.52,
    "text": "Balder die ganzen Tests durch, probiert es aus,"
  },
  {
    "start": 902.98,
    "end": 905.18,
    "text": "ob die Required-Felder,"
  },
  {
    "start": 905.58,
    "end": 906.88,
    "text": "also ob er"
  },
  {
    "start": 906.92,
    "end": 909.1,
    "text": "da entsprechende Fehlermeldungen gibt und so weiter."
  },
  {
    "start": 909.2,
    "end": 911.06,
    "text": "Das ist dann alles da schon vorgefertigt."
  },
  {
    "start": 911.12,
    "end": 914.52,
    "text": "Man muss eben immer nur den Teil noch hinzufügen, der halt individuell bei der eigenen Applikation"
  },
  {
    "start": 914.62,
    "end": 914.74,
    "text": "ist."
  },
  {
    "start": 916.779,
    "end": 917.62,
    "text": "Aber es ist,"
  },
  {
    "start": 917.82,
    "end": 919.48,
    "text": "also zu der Frage zurückzukommen,"
  },
  {
    "start": 919.7,
    "end": 922.88,
    "text": "sozusagen im Web-Bereich finde ich genauso"
  },
  {
    "start": 923.74,
    "end": 925.9,
    "text": "sinnvoll wie im Embedded-Bereich,"
  },
  {
    "start": 926.26,
    "end": 928.8,
    "text": "wobei man natürlich im Embedded-Bereich dieses Variantenproblem,"
  },
  {
    "start": 928.88,
    "end": 930.34,
    "text": "glaube ich, ein bisschen intensiver hat."
  },
  {
    "start": 930.38,
    "end": 931.36,
    "text": "Das hat man, glaube ich, da mehr."
  },
  {
    "start": 931.48,
    "end": 931.7,
    "text": "Genau."
  },
  {
    "start": 932.08,
    "end": 934.74,
    "text": "Und das ist auch etwas, also ich kriege auch immer wieder ein bisschen Feedback, auch hier"
  },
  {
    "start": 934.76,
    "end": 937.82,
    "text": "beim Podcast, dass ja schon Embedded-Welt, die wünscht sich auch gerade so ein bisschen"
  },
  {
    "start": 937.96,
    "end": 941.42,
    "text": "mehr Fokus und auch neue Methoden, bessere Tools und so was."
  },
  {
    "start": 941.44,
    "end": 941.88,
    "text": "Und ich finde,"
  },
  {
    "start": 942.34,
    "end": 944.04,
    "text": "das ist ja auch ein guter Aufschlag in die Richtung."
  },
  {
    "start": 944.6,
    "end": 945.3,
    "text": "Ja, hoffe ich ja."
  },
  {
    "start": 945.82,
    "end": 949.56,
    "text": "Aber ich denke auch, wir haben wirklich gutes Feedback bekommen,"
  },
  {
    "start": 950.68,
    "end": 951.56,
    "text": "gerade weil es auch wirklich"
  },
  {
    "start": 951.56,
    "end": 952.6,
    "text": "immer oft gebraucht ist."
  },
  {
    "start": 954.06,
    "end": 958.76,
    "text": "Diese Dimension des Produkts sozusagen, dass ich jetzt über verschiedene Produkte hinweg"
  },
  {
    "start": 959.62,
    "end": 961.94,
    "text": "trotzdem den gleichen Test verwenden kann,"
  },
  {
    "start": 962.58,
    "end": 964.5,
    "text": "das gibt es halt so zumindest meines Wissens"
  },
  {
    "start": 964.68,
    "end": 965.42,
    "text": "noch nicht so wirklich."
  },
  {
    "start": 966.1,
    "end": 968.66,
    "text": "Und das kann Balder halt auch sehr gut abbilden."
  },
  {
    "start": 969.62,
    "end": 973.1,
    "text": "Du hast jetzt auch schon vorher gesagt, du siehst ein bisschen was auch in der Pipeline."
  },
  {
    "start": 973.34,
    "end": 977.54,
    "text": "Du kannst uns noch sagen, was sind so große Meilensteine, die du noch hast für das Framework, wo du sagst,"
  },
  {
    "start": 977.84,
    "end": 979.8,
    "text": "das muss jetzt auf jeden Fall noch rein, weil das wünsche ich mir."
  },
  {
    "start": 981.18,
    "end": 983.44,
    "text": "Das ist so viel, das schaffe ich in einem Leben, glaube ich, gerade."
  },
  {
    "start": 985.699,
    "end": 990.14,
    "text": "Deswegen ist das große Ding einfach, dass noch Leute auch die Bock haben auf Open Source,"
  },
  {
    "start": 990.7,
    "end": 992.88,
    "text": "dass sie einfach, man kann BalderHub Projekte bauen,"
  },
  {
    "start": 993.1,
    "end": 994.78,
    "text": "man kann natürlich am Kern mitmachen,"
  },
  {
    "start": 995.96,
    "end": 997.6,
    "text": "dass da natürlich noch welche dazustoßen."
  },
  {
    "start": 997.6,
    "end": 998.92,
    "text": "Aber zu deiner Frage,"
  },
  {
    "start": 999.86,
    "end": 1003.66,
    "text": "was natürlich noch ist, viele BalderHub-Pakete sind noch im Beta-Zustand,"
  },
  {
    "start": 1003.7,
    "end": 1006.74,
    "text": "also da fehlt noch ein bisschen was, was man noch mit dazu bauen müsste."
  },
  {
    "start": 1007.78,
    "end": 1010.64,
    "text": "Das ist jetzt mal das, was jetzt das Prio Nr. 1 hat die nächsten Monate."
  },
  {
    "start": 1011.6,
    "end": 1017.3,
    "text": "Und dann natürlich allgemein, also im Ganzen Embedded Logic Analyzer wollen wir noch hinzufügen."
  },
  {
    "start": 1017.34,
    "end": 1022.04,
    "text": "Wir haben ein Paket für Funktionsgeneratoren, ein für Oszilloskop, da kann man ja schon sehr viel machen."
  },
  {
    "start": 1022.4,
    "end": 1027.02,
    "text": "Dann Logic Analyzer wäre noch was, was sehr wichtig wäre, denke ich."
  },
  {
    "start": 1027.96,
    "end": 1032.18,
    "text": "Dass man sozusagen beliebige Kurven vom Balder raus schicken kann und die wieder gegenlesen kann"
  },
  {
    "start": 1032.29,
    "end": 1034.78,
    "text": "oder beliebige Abfolgen wegschicken kann und sowas."
  },
  {
    "start": 1034.86,
    "end": 1037.939,
    "text": "Das ist, glaube ich, noch was sehr Wichtiges, was wir auch mit reinmachen wollen."
  },
  {
    "start": 1038.52,
    "end": 1042.62,
    "text": "Und im Web-Bereich dann vor allem so bekannte Frameworks, eben wie bei dem Django,"
  },
  {
    "start": 1042.74,
    "end": 1046.48,
    "text": "weil bei diesem Django Admin, das benutzen zumindest auch schon viele,"
  },
  {
    "start": 1046.88,
    "end": 1049.58,
    "text": "wo man relativ einfach Web-Applikationen hochziehen kann."
  },
  {
    "start": 1050.04,
    "end": 1052.1,
    "text": "Und das ist ja alles vorgegeben,"
  },
  {
    "start": 1052.28,
    "end": 1054.24,
    "text": "deswegen kann man da schon ein fertiges Paket bauen,"
  },
  {
    "start": 1055.16,
    "end": 1056.48,
    "text": "das dann andere einfach benutzen können."
  },
  {
    "start": 1056.78,
    "end": 1059.16,
    "text": "Und das sind solche Sachen, da wollen wir uns auch fokussieren,"
  },
  {
    "start": 1059.58,
    "end": 1062.3,
    "text": "weil das halt dann extrem, also da wird man extrem schnell,"
  },
  {
    "start": 1062.8,
    "end": 1068.14,
    "text": "weil man das, was schon da ist, was schon als Open Source Production Applikation,"
  },
  {
    "start": 1068.34,
    "end": 1069.96,
    "text": "also als Stud-Applikation da ist,"
  },
  {
    "start": 1070.6,
    "end": 1072.6,
    "text": "da dann sozusagen die Testing-Komponente bauen"
  },
  {
    "start": 1073.04,
    "end": 1076.3,
    "text": "und die parallel mitpflegen, dass man da eben sofort andocken kann"
  },
  {
    "start": 1076.34,
    "end": 1077.84,
    "text": "und dass man immer alles selbst schreiben lässt."
  },
  {
    "start": 1078.84,
    "end": 1081.48,
    "text": "Spannend, da sind schon ein paar Sachen offen, da höre ich immer was raus."
  },
  {
    "start": 1082.18,
    "end": 1085.44,
    "text": "Also hier den Aufruf hast du schon getätigt, wer da Interesse hat,"
  },
  {
    "start": 1085.84,
    "end": 1086.96,
    "text": "sich da mal reinzuklinken,"
  },
  {
    "start": 1087.06,
    "end": 1090.08,
    "text": "das auch mal zu nutzen zum einen, aber auch gemeinsam weiterzuentwickeln."
  },
  {
    "start": 1090.74,
    "end": 1094.8,
    "text": "Ich finde Open Source auch immer toll, wenn man so eine kritische Masse hat und diese"
  },
  {
    "start": 1096.56,
    "end": 1099.0,
    "text": "Intention auch weiterbringt und das auch macht."
  },
  {
    "start": 1099.16,
    "end": 1101.06,
    "text": "Das finde ich einen guten Aufruf hier auch."
  },
  {
    "start": 1101.48,
    "end": 1102.98,
    "text": "Wir werden das natürlich alles reinlegen,"
  },
  {
    "start": 1103.14,
    "end": 1104.08,
    "text": "auch in die Show Notes,"
  },
  {
    "start": 1104.35,
    "end": 1105.06,
    "text": "die Links dazu,"
  },
  {
    "start": 1105.6,
    "end": 1105.78,
    "text": "dass"
  },
  {
    "start": 1105.64,
    "end": 1107.84,
    "text": "dass man dich kontaktieren kann, dass man auch zum Projekt kommt."
  },
  {
    "start": 1108.44,
    "end": 1109.14,
    "text": "Liegt auf GitHub?"
  },
  {
    "start": 1109.4,
    "end": 1109.46,
    "text": "Ja,"
  },
  {
    "start": 1109.86,
    "end": 1111.36,
    "text": "also Balder liegt auf GitHub"
  },
  {
    "start": 1111.52,
    "end": 1112.8,
    "text": "und auch alle BalderHub-Projekte,"
  },
  {
    "start": 1113.29,
    "end": 1115.92,
    "text": "die wir haben, sind glaube ich um die 30 Stück oder so inzwischen schon"
  },
  {
    "start": 1116.22,
    "end": 1117.0,
    "text": "liegen auf GitHub."
  },
  {
    "start": 1117.08,
    "end": 1117.44,
    "text": "Ja, super."
  },
  {
    "start": 1118.48,
    "end": 1119.6,
    "text": "Max, vielen lieben Dank,"
  },
  {
    "start": 1119.76,
    "end": 1121.18,
    "text": "dass du das mal vorgestellt hast hier."
  },
  {
    "start": 1121.38,
    "end": 1122.16,
    "text": "Da war ich mit Möglichkeit,"
  },
  {
    "start": 1122.36,
    "end": 1122.48,
    "text": "ja."
  },
  {
    "start": 1122.52,
    "end": 1122.72,
    "text": "Ja,"
  },
  {
    "start": 1122.9,
    "end": 1127.04,
    "text": "das hat mir sehr gut gefallen, Max, so neue Ansätze und Ideen so durchzudenken,"
  },
  {
    "start": 1127.38,
    "end": 1128.12,
    "text": "finde ich immer schön."
  },
  {
    "start": 1128.66,
    "end": 1130.14,
    "text": "Ich wünsche dir viel Erfolg dabei,"
  },
  {
    "start": 1130.32,
    "end": 1131.38,
    "text": "dass das auch weitergeht."
  },
  {
    "start": 1131.42,
    "end": 1133.12,
    "text": "Vielleicht haben wir nächstes Jahr schon ein Update dazu."
  },
  {
    "start": 1133.54,
    "end": 1133.92,
    "text": "Gerne, ja."
  },
  {
    "start": 1134.08,
    "end": 1136.22,
    "text": "Und ich wünsche dir noch ganz viel Spaß hier auf der Konferenz."
  },
  {
    "start": 1136.44,
    "end": 1136.94,
    "text": "Vielen, vielen Dank."
  },
  {
    "start": 1137.16,
    "end": 1137.52,
    "text": "Danke dir."
  },
  {
    "start": 1137.66,
    "end": 1137.88,
    "text": "Danke."
  },
  {
    "start": 1138.64,
    "end": 1139.92,
    "text": "[Musik]"
  }
]