Coding Stream 2026! - PremiereRemote, aber von vorne - Tech Stack: Adobe UXP, TypeScript, ...? 702.gg
Premiere Remote wird modernisiert: Migration zu Adobe UXP
Die Migration zu UXP wurde als notwendig erachtet, da die alte CEP-Technologie veraltet war. Durch einen Migration Impact Assessment wurde bestätigt, dass die meisten Funktionen in UXP übertragbar sind. Das neue Setup ermöglicht direkteren Zugriff auf Premiere Pro und erheblich vereinfachte Entwicklung mit TypeScript und Hot Reload-Funktionen. Die Reduzierung der Komplexität um tausende Zeilen Code wurde als Hauptvorteil hervorgehoben.
Einleitung und technische Vorbereitung
00:00:0100:00:01 Okay, besser. Hi, hi, hi, hi. Ich wollte dieser Rock-Playlist ja eine Chance geben. So ist es nicht, aber... Also weiß ich nicht. Ich habe mich jetzt nicht so arg... Nicht so arg überzeugt, muss ich ehrlicherweise sagen. Hallo, guten Abend. Herzlich willkommen zu einem neuen Livestream.
00:06:37 Wild, oder? Metal streamen? Ja, ich bin ja immer noch so ein bisschen hin und her gerissen. Also die eine Hälfte zu mir will einfach sagen, scheiß drauf. Ich nutze hier dieses Feature, das man über mehrere Audiospuren streamen kann und habe dann einfach wirklich Musik, auf die ich Bock habe im Stream und gut ist. Aber die andere Hälfte von mir möchte, dass meine Streams auch gesehen werden und überlegt auch auf YouTube gleichzeitig zu streamen, jetzt wo Multistreaming mehr oder weniger normalisiert wurde.
00:07:06 Keine Ahnung. Zum Glück ist der überwiegende Großteil von mir zu sehr mit anderen Dingen beschäftigt, um Entscheidungen zu treffen. Deswegen bleibt alles so, wie es ist. I guess. Ah ja. Und bei euch so. Herzlich willkommen zurück. Mir fehlt noch einfach mein Stream Elements Overlay. Ich sehe gar nichts. Nicht Stream Awesome. Das würde zwar wenigstens funktionieren, aber ich suche Stream Elements.
00:07:40 So, Dashboard. Nein, ich möchte nicht eure 25.000 Sponsorings machen, die mir wirklich keinen Cent einbringen würden und wo ihr wahrscheinlich mehr dran verdient als ich. Das sind wir ehrlich, schon immer, man ist bekennungslang genug.
00:07:58 Früher war das mal anders, aber mittlerweile ist das nicht mehr so. So, jetzt seh ich auch was. Also Roboti und Daniel haben subscribt und liked Technik und der Bebelbrr. Sorry, verschluckt. Fincher und Melan und Ladislaus Postux.
00:08:20 Wenn wir da subscriben, Leute, die haben die geilsten Namen. Ich sag's immer wieder. Direkt nach Epic Flexo. Der Typ hat auch subscribed mit 91 Monaten. Und Syncopstar und Kegisneid auch. Und beide haben einen Roman geschrieben. Halbe Bibel. Rosen ist rot, Feilchen sind blau. Der gute Sonnagmorgen streamen Stab aus. Ich bin kein Poet. Daher rein mit dem Med. Du weißt, wie Reimen funktioniert, lieber Syncopstar, oder? Man reimt, wie man spricht, nicht wie man schreibt.
00:08:52 Man sagt Poet. Das reimt sich direkt auf Med. Nur weil da Pöt steht, musst du nicht Möt schreiben. Auch wenn es ziemlich lustig ist, sind wir ehrlich. Kegelsneid?
00:09:05 Wirklich führt diesen Laden hier an mit 110 Monaten. Servus, Abendstreams. Das darf ich, ich darf es noch erleben, doch. Beinahe ich im Donnerstick streamt. Jetzt, da ich 30 bin, muss ich mir das mit Satanismus noch mal überlegen. Wieso? 30 ist die Hälfte von 60 und 60 ist ziemlich nah an 66. Und jetzt, wo du 30 bist, bedeutet, dass du nur noch ein bisschen mehr als dein halbes Leben davon entfernt bist, endlich das beste Alter zu haben.
00:09:33 Vielleicht ist es ja doch nicht für mich, ich opfer mal eine Ziege darüber, das würde ich auch raten. Wahlweise kann man auch Kamel opfern, wenn Ziegen geradeaus sind. Ihr wisst ja, die Welt ist im Wandel. Überall eine Krise nach dem anderen, dann ist es manchmal schwierig, an Ziegen ranzukommen. Es ist leichter an Kamele ranzukommen, wegen Globalisierung und so. Wisst ihr Bescheid, ne? Euer Lieblings-PWL-Streamer hier am Start, ich kenne mich aus auf der Welt jetzt.
00:10:01 Okay, geil. Ja, herzlich willkommen zurück. Das glaubt man gar nicht, ne? Habt ihr nicht mitgerechnet, dass ich einfach so an einem Montagabend spontan live gehe? Hab ich auch nicht mitgerechnet.
00:10:14 I had stole my trucks, hat leider nicht genug Cracks, sonst würde das natürlich ausschließlich in der Grundlaufen, ist ja klar. Vielleicht, wie wär's, ich hab voll die innovative Idee, das hat noch keiner gemacht. Ich gründe einfach mein eigenes Metal-Label und dann bringe ich die groß raus, nutze aber auch gleichzeitig deren Musik bei mir im Stream als Hintergrundmusik. Was haltet ihr davon? Ich bin, ich find mich innovativ. Vielleicht bringe ich demnächst auch eine Cola raus.
00:10:45 früher gab es ja noch guten sonntagmorgen streams ja aber das einzige was ich was ich gut kann ist dinge ändern
00:10:55 Er ist endgültig verrückt geworden. Ich mache das jetzt beruflich. Moet ist Champagner, man merkt, du bist ganz unten in der Nahrungskette. Ich finde, das ist absolut, das sagt alles über mich, was man von mir wissen muss. Dass ich Moet nicht kenne, offensichtlicherweise noch nicht mal weiß, wie man es ausspricht und es mit Med verwechselt. Ich bin mehr Wikinger als Snob.
00:11:19 Und ich kenne mich wirklich kein bisschen mit Sekt aus. Holy fuck, Alter. Also ich kann nicht mal sagen, was Champagner besonders macht. Das ist kein Witz. Wenn jetzt Champagner besonders ist, weil er aus Champagner kommt, dann lache ich laut. Wahrscheinlich ist das sogar die Wahrheit. Aber...
00:11:35 Ich weiß nicht mehr, also garantiert, weil ich meine, guckt mich an, ich bin krass. Ich habe sicherlich in meinem Leben schon mal Champagner getrunken, aber ich kann euch nicht sagen, wann und wo und was. Und was an dem besonders schmeckt. Ich muss ehrlicherweise sagen, ich mag auch gar keinen Sekt. Guten Tag, Dr. Sebastian Harner. Preisträger von 25 Preisen. Elite Doktorand und Postdoc.
00:12:04 20 krasse Dinge hier einfügen. Also Sekt, das mag ich nicht so. In Brandenburg, ich glaube in Brandenburg sind nur noch ein paar mehr Kamele, auch ohne Müste, würde ich behaupten. Bei diesem kleinen komischen Loch da mitten in Brandenburg, wo so viele Menschen sitzen. Matze, danke für deine 73 Monate. Ist genauso, Champagner kommt aus Champagner, ist ja krass. Weißt du, woran ich das bemerkt habe? Ich bin ein Detektiv.
00:12:44 Am Namen. Krass, oder? Habe ich eins zusammengezählt. Kamen drei raus. Habe aber keinen Unterschied gemacht, weil in Champagner ist der Präfix, ich kann auch kluge Worte sagen, ich bin promoviert, ist der Präfix Champagner. Und dann ist ein R hinten dran. Man kriegt das, was drinsteht. H-ner, guckt mich an.
00:13:12 Deswegen bist du Doktor. Ich bin ein Doktor im Körper eines Realschülers. Das bin ich. Passt, ja, ne? Bei Melangs kriegt man Melan. Du bist voll der komische Vogel, das stimmt. Sogar namentlich. Da haben sie wirklich früher in der Grundschule Witze drüber gemacht. Weiß nicht, Grundschule? Nee, nicht Grundschule. Das war schon Gymnasium. Und zwar, als wir in Englisch das Wort Cocktail hatten.
00:13:46 Und dann irgendjemand erkannt hat, das heißt ja Hanerschwanz. I'm sorry, das geht nie wieder aus eurem Kopf raus. Selber Schuld, ihr habt hier eingeschaltet. Und was ich dann auch verbreitet hatte, war Cocker statt Haner. Das war immer mindestens genauso lustig. Cocktail Schwanz Schwanz, auch nicht schlecht. Und über den Cocker Spaniel reden wir auch gar nicht, oder?
00:14:16 Zum Glück habe ich dann später die Vornamen-Nachnamen-Witze erkannt. Weiß ich nicht, die habe ich sicherlich auch schon gedroppt, dass ich unbedingt einen potenziellen Sohn Mario nennen muss. Der hieß dann Marihuana. Vielleicht nenne ich ihn auch Paul, dann heißt er Paul Harner. Cocktailwürstchen, Schwanz, Schwanz, Schwanz. Alles klar, wir sind auf ein Nibu angekommen, würde ich sagen. Mal einen Sack Nivea ausgekippt, dann kann er mehr gerade laufen.
Projekt Premiere Remote und UXP-Einführung
00:14:4600:14:46 BF Moritz, vielen Dank für den Sub. Ja, herzlich willkommen zurück. Das hier ist ein Coding-Stream. Auch wenn ich bis jetzt mehr Code von mir gebe als Code, aber das ändert sich vielleicht im Laufe des Abends noch. Wir machen heute was total krasses, was ich nicht erst seit 2018 mache. Ich bin nämlich innovativ. Vielleicht soll ich eine Cola rausbringen. Ah ne, den hatten wir heute schon. Genauso innovativ mit den Erfindungen wie auch mit den Witzen. Wir...
00:15:14 schreiben heute an Premiere Remote weiter. Beziehungsweise wir schmeißen alles weg. Zum Copster hat schon Killed by Skates in der Natur auf. Und fangen mehr oder weniger von vorne an. Und ausnahmsweise möchte ich an dieser Stelle mal dazu sagen, bin ich nicht schuld. Premiere Remote kommt aus 2018. So wie manche Zuschauer von Minecraft at Space.
00:15:46 Und das ist kein Witz. Machst du das auf YouTube? Oh, Bruder. Das gehört nach OnlyFans, nicht nach YouTube. So wie manche Spieler im Crapentag. Nice, den merke ich mir. Das ist noch viel lustiger wie Let's Play Zuschauer.
00:16:07 Lotus Artifacts, danke für 100 Bits. Twitch und mein PayPal-Konto bedanken sich in ungefähr gleichem Maße. Ich bin mir gar nicht sicher, wer mehr von 100 Bits bekommt. Aber es gibt eine Hype-Truhe dafür. Hier, Gamification, ich mach sie auch auf. Wir kriegen, also ich krieg ein Actual Queen Emote. Geil. Teilen. Tut, tut. Nice. Ach, wir kriegen das alle? Krass.
00:16:39 Und ich habe sogar bei Scream Elements einen Bot drin, wo Emoji Ketten... Das ist ja wow!
00:16:48 Das ist genial, mindestens genauso gut wie Carlos Bubi. Vielen Dank für 48 Monate. 48 übrigens, zwei volle Tage in Stunden. So, Spaß beiseite. Also, ja, Sekunde, guck, Johannes Lusch. Das ist lustig, hat hier irgendjemand hier in Bits rumliegen sehen? So, ne, Bytes heißen die bei mir. Wie heißen die Dinger? Bytes. Ich bin nämlich Big Brain.
00:17:18 Ist Ali schwank oder warum die Jokes? Ne, also schlechte Jokes gibt es bei mir wirklich unabhängig von allem. Das solltet ihr mittlerweile eigentlich wissen. Ich mache hier mal kurz eine Sache auf. Das ist Photoshop, das suche ich nicht. Wir machen es auch mal für Freude. Jetzt teile ich mal meinen Bildschirm. Bin total gespannt, was passiert. Also es kann wirklich alles passieren. Ne, das hatte ich nämlich schon befürchtet. Ich habe nämlich meine...
00:17:52 Mein Overlay oder mein Game Overlay. Das hier. Okay, da ist noch irgendwas anderes kaputt. Das hier kommt auch raus. Habe ich ja irgendwann mal verschoben. Und jetzt muss ich die Konsequenzen davon... Das wird jetzt hässlich. Okay, das ist immerhin so. Das ergibt überhaupt keinen Sinn. For real.
00:18:26 Wie habe ich mir das damals gedacht? Das ergibt wirklich keinen Sinn. Das ist hier ein Fenster, das an diese Größe angepasst ist. Wie kann das sein, dass das zu klein ist? Okay, so passt es ungefähr. Wir werden noch lernen. Also eigentlich müsste es nämlich so sein. Ich bin eh der Meinung, dass das nochmal neu gemacht werden muss.
00:18:52 Mehr Remote geedit. Hä, das war ein Witz. Ich mach das Projekt nicht platt. Du bist ja kein professioneller Streamer. Also ich bin mittlerweile wirklich das Gegenteil eines professionellen Streamers. I'm so sorry. Ich bin mittlerweile professionell auf vielen anderen Ebenen und auch unter allen anderen Ebenen. Aber, also Streamer bin ich mittlerweile einfach nur, sonst ist dann high up high mit guter Kamera und ich kann auch sagen, dann grob von Qualität. Jetzt sind wir mal ehrlich.
00:19:18 So viele Videos gerade erscheinen, ist aber wirklich ein Meme. Fünf Wochen lang automatisieren. Hä, ist so...
00:19:25 Ist jetzt offiziell V2. V2 war 2020, das ist V4 oder sowas. Sorry, so ein Kopfscher. Ich schieße das Projekt halt wirklich nicht ab. Ich mache hier notwendige Dinge, damit das Projekt nicht abgeschossen wird. By the way, ein interessanter Gedanke jetzt, wo ich gerade dieses Overlay hier so sehe. Wie wäre es eigentlich, wenn wir hier so ein 21 zu 9 Stream rausmachen? Also wenn es wirklich quasi so ein 21 zu 9 Fenster wäre, so ungefähr?
00:19:50 Hier so bis der vollen Breite und hier oben drüber alle anderen oder unten drunter alle anderen Infos werden. Weil das wäre halt natürlicher an meinen Monitor angepasst. Dann könnte ich irgendwie die natürliche Breite, damit meine ich jetzt nicht mein Körpergewicht, benötiger nutzen. Also ich streame immer noch ein 16 zu 9. Die Frage ist halt, aktuell ist das eher so ein 4 zu 3 Stream. Versteht ihr? Und ich dachte, ich bin ein bisschen moderner. Und meiner Breite ist nichts natürlich. Doch, die ist all natural. Ich bin ein all natural Fettsack.
00:20:24 Also keine, wie heißt das Zeug, was alle schlucken, um Muskeln aufzubauen. Hier Gains, ne Anabolica. Ich bin full natural bodyweight. So, Premiere. UXP.
00:20:48 Lass mal kurz darüber reden. Also mal die ganzen Witze beiseite. Ich habe hier so ein Tooling, das heißt Stream Awesome. Das ist ganz cool und darum geht es deswegen heute auch gar nicht. Sondern... Ey, ich hatte einen langen Arbeitstag, okay? Ihr wolltet, dass ich auch mal abends streame. Ah, nee, ich wollte das. Egal. Ich habe hier so ein Tooling, das heißt Premiere Remote. Das ist total krass. Das wird weltweit genutzt. Das ist kein Witz. Ich kriege tatsächlich mal Zuschriften. Sowas wie Dude.
00:21:21 von Leuten irgendwo auf der Welt.
00:21:25 die total krass finden, was für heftige Dinge ich mache. Und dann gibt es auch Zuschriften, sowas wie UXP-Support, Hintergrund. Dieses Premiere Remote ist eine Schnittstelle von Premiere, die nennt sich CEP. Common Extensibility Plattform heißt es. Man fällt eigentlich irgendjemandem auf, dass ich passend zur Farbe von Premiere Remote meinen Hintergrund gefährt habe. Das war keine Absicht. Das ist literally einfach ein Template bei mir in meiner Raumbeleuchtung. Dieses CEP.
00:21:54 Haben wir ja auch schon viele Sachen hier im Stream gesehen, so über die letzten acht Jahre. Ich werde alt, möchte ich in der Stunde nochmal dazu sagen. Über die letzten acht Jahre haben wir das gesehen, dieses CEP ist wirklich so state of the art 2012-isch. Bis aus einer Zeit, da war Jay Krabby noch modern. Also das ist wirklich kein Joke.
00:22:15 Wenn jemand joggt, dann ist es deine Mutter. Und zwar reden wir nicht weiter darüber. Und diese CEP-Geschichte macht nicht so wahnsinnig viel Spaß. War immer ein bisschen outdated. Aber hey, es war immer noch der beste Weg, um Premiere zu erweitern. Und das lag mir persönlich am Herzen. Denn mir persönlich ist effizientes Arbeiten sehr wichtig. Deswegen investiere ich 98% meiner Freizeit da rein, zu optimieren, wie ich arbeite und komme dann nicht mehr zum Arbeiten.
00:22:45 Aber hey, ich bin jetzt Senior Software Engineer, ich mach das also auch professionell. Zurück zum Thema. Adobe CEP hat zwar einige Paints, aber es hat gut funktioniert. Aber es wurde über die Zeit halt immer painfuler und wurde nicht mehr weiterentwickelt, weil Adobe selbst merkt halt, okay, wir bräuchten eigentlich mal...
00:23:07 eine vernünftige Schnittstelle, so eine moderne neue Schnittstelle, so nach State of the Art Prinzipien. Und dann haben sie vor, weiß ich nicht, zehn Jahren oder sowas Premiere UXP gestartet. Also das ist wirklich, das ist auch schon wieder alt. Nur, wenn du so ein komplettes Ökosystem, und ich meine, wir reden hier von Adobe, ne? Also ich mache mir gut dieses Adobe auf, das hier. Wenn du so ein fettes Ökosystem alle Produkte anzeigen,
00:23:40 mit dir rumschleppen muss, dann machst du nicht mal eben eine neue API. Es sind auch so viel mehr Produkte als das. Also Adobe hat ja wie viel? Sagt mir das hier irgendjemand? Ne sagt mir keiner. Aber es sind sehr, sehr viele Produkte. Alphabetisch. Die sind immer noch nicht alle. Ach, man muss auf Mehranzeigen klicken. So, sind immer noch nicht alle. Dann gibt es so viel mehr als das. So.
00:24:08 Achso, man muss auf alle klicken. 92, okay, now we're talking. Okay, also das hier, das ist eine Einheit. Das hier. 92 ist ein viel. Und ein viel sind fünf Copstars. Deswegen redet man von ihm auch viel Copstar. Das ist dann viel, viel.
00:24:28 Diese Dinger haben dann irgendwann UXP-Support bekommen. Angefangen mit, ich glaube, InDesign, irgendwann Photoshop und so weiter. Und in Premiere hat man immer sehr, sehr lange darauf gewartet. Und mit der aktuellen Version, die tatsächlich letztes Jahr rausgekommen ist, ist es jetzt soweit. Und wir haben UXP-Support in Premiere. Und es ist gerade erst frisch raus in Premiere. Und hat jetzt schon Zugriff auf teilweise richtig geile APIs, die man mit CEP nicht mehr hat.
00:24:54 Allen voran eine API, die ich unbedingt will und sie war die Transcription API, weil ich unbedingt meine Videos von AI schneiden lassen will. Ich hasse nämlich Rohschnitt. Deswegen schreiben wir jetzt komplett mein gesamtes Plugin neu.
00:25:10 Und das ist tatsächlich Teil der Wahrheit. Das ist nicht die ganze Wahrheit. Zur Wahrheit gehört auch, dass diese neue Schnittstelle, natürlich die alte, demnächst komplett ersetzen wird. Und mein Plugin, das jetzt seit acht Jahren lebt, wahrscheinlich nur noch zwei weitere Jahre leben wird, wenn ich nicht jetzt reagiere und hier handle.
00:25:28 Und deswegen ist das tatsächlich genau das Gegenteil einer Beerdigung. Das hier ist eine Grundrenovierung mit modernen Prinzipien, wie zum Beispiel Testgetriebener Softwareentwicklung. So ein Kops, da geht direkt in Flammen auf. Direkt hinterher. Allerdings Freudenflammen. Ja, und so modernen Shit ist es der Wahnsinn. TDD lohnt sich nicht.
00:25:54 Bei welchem Autokonzern arbeitest du nochmal? Ja, Leute werden gebannt wegen Caps, alle rasten komplett aus. Ja, ich hätte wirklich voll gerne Integrationstests für den Scheiß, den ich hier schreibe und Unit-Tests auch und ich bin der Meinung, dass beides funktioniert und bleib gemellern. Das ist so chillig, so ein Band-Test. Es ist so fucking lustig. Ich droppe TDD und Leute werden vom Bot geblockt, weil sie zu excited sind. Es ist fucking lustig. Ah ja, Rust. Ich bin Rust-Entwickler jetzt auszusehen geworden.
00:26:23 Das ist echt so lustig. Ich spreche und lese fließend Rust. Das ist absolut wild. Ja, aber das ist tatsächlich ein bisschen moderner alles. Es wird mit dieser kaputten Architektur, die CEP immer hatte, ein bisschen los, dass man so zwei geteilt hat und dann irgendwie so TypeScript-Code, TypeScript-Code oder also.
00:26:43 Zum Ehrlich, TypeScript war da immer nur ein Afterford. Das JavaScript Code anderen JavaScript Code callen muss oder so Community vorangetriebene Typdefinition, damit man irgendwie vielleicht auch mal ein bisschen TypeScript, also es gab Schmerzen der CEP Definition und die UXP Geschichte modernisiert das und tatsächlich halt auch mit ziemlich coolen APIs, denn das ist natürlich das allererste, was ich gemacht habe. Also erstmal...
00:27:10 Es war am Anfang die Welt und Gott war zufrieden mit der Welt. Oder wie auch immer diese Bibel da funktioniert. Sorry, ich spreche kein Propaganda. Aber alles hat tatsächlich angefangen mit diesem Kommentar am 13. Januar.
00:27:31 Und zwar die Frage nach UXP-Support. Über die Jahre hat man ja immer so ein bisschen, hat man nicht allzu viel zu tun. Hallo Dead Fixel und Extremtechniker übrigens. Willkommen zurück. Und deswegen habe ich tatsächlich auch sehr schnell reagiert, direkt am 14. Und zwar direkt mit einem Nö mache ich nicht. Weil Absagen kriegt man immer am schnellsten.
00:27:57 Und hier ist quasi die Frage, ja, UXP wird demnächst mal Standard werden, was willst du tun? Und meine Antwort war quasi so ein Durch-Diplu, nee, mache ich nicht. Weil UXP ist scheiße. Also habe ich nicht gesagt, aber habe ich gedacht. Und daraufhin habe ich dann mal gesagt, warte, vielleicht sollte ich, bevor ich einfach nur basierend auf Meinungen und Eindrücken urteile, das machen, was ich da in der Uni gelernt habe, dieses...
00:28:26 Na, wie heißt es, das, was diese Querdenker immer verurteilen? Ah ja, genau, rationales Denken. Ich sollte vielleicht meine Thesen irgendwie durch Argumente unterstützen, also das, was diese AfD-Leute verurteilen.
00:28:43 Ich sehe dann Muster. Und ich habe gar keinen Alu-Hooder auf. Also auf jeden Fall habe ich dann einfach mal geguckt, was die UXP API so kann. Natürlich habe nicht ich das geguckt, sondern die AI hat das geguckt, weil ich bin Software-Ingenieur, ich kann gar nicht programmieren. Ich kann nur Prompts an irgendeine AI in Amerika senden, die dann dort den Fluss austrocknet und mir schlechten Code zurückliefert. Aber sind wir mal ehrlich. Also wo tatsächlich AI ganz gut einsetzbar ist, ist, wenn man...
00:29:11 so große Datenmengen hat und die auf irgendwas analysieren lassen möchte. Ich für meinen Fall habe einfach gesagt, okay, extrahiere mal bitte alle Schnittstellen von CEP, die ich so nutze. Das sind die Funktionsnamen, das sind die CEP-Namen. Und dann habe ich einfach mal gucken lassen, okay, hier ist die UXP-Dokumentation. Gibt es da irgendwas, was so halbwegs äquivalent ist? Und sind wir ehrlich, also...
00:29:37 Von daher hätte ich das nicht besser gekonnt und vor allem hätte ich mir diesen Anfassort auch niemals gemacht und so war das nur ein halbes Flussbett, was von mir leer gesaugt wurde auf dem Weg dorthin. Und mit wirklich total spannenden Findings, vor allem, dass das allermeisten wirklich in UXP funktioniert und nur ganz wenig meiner Funktionalität anpassen muss, damit das funktioniert. Und das ist schon ganz schön geil. Also natürlich ist das hier unglaublich gevi... blut.
00:30:06 Mit meinem Migration Impact Assessment.
00:30:10 Da geht mir einer ab. Da bin ich ja komplett delülüd von dieser wunderschönen AI-Sprache. Aber mal darüber hinaus gesehen, ist das tatsächlich gar nicht mal so übel. Das Allermeiste soll tatsächlich funktionieren und das halt eben sehr viel moderner und schöner und so. Und das war für mich dann doch irgendwie Grund genug, es einfach mal auszuprobieren. So, and that's the way how we end up here. Welcome to the...
00:30:39 New Coding Stream, my name is Sebastian and I will take you to the universe.
00:30:45 So, ich habe absolut keine Ahnung, so wie immer. Wenn sich meine Livestreams durch irgendwas auszeichnen, dann durch schlechte Witze, gute Overlays und das 25. Mal heute wird alles anders. Aber auch, dass ich halt wirklich in Dinge reingehe, von denen ich absolut keine Ahnung habe. Deswegen fangen wir jetzt einfach mal an, UXP zu lernen. Ihr seht die doch die To-Do-Liste unten links. Warum fragt ihr so dumme Fragen, was ich als nächstes machen werde? Hä? Literally da unten steht's.
00:31:15 Also, let's go. Introduction and Setup. Das ist übrigens kein Witz. Ich weiß wirklich nicht, wie das alles funktioniert. Ich habe mir das noch nicht angeguckt. Wir gehen da jetzt komplett von Anfang an zusammen rein. Und zwar im Light Mode offenbar, weil das Ding hier keinen Dark Mode hat. Habe ich irgendwie sowas wie Dark Viewer? Nö, habe ich nicht. Cool, habe ich wohl irgendwann mal deinstalliert. Da müsste halt mit dem Light Mode klarkommen. Mir brennt es auch in den Augen. Man sieht es in meiner Brille, wie krass es mich blendet.
00:31:43 If you wish to prove from scratch you must first invent the universe. From scratch? Ich bin doch gar kein DJ. UXP is a JVS script. JVS script.
00:31:56 Vielleicht ist das der Punkt, wo ich den Stream beenden soll. UXP ist eine JavaScript-based Extensibility-Plattform. Okay, cool. That helps you to automate optimise... Optimise? Kann ich eigentlich noch Englisch? Nee, ne? Aber das ist in deutschen Software-Engine, lässt man es einfach bleiben. Okay, ja, Web-Technologies, bla bla bla. Das liest sich wie AI. UXP requires some basic knowledge. Ich hab nicht mal basic knowledge.
00:32:23 I'm so sorry. UXP is not a browser.
00:32:27 Das hat aber auch nie jemand behauptet. Das ist übrigens Portugiesisches, Englisch. Das ist übrigens Portugiesisches, Englisch. Das ist übrigens Portugiesisches.
00:32:56 Ihr müsstet mal, ne, es ist wirklich kein Witz. Also so, wenn du auf Konferenzen, ich war zum Beispiel in Lissabon auf einer wissenschaftlichen Konferenz, so ähnlich hört sich wirklich Portugiesens Englisch an. Ich liebe Portugiesens Englisch. Es ist so fucking unterhaltsam. Es ist kein Witz, es ist noch nicht mal ein Diss oder sowas. Ich liebe es, mich mit Portugiesen auf Englisch zu unterhalten, weil dieses Englisch, so ungefähr, also ich finde, manche Englischarten sind halt einfach geil. Portugiesens Englisch, absolut geil.
00:33:26 Aber nichts schlägt niederländisches Englisch. Niederländisches Englisch? Ich ziehe irgendwann in die Niederlanden nur für dieses Englisch. Obwohl ich dachte, ich werde Niederlanden.
00:33:36 Jetzt kommt gleich Haftbefehl. Wie heißt der andere Muskelprotz? Hier rein und bricht mir mein Genick. So, Support, including Premiere. Das ist genau die Version, die ich gerade installiert habe. User Interface, that blends seamlessly. Ist ja geil. Ist quasi das, was ich hier mal irgendwann in Premiere versucht habe, aber nicht hinbekommen. Mein seamless Ding. Lastly, you can easily share. Cool.
00:34:06 Welcome once again. The next few steps. Essentials. Programming languages. Ich kann schon programmieren. Nochmal die Warnung, dass UXP kein Browser ist. Was ist eure Zielgruppe? Dass ihr auf zwei Hilfeseiten in Folge schon warnt, dass wir gerade keine Website für einen Browser implementieren.
00:34:37 Wo ist der Quotenherd? Das Käsetrüken könnte ein bisschen ein Pentagramm. Not sure, wenn du noch eine Ziel-Wiederstellung dazu stellst, könnte es sein, dass Kegelsen halt das Pentagramm leer macht, bevor Dromasu kommt. JSKiddies können sich keine Creative Cloud leisten. Die können nicht die Zielgruppe sein. Außerdem gibt es sowas wirklich, JSKiddies? Sagt, sie schreiben eher Python.
00:35:09 So, apart from this braucht man halt irgendwelche anderen Wissen, Sachen ist okay, I don't care. UXP Developer Tool, das habe ich mir runtergeladen. Chrome Debug Tool, ja, wird schon, ne?
00:35:22 So, dann Framework, React, View, Angular. Krass, einfach mal ein Frontend in so einer Sprache schreiben und das wird dann in Premiere angezeigt. Ich bin mir nicht sicher, ob ich für diese moderne Welt gemacht bin. Okay, NPM, Jarn, Developer Tools. So.
00:35:45 Die schreiben, was ist mit Rust? Ich habe kurz wirklich einen Take gelesen, dass Rust eine der besten Sprachen ist, um sie Vibe-Coden zu lassen, weil Rust ja einen dermaßen restriktiven Compiler hat, dass wenn die Scheiße kompiliert, die Wahrscheinlichkeit höher ist, dass sie tatsächlich funktioniert. In den ganzen vielen anderen Sprachen, wo es dann zur Laufzeit ordentlich knallt, weil die AI damit durchkommt.
00:36:07 Eigentlich keinen so stupid tag. Ich fand das alles sehr sinnvoll, muss ich sagen. A reliable code editor helps you stay organized and productive. Any modern editor will work, but Visual Studio Code... Danke, dass wir übrigens in der Realität leben, in der sich VSCode durchgesetzt hat. Ich weiß noch, wie vor zehn Jahren noch jeder Hiopie seinen eigenen Scheiß-Editor hatte, der nicht viel besser war als ein Textfenster mit Leggy. Ich wiederhole, mit Leggy und Buggy Syntax-Highlighting, wo einfach...
00:36:35 Nix vernünftig funktionierte, aber es war die einzige Möglichkeit, Code irgendwo rein zu injecten. Oh, zum Glück hat sich VS Code durchgesetzt. Cursor is also a great option for developers who prefer more AI-driven development experience. Ich halte mich zurück mit den, wie nennt sich das? Negativen Äußerungen über Leute, die wirklich jetzt gerade ein Plugin für Premiere schreiben wollen und Cursor vor VS Code stellen.
00:37:10 Kann man machen, juckt mich nicht. UXP, Development Tools, Simplify the Process of Creating, Loading, Managing and Debugging. Die Reihenfolge ist kontraintuitiv. Will ich wirklich managen, bevor ich debugge? Wild. UXP Plugins, das ist genau die Version, die ich habe. Und UDT VV2, das ist auch genau, was ich habe. Installation, bla bla bla, das ist exakt das, was ich vorbereitend schon gemacht habe.
Erste Schritte mit UXP-Entwicklung
00:37:4400:37:44 First Lauch. Da sehe ich mich. Germany's First Lauch. When you lauch, the developer tool for the first time you'll be prompted to enable developer mode. Click Enable. Aha, dieser Screenshot wurde unter macOS gemacht. Woran erkenne ich das? An ungefähr allem in diesem Fenster. If you have problems with the step, da kann man es auch manuell einstellen. Okay. UXP. Let's fucking go. Also irgendwas.
00:38:33 Okay, offenbar bin ich drin. Tech Stack Foundations. Hä, hier war ich doch gerade eben schon. Developer Tools. Oh nein. Oh nein. Es ist eine Endlosschleife. Nein. Oh mein Gott. Nein. Nein. Wir werden niemals durch die Trial durchkommen. Hilfe. Hilfe.
00:39:07 Wo ist die Qualitätssicherung? Ich glaube als nächstes wäre ich interessiert an Developer Tools. Ah ne doch die Tech-Tech-Foundations. Oder vielleicht doch Developer Tools. Oh nein. Oh nein.
00:39:24 Oh Gott, Hilfe! Okay, okay. Geht so Spaß gehabt, Alter. Was kommt denn wirklich als nächstes? System Requirements? Nee. Nomenklatscher? Nur der Nomenklatscher? Nicht zu verwechseln! Mit dem, was ihr bekommt, wenn ihr bei Hafti nicht die Schnauze haltet, dann kriegt ihr ein Nackenklatscher. Scheiße, Alter. Es gibt Panels, Extensions, Plugins. Okay.
00:40:04 Wazoo ever, Alter. Getting started. Okay, ich glaube, jetzt bin ich aus der Endlesschleife raus. Jetzt kann man weitermachen. Also, the tutorial will walk you through building your very first UXP plugin. You will learn to scaffold one from an existing template, custom it, customize it, and run it in Premiere. Okay, cool. Okay, ich muss auf Create Plugin drücken. Oh mein Gott.
00:40:41 Okay, wir machen das gleich von Anfang an. Premiere, Remote. Das kriegen wir nämlich auch gleich raus, ob eine Plug-In-Name gleich sein darf wie ein CEP-Plugin. A unique idea will be needed. Okay, und nach welcher Regeln folgt dieses Ding? Learn more. Gibt es irgendwelche Regeln dafür? Nein, gibt es nicht.
00:41:11 Okay. Seb inside slash Premiere remote. Also alles in sich. Mir schreibt sich übrigens, dass random user subscribed hat. Nee, dankeschön. Dass ich, dass ich nicht auf Anhieb irgendwelche Regeln finde, wie die aufgebaut sein müssen. Aber es ist okay. Ich folge nicht dem Tutorial. Oh, I'm very sorry.
00:41:43 Plugin, leave as it is. Oh, jetzt habe ich schon alles falsch gemacht. Ist mir egal. Template Premiere Pro Quick Starter. Premiere Pro. 25.6. Plugin Version 1. Uuh. Template Premiere Pro Quick Starter. Das gibt es gar nicht. Pull Request Quick Starter? Quick Starter? PR Quick Starter?
00:42:19 Also no shit. Also bis jetzt war ja noch alles lustig und so weiter, aber jetzt ist die Dokumentation schon falsch. PR-Quickstarter? Not so sure. Look at the Premiere-Icon. Welches Premiere-Icon? Da steht PR. Wo? In deiner Taskbar. Ah, ihr seid ja schlauis. Dann nehmen wir das PR.
00:43:00 Äh, bla bla bla. The folder will contain the following files. Ich denke, daran können wir festmachen, ob wir es richtig gemacht haben. Select Folder. Jetzt kommt wieder die ganze Magie, wo ich einen Ordner auswähle. Okay, cool. Ich habe einen Ordner ausgewählt. Cool, dass auch mein cooles Ding nicht mehr funktioniert, wo man... Warum ist das alles so broken? Ich verstehe wirklich nicht, warum... Kann es sein, dass... Ich habe eine Idee.
00:44:05 Sorry, dass ich schon wieder an dem Ding hier rumdockte. Aber ich habe eine Idee. Ich glaube nämlich, ich weiß jetzt, was ich falsch gemacht habe. Und zwar, wenn ich auf das hier gehe, auf Game. Aha, so nämlich. Guck mal, das ist nämlich diese hier. Und wenn ich jetzt zurück auf Game gehe. Ah ja, perfekt, dann ist alles kaputt. Ja, geil.
00:44:47 Also ich hatte eine Idee, möchte ich an der Stelle festhalten. Und das ist nicht das, was ich eigentlich vorhatte. Ich frag mich, wie ich das damals gemacht habe, weil es ergibt wenig bis gar keinen Sinn. So. Ich müsste es so perfekt aussehen. Tut es aber halt nicht, ne? Ich flashbang so viel, wie ich will. Okay, ist gar nicht so übel natürlich. Ja, okay, dann lassen wir es so. So, Zap inside Premiere Remote.
00:45:20 Und jetzt? Äh, wirklich? Okay, es ist nicht connected. Hey! Und wie genau muss ich, was muss ich tun? Hallo, hier ist Premiere. Ich mach's wieder zu.
00:45:58 Actions, View, Help, Edit, File, Logs, Connected Apps. Ich klicke jetzt einfach so auf Load & Watch, oder? Was wollen sie tun? Es kann sein, dass ich einfach die falsche Version von Premiere aufgemacht habe. Details. Ja, okay, cool. Ich fühle mich ein bisschen bevormundet. Warum ist das keine CLI? Das kann natürlich sein, ich habe ganz viele Premiere Pro 2025, dass das hier nicht die richtige Version ist.
00:46:40 Wo ist meine kreative Cloud, wenn ich sie mal brauche? Applikationen. Premiere Pro 25 6 2. Premiere Pro öffnen. So, gucken wir mal, ob es funktioniert wird. Coding Stream. Zack. Ist mir egal. 2026 kommt vieles, aber sicherlich nicht das Comeback von Fidi Beast Infinity War of Skyblock Expert Mode. Man muss auch manchmal ein bisschen über sich hinaus wachsen. Sagt mein Bauchumfang täglich. So, hat das jetzt funktioniert? Nein!
00:47:25 Cool. Ja, hey. Mega. Make sure that the shit is running. Junge, ich habe gerade literally... Okay, vielleicht darf das nicht... Vielleicht muss es auch responsive sein und nicht nur running. Hallo, guten Tag. Einstellung. Dark Mode. Yeah. Ja, okay, cool. Also hier ist Premiere, I guess. Über Premiere. 2025.
00:48:05 Hast du den Developer Mode enabled? Da kam am Anfang so eine Meldung, dass ich das machen soll. Also habe ich ja dann halt gemacht. Ich hätte irgendwie erwartet, dass es mir mehr sagt als nö, ist halt nicht, Dicki. Oder eine Möglichkeit nochmal irgendwie zu crawlen oder irgendetwas zu tun, was mehr ist als nichts.
00:48:37 Ich habe offenbar sogar die Möglichkeit, UXP-Plugins zu installieren. Und als ob es nur genau eins gibt, das ist ja traurig. Pfeife rocks, danke schön. Also offenbar funktioniert das. Hier, UXP. Durchsuchen. Okay, und was ist verwalten? Genau dasselbe Fenster, okay, ja. Gut. Also hier, äh, also... Was soll ich denn noch tun? UXP ist da. Es ist UXP im Haus.
00:49:21 Bist hier vielleicht irgendwas tun? Voreinstellungen? Allgemein? Das hat es hier ganz schön lange gedauert, um zu starten. Plugins? Entwicklermodus? Hä? Aber den habe ich doch aktiviert. Spannend. Aber ist okay. Du, ich hinterfrag das nicht. Also ich bin mir 100% sicher, dass ich vorbereitend für diesen Stream UXP aktiviert habe. Aber... We don't judge. Aber wir löschen Offline-Szenen, Alter.
00:50:01 Was ist dein USP? Ich kann passabel programmieren und unglaublich schlechte Witze erzählen. Und was kannst du so? So, jetzt sind die Offline-Clips wenigstens alle weg. Und du hast sogar die Docs gelesen. Ist der Wahnsinn, ne? Okay, okay, okay, okay. Dann bin ich jetzt wirklich mal gespannt. Also krass, guck mal, hier ist es. Und jetzt Load & Watch. Ding!
00:50:47 Leute, da greift jemand auf mein Premiere zu und der heißt Premiere Remote. Und ich müsste das jetzt auch hier oben sehen, oder? Ja, hier, guck mal. Das ist ja der Wahnsinn. Ich meine, klar, das hatte ich hier auch schon, aber hier werden ja sogar Panels angezeigt. Geil. Du, nicht übel. Bisschen Sus, dass es einen Delay hat, bis das angezeigt wird. Aber das ist okay. We don't judge.
00:51:24 Was habe ich jetzt hier in einem unglaublich schlechten Code schreiben? Ja, der Punkt ist ja, das habe ich ja auch gedacht, dass alles unglaublich schlecht ist. Und dann wurde ich Software Engineer. Nice, done. Ja, ich würde sagen, UXP lernen. Zack. Okay, Spaß. Den Haken kriegt es erst, wenn ich das Tutorial durchgespielt habe. Now that your plugin is running in Premiere, let's make it your own. Open the index file in your Code Editor.
Code-Anpassung und Praxistests
00:51:5200:51:52 Stimmt, wir könnten jetzt natürlich, und das ist eine wilde Idee, einfach mal uns angucken, was da jetzt eigentlich gerade generiert wurde. Also wir haben irgend so eine minimal basic example gebaut.
00:52:06 Ich will eigentlich, will ich jetzt hier überall draufklicken und gucken was passiert. Ich bin so, weißt du, es tut mir leid. Scheiß auf, weißt du, ich hasse es, wenn mir so hier diese Questbooks in Minecraft, weißt du, es ist alles dasselbe. Ich will hier draufklicken und selber gucken was passiert. So, was gibt's denn hier Schönes? Hier gibt's irgendwelche, okay, was ist wenn ich jetzt hier, wird da auch irgendwas gelockt? Nee. Was sind das hier? Okay, das sind die App-Locks.
00:52:39 Okay, das hat wohl nichts mit mir zu tun. Boah, ist das modern, Alter. Also komisch, dass das schon so viel Fehler schmeißt, aber ich glaube, da kann ich jetzt auf der Seite mal nichts für. Was ist Debug? Dann geht einfach ein DevTools Fenster auf. Ah, der Chrome Debugger. Ja, servus, grüzi mitternont. Wurde das so geschrieben, dass der auch tatsächlich was debuggt? Nö.
00:53:10 Das wäre auch zu einfach gewesen. Was sehe ich hier? Yo, als ob. Also das ist zwar nicht der aktuelle Stand von diesem Fenster, aber das werden wir vielleicht auch noch lernen, wie man da rankommt. Cool, yo. Wahrscheinlich kann man so Sachen loggen. Not bad. Bis jetzt ist das alles echt nicht übel. Das möchte ich an der Stelle mal dazu sagen. Okay, so. Dann gucken wir doch mal.
00:53:48 PC ist übrigens ein bisschen voll. Zack. Hier gibt es jetzt irgendwo so ein Premiere Remote. Da gibt es einen Ordner drin. Oho, oho. VS Code. Also wir als Code, habe ich gerade gesagt. VS Code. Oder unser Arsch-Code. Also eins und beidem. Okay, hier sind irgendwelche Symbole, die ich nicht erzeugt habe.
00:54:16 Die sind alle ziemlich UXP. Auch ziemlich Glocke sind die. Hier ist eine Indexdatei. So, wenn das Ding jetzt Hot Reload hat, dann reden wir aber sowas von. Wartet, damit auch diejenigen von euch, die zu viel Zeit auf TikTok verbringen, checken, was gerade Sache ist. So.
00:54:57 auch alle Tele-Zahnärzte genug von meinem Gebiss gesehen haben. Fack, Alter, das hat Hot Reload. Es ist jetzt schon besser als CEP und ich habe noch nicht mal angefangen, auch nur eine Zeile Code zu schreiben. Ich sollte wirklich einfach durchgehend hier im Eck mich irgendwie Minecraft spielen, so im 16 zu 9 Format haben oder sowas. Also no shit, wenn wir irgendwann dieses Layout neu schreiben. Ich sage euch, wir werden dieses Layout irgendwann neu schreiben, weil...
00:55:27 Es tut mir leid. Ich möchte öfter mein Layout neu schreiben als neue Unterhosen anziehen. Es hat Hot Reload! Hallo! Können wir kurz nochmal darüber reden? Mann ey, hätte ich nur Zeit in meinem Leben. Ich würde so viele Dinge tun. Natürlich ist kein Hot Reload, wenn man nicht auch mal die Performance checkt. Achtung, 3, 2, 1. LOL. Instanziös passiert das. Ist ja der Hammer, okay? Es gibt hier irgendwie so eine Indexdatei. Style CSS sind...
00:56:01 Erstaunlich wenig Vorgaben. Okay, ich bin begeistert. Readme. Ja, das läuft halt wirklich alles über die Developer Tools. Ich finde es immer geiler, wenn so etwas über eine CLI läuft. So wie das der Premium Sponsor dieses Streams Elgas macht. Und so wie es eigentlich jeder machen sollte. Also, bevor man eine scheiß UI... Aber okay, bis jetzt hat eine CLI nichts getan. Okay, das ist auch alles echt minimal. Das ist...
00:56:33 Es fällt mir bis jetzt wirklich schwer, irgendwas Schlechtes hier dran zu finden. Das ist wirklich gut gemacht. Wild. Das ist die Main, okay. Das hier ist die Version, für was das gemacht ist. Das sind so weitere Sachen, wie zum Beispiel, dass man auf Clipboard und Filesystem zugreifen darf. Auch gut gemacht, dass man das extra abfragen muss, damit die Dinger nicht komplett wipe out gehen, auch wenn das natürlich sehr einfach wäre. Symbole, die habe ich noch nicht gesehen.
00:57:06 Vielleicht ist das so ein Feature, was man nur unter macOS hat. Würde mich nicht mal wundern, um ehrlich zu sein. Kannst du mal kurz hier reinlegen. Ne, das macht nix. Okay. Aber ich hab schön mein Layout kaputt geschossen. Nice. Lieben wir. Ich bin jetzt schon Fan, ey. Ich hab Bock. Was heißt hier Verbindung zum Chat verloren? Ich bin live. Lüger, wer was anderes erzählt. Theme, okay.
00:57:41 Okay, also ganz ehrlich, 90% davon ist Eigenkonfiguration. Jetzt zum spannendsten Teil. Yo, Alter, das ist so wenig Code. Leute. Oh fuck, Alter. Das ist so advanced. Ist hier wirklich ein Button, wo draufsteht Button Populate?
00:58:11 Und hier wird einfach nur ein eventlichster Poplate Project Info eine Funktion und die Funktion... Alter, oh mein Gott!
00:58:39 Es ist so unglaublich einfach und fortgeschritten und gut. Ich weiß gar nicht, wie sehr nah ich ans Mikrofon rangehen soll, um euch irgendwie zu vermitteln, wie sehr ich mich gerade freue. Leute, ich habe acht Jahre lang mit Adobe CEP gearbeitet und habe wirklich genug. Ich meine, wir haben unseren eigenen Bildercode geschrieben. Ich soll es in den Mund nehmen. Geh zurück zu deiner Ziege, Alter.
00:59:11 Wisst ihr, wie viel Boiler Blade Code und Verwirrung und Probleme und Bullshit es gebraucht hätte, um diese Funktionalität mit CEP umzusetzen? Wir hätten es übermorgen noch nicht verstanden. Und das ist kein Joke. Es gab damals zum Glück einige wenige YouTuber auf der ganzen Welt, die einem gezeigt hatten, wie es geht. Der Kram war undokumentiert. Es war die pure Hölle.
00:59:37 Das hier ist so krass viel fortgeschrittener. Können wir bitte P-Pro in Pipi umbenennen? Ne, es hieß schon immer P-Pro tatsächlich. Warum auch immer. Vielleicht war Pipi schon was anderes gelegt.
00:59:58 So, also, Require Premiere Pro, okay, hier kommt die Abhängigkeit rein, easy. Asynchrone Funktionalität, asynchron. Ganz CP kennt kein einziges Asynch-Wetten. Das hier ist einfach, also okay, über die Kapitalisierung hier, also da kapituliere ich. Aber okay, get active project, else active project, project name. Ich wüsste gerne, wo der Kram hingeloggt wird. Aber okay, das werden wir vielleicht noch lernen und später betreuen.
01:00:26 Consequence ist GetActiveSequence. Wenn keine Sequenz, ansonsten Sequence name. Ach so, Lock. Lock ist literally eine Funktion, die das... Was macht die? Ach so, die ist selbst definiert und da pendet irgendwas da dran. Okay, wer weiß, bevor ich hier irgendwas mache... Ich weiß, es ist ja kein Browser und so. Das wurde mir 25 Mal gesagt, aber funktioniert das? Ewald in Adobe? Womit kam denn das? Ist das jetzt hotgerloadet? Warte mal, wir machen den...
01:01:04 Active PP Project. Lock Active PP Project. So, wir machen den Test auf das Exempel. Guck mal, sogar AI ist am Start. Kennt ihr AI?
01:01:15 Logge doch einfach mal auch ein Projektobjekt. Hey, Baby Steps, okay? Wir gucken, wir tasten uns langsam. Ich möchte es auch genießen, weißt du? Für mich ist das hier gerade wirklich der absolute Fortschritt in Person. Das macht mich fertig. Alter Hot Reload. Mir ist so hot.
01:01:40 Also ich weiß, dass ich seit ungefähr einer Stunde einfach nur scheiße leh, aber es ist halt wirklich viel so viel besser als... Ich hab acht Jahre mit diesem alten System gelebt, weißt du, und ich hatte nie Bock auf das neue, weil ich dachte, es wird noch schlechter, aber es ist halt wirklich ein großer Schritt vormals. Okay. So, wenn das so funktioniert, kann es dann sein, dass ich tatsächlich einfach den Debugger hier aufmachen kann? Ja, kann ich. Junge! Ich bin Fan!
01:02:06 Damit meine ich nichts, dass ich... Warum kann ich das hier? Das ist das Einzige, was ich komisch finde, dass ich da nicht reindebangen kann. Ah, nee. Man muss einfach nur Tasten drücken. Junge, bitte was? Wie, bitte wo? Mann, ich habe zu wenig Platz auf diesem Bildschirm. Krass, das ist ja wirklich live. Oh mein Gott. So müssen sich wirklich Banken fühlen, wenn sie von Kobol weggehen.
01:02:41 Und keine Ahnung, weiß ich nicht. Visual Basic entdecken. Oh Gott, Alter. So, in welcher Hölle kommen eigentlich meine Witze heute? Warte, du kannst in DevTools Elemente selektieren. Was kann ich? Die Frage ist, ob das Write, also ob das auch schreiben kann. Ja, natürlich ist das. Das ist eine echte Verbindung. Ich kann... Ah, das ist Inherited. Yo!
01:03:28 äh, sag mal was richtig Fancyes. So, so, äh, sowas ganz Abgefahrenes. Text Decoration. Muss ich mich zurückhalten? Underline. Also jetzt, äh, jetzt platzt aber gleich irgendwas hier. Ja, ich hatte auch erst an Marquis gedacht, aber dann hab ich wieder gemerkt, dass ich nur sehr limitierte Web-Skills habe. Wusste ich nicht, wie ich das hinbekomme. Ah, geil, Alter. Das ist wirklich gut. No shit, man. Das ist wirklich, wirklich gut.
01:04:13 Das ist halt, damit lässt sich doppelt so einfach arbeiten wie sonst. MSG. Das ist nicht typisiert. Was ist, wenn ich hier einfach mal wirklich so ein Objekt rausschalle? Project zum Beispiel. Semikolon nicht vergessen. Ja, klar. Klärchen. Du, das ist ja... Da steht nicht wahnsinnig viel drin, um ehrlich zu sein. Das hier sieht jetzt den Pfad, wo es liegt, irgendwo auf meinem Desktop.
01:04:53 Boah, dann lass doch mal hier gleich die harten Geschütze ausfahren. Also schön, dass wir das, dass das nicht so spannend ist. Aber ich hätte gerne hier. Sequence. Achso. Das ist wirklich, also hier mit zu arbeiten ist ja wirklich ein fucking Traum. Okay, in diesen Objekten steckt echt nicht so wahnsinnig viel drin, ey. Ach, die Sachen kriegt man alles über Funktion. Okay, I see. Get Audio Track.
01:05:32 Sequence, Get Audio. Weißt du, das ist halt auch so geil, ne? Ich krieg hier, ich seh hier halt einfach den gesamten Prototypen mit drin, weil es ist halt immer noch, äh, oder weißt du was? Get, was ist das? Get Audio? Wo hab ich den gerade gefunden? Get Audio Track. Get Audio Track Count. Track Count. Okay, der, ich lass mir das einfach mal so ein bisschen raus, äh, Get Audio Track.
01:06:11 Zero. Den. Okay, ey, ich hab absolut keine Ahnung, ob das hier, das ist alles komplett gevibe-coded gerade, ne? Aber ich meine, wir leben in einer Welt, in der sowas möglich ist. Also hey, let's see, was passiert. Also ich lass mir gerade den Audio-Track geben und die Anzahl an Clips. Ich erwarte, dass da 3 zurückkommt und dann 1. Also wenn jetzt eine 3 und dann eine 1 in die Konsole geschrieben wird, dann ist aber, also 3 ist schon mal richtig.
01:06:42 Wild. Zu viele Fenster. Viel zu viele Fenster. Also 3 war übrigens schon mal richtig. Get Clip Count existiert vielleicht einfach nicht. Oder dieses Get Audio Tracker irgendwie, was auch immer. Die Frage ist, wenn das gerade nicht funktioniert hat, sagt mir das jemand? Weil also hier ist es ja nicht drin.
01:07:13 Hier habe ich auch Log verwendet. Also wurde vielleicht einfach diese Funktion nie aufgerufen. Sagt mir das irgendwer? Du zum Beispiel? Nein? Auch nicht? Sagst du mir das, dass ich gerade Müll gemacht habe? Hier vielleicht in meinen Logs? Okay. Also ist Müll... Müll failed silent. Das ist gut. Ja, vielleicht ist es auch 1-Index.
01:07:46 Wir lassen im Sources-Tab vielleicht. Sollte im Sources-Tab was drinstehen? Du, aber ist ja egal. Also trotzdem. Ja, da passiert halt nichts. Es wird nie aufgerufen. Ja, was auch immer. Der Kram ist, also das ist ja eh noch JavaScript. Später wird das sowieso TypeScript werden. Und dann hat man da vernünftige Typisierung hinten dran und dann passt das schon alles. Im Debugger temporär Codeschreiben. Auch nicht schlecht, Alter. Stimmt, ich könnte ja theoretisch hier drin einfach Codeschreiben.
01:08:29 Habe ich dieses P-Pro-Objekt hier drin? Das ist eine Promise tatsächlich. Okay. Kann man das nicht so schreiben? Ich hätte irgendwie gehofft, dass es möglich ist, das so zu schreiben. Ah, guck mal hier. Promise for the site fulfilled. Tatsache. Man kann hier drin Waits hinschreiben? Ernsthaft? Also keine geile Art zu arbeiten. Ah, lol. Oh mein Gott.
Fortgeschrittene API-Funktionen
01:09:3901:09:39 Das ist schon echt abgefahren, du. Await a second, das geht. Ich finde es auch krass, dass das geht. Krass, man kann den Kram einfach hier reinschreiben und klar wird das evaluiert. Du kannst dir das Await auch sparen, das Den sparen. Wenn ich das nicht mache, dann kriege ich ja nicht den Namen. Das kriege ich nur das Projekt. Ach, du meinst sowas? Ah, fair.
01:10:17 Weil ich jetzt Promise auflösen lasse, bevor ich auf das Objekt zugreife. Einverstanden. Kann man hier auch so Variablen hinschreiben? Cool, so kann man sich Stück für Stück dann da durchtesten. Get Active Sequence. Ist eine Promise, Pending, was kam raus, Fulfilled, Sequence Objekt.
01:10:56 Okay, let's sec. Genau das wollte ich schreiben. Sx ist gleich x get active sequence. Du wirst spielen jetzt hier ein bisschen.
01:11:10 Let's sag ist gleich. Oh, wait. SX. Kriegt man so den Kram raus? Lustigerweise kann man so tatsächlich eine Sequenz auflösen. Das ist das Code, den ich noch nie hingeschrieben habe. Weil ich noch nie eine Promise in der Variable geschrieben habe. Aber offenbar funktioniert das. Das ist ja sau lustig. So, was hast du für coole Sachen anzubieten, sag? Get. Get Video Track. Was will das? Get Video Track.
01:11:42 Infinity. Warum? Also kann ich mir jetzt irgendwie sagen lassen, was Get Video Track? Kann ich nicht. Also nicht, wenn ich hier drin einfach so hässlich einen Code schreibe. Später ist dann die TypeScript-Definitionsdatei hinten dran. Also das ist so, das ist egal. Ohne Klammern und direkt Enter drücken. Not enough parameters. Okay, da kam was zurück. Video 2 ist die 1.
01:12:19 Okay, das heißt, es ist aber wirklich null initiiert. Dann, äh, let track ist gleich await. Seg.get.videotrack 0. Track ist jetzt ein Videotrack. Und was kann Track cooles? Track.get. Track Items. Let Items ist gleich await. Das ist jetzt wirklich so TN. Puh. Scheiße.
01:12:57 Ja, okay, das ist eine sehr dumme Art, wie ich hier gerade arbeite. Steuerung links klick. Leider nein.
01:13:06 ich könnte auch einfach ich weiß es gibt eine TypeScript Datei die kann man sich einfach hier runterladen irgendwo und dann hat man alles da also es wäre jetzt wirklich ich muss hier einfach nur auf Premiere API gehen da ist der Kram also das ist gerade wirklich sehr dumm was ich hier mache also man kann da einfach auf Video Track gehen Video Track Item also Constant Track Items so get Video Tracks Turnstern Array
01:13:46 Dann ist es ein Track-Item und das hat dann irgendwie wieder Eigenschaften, bla bla. Also man könnte sich da schon durchklicken. So ist es nicht. Video Track. Kommt ja ein Video Track Event zurück. Was das alles kann, ey. Fünf Stunden ausprobieren. Ich bin, weiß ja, dass es lustig ist, wir sind ja auch komplett vom Tutorial abgekommen, ne. Das ist ja momentan einfach nur wildes Ausprobieren und sich freuen, dass Dinge funktionieren.
Arbeit mit Commands in UXP
01:14:5101:14:51 Vielleicht sollten wir einfach so toll weiter durchspielen, anstatt hier irgendwelche komplett verrückten Sachen zu machen. Also, ja, ich weiß, dass ich die Datei ändern kann. Sorry, vielleicht müssen wir doch abkommen. Manifest, Entry Points, Declaring, Writing, Handling, Your Plugins, Panels and Commands. Panels and Commands. This is a panel, this is a command. I menu items that are executed when clicked. Cool, ich kenne Commands gar nicht.
01:15:29 Automate, also man kann Commands hinschreiben, die dann einfach hier drüber ausgeführt werden. Habe ich noch nie geschrieben. Ich kenne nur Panels. Können Commands Shortcuts haben? Das ist die eigentliche Frage, die ich mir tatsächlich als allererstes gestellt habe. Ich würde ja gerne mal ein Command hinschreiben. Okay, Dinge funktionieren noch nicht. Also, aka alles, was aufgerufen wird, wenn Sachen verschwinden. Ich habe doch gerade gesagt, das geht noch gar nicht, was hier steht. Gibt es ein Command Tutorial? Also gibt es irgendwie eine Vorlage für ein Command?
01:17:09 Weil das habe ich tatsächlich noch nie gemacht. Entry Points. Du, wir hacken das jetzt einfach in unser Ding hier einmal rein. Ich muss so dringend meine Auto-Hotkey-Sachen auch wieder zusammenziehen. So. Was wissen du? Okay, es gibt nur den einen. So, time command, this is a command, bla bla bla. Okay. In der Index.js. My command handler. Wo steckt man die zusammen?
01:17:56 Hä, ist das nicht exakt dasselbe hier oben? Warum kommt das dann hier nochmal? Ah, cool. Jetzt verstehe ich, aber dann verstehe ich nicht, warum man es oben zuerst definiert hat. Also man kann auch das Ding einfach so exportieren, wenn man Module Export setzt. Alternativ muss man halt Setup aufrufen. Ja, zwei verschiedene Stile das zu machen, ist mir eigentlich egal. Was ich auch krass finde, wie...
01:19:01 wie kurz man das tatsächlich schreiben kann. Entrypoints require my Command-Handler. Hier wird UXP required und hier oben wird Premiere ProReP required. Es ist echt nicht viel, ne? Index.js, nicht Main.js. Guter Punkt. Muss diese Index.js, wenn man diesen Weg nimmt, noch irgendwo angegeben werden, ne? Das ist ein Magic Word. Die Index.js. So, dann gucken wir mal. Fenster. Okay, hier ist es noch nicht angekommen.
01:20:05 An was mangelt es noch? Also ich hätte jetzt erwartet, dass das schon reicht. Vielleicht haben wir noch irgendwas übersehen. Muss man die Index.js noch irgendwo angeben? Also hier wird sie nirgendwo angegeben. Hier wird mal eine Main Index.js angegeben, aber halt nur in dem Weg B hat das Ding kein Hot Reload. Auch eine Möglichkeit. Oder Tatsache ist halt, dass ich hier irgendwo habe ich nicht meine Main.js hier irgendwo. Nö, habe ich nicht.
01:21:05 Ist vielleicht zu viel für Hot Reload. Dann reloaden wir mal selber. Plugin successfully reloaded. Hm, der Command taucht nicht auf. Vielleicht ist die Doku tatsächlich falsch. Und man muss trotzdem das hier machen. Oder kann man vielleicht das einfach nicht mixen? Mal gucken, was jetzt passiert. Nischt. Vielleicht ist das aber auch nicht Hot Reloadbar. Okay, Dinge passieren.
01:22:12 Could not find command my command in manifest. Okay. Also Dinge passieren ja offenbar. IDs my command. Und die Index.js my command auf my command händler. Habe ich irgendwas übersehen? Wir loaden das ganze Ding nochmal. Und jetzt sollte ich ja eigentlich auch in meinem fancy Fensterchen hier could not find my command in manifest.
01:23:08 Der Log war vom Panel. Du hast kein Panel mehr. Aber ich habe offenbar hier noch ein Panel. Und das geht sogar auf. Das macht auch Dinge. Das Setup ist alternativ zum Manifest. Bin ich mir nicht sicher. Weil vorhin stand, dass man das einfach kombinieren kann. Und da gab es auch Beispiele, wo man das kombiniert. Guck hier, das ist ein Panel, das ist ein Command. In einer Dinger hast du nicht mehr die HTML drin. Ja, ist das ein Problem? So, es kam wieder... Aber das habe ich davor schon gemacht.
01:24:15 Also ich verstehe noch nicht genau, kann ich das eigentlich mal zumachen? Ich habe viel zu viele Fenster auf. Ich verstehe noch nicht genau, was fehlt, dass das richtig geladen wird. Hier gibt es auch keine Fehler mehr. What könnte es sein? Also offenbar muss er die hier durchgehen und dann findet er hier meinen Command. So weit, so gut.
01:24:59 Das ist unglaublich schlechte Dokumentation übrigens. Has a variety of functions. Das ist ungefähr genauso, wie zu sagen, keine Ahnung, Regen ist nass. Method is especially useful. Main property. Ja, in that case, aber es ist nicht mein Case. Mein Case ist das hier. Ich gucke gerade einfach mal in anderen Tutorials durch. Also hier ist auch wieder die Main.js drin. Ich glaube, der Code muss in die Main.js statt in die Index.js.
01:26:23 Okay, interessanter Take. Und die muss dann geladen werden, nehme ich an. Aber das wird sie ja von meinem Panel. Aber es wäre auch irgendwie weird, wenn man das Panel bräuchte, damit sowas geladen wird. Mal einen echten Reload. Could not find... Okay, jetzt kommt auch wieder der Fehler. Also jetzt wurde tatsächlich das Ding geladen. Could not find Command in Manifest.
Probleme beim Laden von Commands
01:26:5301:26:53 Okay, also jetzt wird tatsächlich, wird es versucht, der Code wird ausgeführt, was jetzt irgendwie nicht überraschend ist, weil naja, der wird ausgeführt. Und dann existiert hier kein Command mit dem Namen myCommand, was falsch ist. Ich könnte auch jetzt hier main.js reinschreiben und den Reload wagen. Das sollte wahrscheinlich nichts ändern. Could not find command myCommand manifest. Mach mal Anführungszeichen rein.
01:28:09 Also ist das hier immerhin der Kram, der ausgeführt wird. Ja, wird er. Okay. Also er versucht dann, myCommand in Manifest zu finden. Und Manifest hat das leider nicht. Was ist, wenn ich das hier rauslösche? Jetzt hat er wirklich nur noch einen Type-Command namens myCommand. Findet er trotzdem nicht. Also das Panel hat damit rein gar nichts zu tun. Auch wild, dass das noch da ist, obwohl ich es gerade literally gelöscht habe. Wird vielleicht das wirklich nur durch einen Reload aktualisiert? Nö. Sass.
01:28:52 Ich habe aber gerade das Panel weg gelöscht. Unload. Load and watch. Das lieben wir. Wenn Reload nicht dasselbe macht, wenn Neustarten nicht dasselbe macht, wie Stoppen und Starten. Cool, cool, cool, cool, cool, cool, cool, cool.
01:29:46 Okay, jetzt weiß ich, dass ich dieses Zeug hier wieder hinzufügen darf, weil es absolut keine Auswirkung hat. Jetzt weiß ich, dass myCommand dann tatsächlich hier ausgeführt werden können würde. I don't know. Und...
01:30:04 Mehr weiß ich nicht. Aber ich finde, das ist schon mal... Das Coole ist, dass ich jetzt wahrscheinlich auch tatsächlich das hier in eine Index.js ziehen darf, in der Index.html die Main.js weiterhin verlinken darf und in meiner Manifest-Datei tatsächlich hier mal als Main die Index.js eingeben darf. Und ich muss nur noch der hier wissen, was er für einen Entrypoint hat. Also, dass der irgendwie... Also, dass der die Index.html hat.
01:30:44 Aber naja, also wir machen den ganzen Spaß ja sowieso nur, weil ich diesem Command hier einen Shortcut zuweisen will. Das ist der einzige Grund, warum ich diesen ganzen Kram überhaupt mache. MyCommand. Command. My. UXP. Was könnte ich noch suchen? Weil also offenbar bringt es das nur, einen Command zu bauen, wenn man das über einen Shortcut aufrufen kann. Weil ansonsten, also das bringt es ja ansonsten also überhaupt nicht.
01:31:41 Also ich stoppe und starte dich nochmal. Das ist ein Command. Hier ist er. Wir haben ihn gesehen. Ich muss drei unter Menüs runter. Müssten Shortcuts in Manifest definiert sein. Ich hätte erwartet, dass es einfach so funktioniert. Aber er existiert nicht. Ich habe heute meinen Bachelor Informatik bestanden. Hey, herzlichen Glückwunsch. Geil. Ist direkt Master hinterher oder hast du die Nase voll von Hochschulen?
01:32:19 Ja, okay, also es geht nicht. Der einzige Grund, warum man Commands definieren sollte, ist, dass man sich hier geil hinter Shortcuts verstecken kann und das kann man nicht. Also gibt es doch noch einen Anwendungsfall für... UXP API sagt, du musst ein Shortcut-Objekt in der Manifestdatei haben. Okay. Wo? Singleton Pattern? Schau mir mal den Master an und denke, wenn ich es jetzt nicht mache, dann nie. True. Und ich sage mal so, der Wirtschaft geht es gerade nicht so wahnsinnig gut.
01:33:28 Montags? Ja, ich streame manchmal auch montags. Das ist ganz wild. Hauptsache nicht donnerstags. Also ernsthaft, wo hast du das mit dem Shortcut gefunden? Also ich kann hier Shortcuts suchen und finde nix. Hotkey Hacks? Okay. Plug-in Manifest. Shortcut. Okay. Schade, ich kann nicht krass reinzoomen für den epischen Effekt. Schade. Wäre geil gewesen.
01:34:38 Aber ist nicht weiter schlimm, weil ich baue ja literally ein Programm, damit man keine Shortcuts braucht. Also scheiß drauf. Läuft, würde ich sagen. Also ich möchte nochmal kurz zusammenfassen. Das ist alles dermaßen geil.
01:34:56 Ich weiß gar nicht, wo ich anfangen soll. Also for real, lasst euch von meiner ganzen Ironie und Zynismus und was weiß ich was hier allem, bitte nicht allzu sehr versichern. Ich find's absolut geil. Ich bin wirklich, ich bin ein ganz großer Fan. Und das ist wirklich, also explizit kein, kein Joke. Das ist wirklich geil. Punkt.
UXP-Pakete und TypeScript-Definitionen
01:35:2801:35:28 Ich bin schon gut versichert, sehr gut. Hoffentlich über meinen Link in der Videobeschreibung. Spaß. Ich mache keine Werbung für Versicherer. So, heute kommt es noch. Auch wenn ich sicherlich bin ich versichert. Insane gut zahlen. Okay, ja, Tutorials, Deployment, Interplugin, Multiple Panels, wie funktioniert das? Okay, man macht halt mehrere Entry Points.
01:36:09 Interpanel Control ist wirklich Plug-In Communication. Okay. Bisschen HTML. Lifecycle Hooks. Das werden wir irgendwann brauchen, um unseren Server zu starten. Plug-In Manager Plug-Ins. Plug-In ID. Using the stored Plug-In ID. Wo? Ach hier. Okay, und so kann man sich dann untereinander unterhalten. Okay, ja.
01:36:55 von mir aus, aber ich brauche eigentlich nur ein einziges Plugin. Ja, okay. Das ist bei mir sowieso kein Anwendungsfall. Packaging, bla bla bla. Okay, ja. Leute, jetzt haben wir wirklich das UXP-Lernen durchgespielt. Also, das ist voll okay. Ich gucke mal spaßeshalber noch die anderen Templates so an, weil es tut ja nicht weh. WebView Quickstarter, React Quickstarter.
01:38:02 Ja, React Quickstarter, oder? Cool, dass er sich automatisch meine Premiere-Version dieses Mal geholt hat. Okay. Wild. Ich muss various commands auf der Commando-Zeile ausführen. Uiuiui. Ich hoffe, das kriege ich hin. Grüße aus dem RE1 Richtung Karlsruhe. Geil. Warte mal RE1. Könnte wieder alles Mögliche sein. Ist das die Schwarzwaldbahn? Ne, oder? Keine Ahnung, ich kenne mich in Karlsruhe nicht aus.
01:38:52 Ne Package, Jason, ey. Yo. Bruder, fang halt an. UXP Plugin Load und UXP Plugin Reload. Gibt es da etwa eine CLI? Ne, oder? Das wäre ja der Hamey. Wie macht man eine Windows-Shell auf? Ich wünsche, das wäre ein Witz. Jepp von Stuttgart. Ah, okay, dann ist es nicht die Schwarzwaldbahn. Dann ist es Stuttgart. Ja.
01:39:50 Kann ich nicht einfach hier drin eine Konsole starten? Okay, ich glaube, das ist ein Windows-Terminal. NPM Run Build. Webpack ist entweder falsch geschrieben. NPM I. Braucht 20 Abhängigkeiten. Gute alte Webentwicklung. Geil. NPM Run Build. Okay, Build. Habe ich wirklich UXP? Befehl konnte nicht gestartet werden. Ach, kommt UXP hier drüber über irgendwas? Irgendwie als Dev-Dependencies oder so?
01:40:41 Nee. Woher kommt es dann? Warum kann ich die UXP aufrufen? Load. Okay, hu! Wollte gerade schon sagen. Das wäre ja fucking magisch, wenn das einfach funktionieren würde. JSX und so richtig... Boah. Ich hatte gehofft, dass hier wenigstens irgendwo mal eine Typscript-Definition mitkommt, aber... UXP ist im Premiere Pro Environment.
01:41:30 Stimmt, wir können einfach mal die Readme lesen. Wer liest sich keinen Readme? Schmeißt du den ersten Stein? Das führt man trotzdem... Weißt du, ich war gerade komplett happy, dass es eine CLI gibt, aber das führt man trotzdem nicht über die CLI aus. Man lädt tatsächlich aktiv über diese GUI das Ding by using options. Warum sind hier zwei Punkte? Oh Gott!
01:42:56 Also eigentlich müsste das so schon reichen. Ich wollte es nur gesagt haben. Ist okay, hey. Wenn das der Standarddinger ist, wird es schon passen. Oh Gott. Von was wird es rekursiv ausgeführt? Relativ ausgeführt. Wahrscheinlich vom Plugin-Ordner aus. Oder von was auch immer. Also es wird wirklich aus irgendeinem Subordner wird es ausgeführt. Was ist hier drin? Nüscht, ja okay.
01:43:40 Okay, okay, okay, okay, okay. Du, das ist, that's fine. We don't judge. Here's a React-Plugin. Uh, das ist sogar so fancy Übergangseffekte. We don't do such fancy things in Premiere. We make everything very easy so that the UI does not seem too cluttered. Sonst gibt's eine Nacken-Klatscher. Auf die Nomen-Klatscher. Okay, okay, okay. That's fine, that's fine. Bin nicht ganz so happy, dass das nicht über...
01:44:19 Aber das ist okay. Also das sind tatsächlich magische Schlüsselwörter, die hier drinstehen. Dieses UXP. Und sicherlich gibt es das tatsächlich auch, aber es ist nicht einfach so erreichbar. Müsste das aber eigentlich. Dieses UXP da. Wenn das Premiere so einfach ausführen kann, muss das ja auf irgendwas übersetzt werden. Es gibt eine CLI. Muss aber separat installiert werden. Jetzt reden wir. Es gibt eine Adobe DevTools CLI.
01:45:03 Ich bin begeistert. Fairerweise muss man an der Stelle aber wirklich sagen, die braucht es halt auch nicht wirklich. Weil wenn das Ding Hot Reload hat und man nicht jetzt irgendwie jeden Tag neue Panels hinzufügt, dann startet man einfach Premiere und fängt an zu arbeiten. Das finde ich halt tatsächlich einen so dermaßen guten. Also ich wette, wenn man die, weißt du, wenn ich da nichts machen muss außer Premiere starten und startet automatisch mit, dann brauche ich die CLI gar nicht. Das ist schon irgendwie krass.
01:45:35 Ich wüsste jetzt noch gerne, ob ich Breakpoints setzen kann. Das wäre jetzt noch so eine Sache, die mich irgendwie interessiert. Also wir unloaden mal den Kollegen hier. Und der Premiere Remote steht hier irgendwo in der Dokumentation vielleicht, wie man Breakpoints setzt. Entrypoints, ich höre Breakpoints. Weil es gab auch noch andere Wege hier, UXP-Code zu testen.
01:46:23 Ich vermute mal ein Debugger unter Sources. Eigentlich können die Chrome DevTools das. Okay. Let's see. Also hier ist mein Debugger. Wir gucken mal, dass der auch wirklich Dinge tut. Zack. Okay, cool. Main.js. Ach so, das ist dann automatisch ein Breakpoint. Okay. Okay, ich bin auf dem Breakpoint drauf. Okay, ja. Nächste Frage. Wie synchronisiere ich mich hier drauf?
01:47:25 Das kann ja nicht unmöglich sein, oder? Also cool, dass ich in den DevCool Tools da reinkomme, aber das muss ja auch irgendwie möglich sein, hier raus da ranzukommen. Ich meine, fairerweise finde ich auch schon, man kann doch mit DevCool Tools mit VS Code connecten. Genau das suche ich. Achso, das ist für Developer von VS Code. Ne, das suche ich nicht.
01:48:24 Weiß ich hätte gerne, wie will ich hier meinen Breakpoint setzen. Schön, dass ich den setzen kann, aber da muss ich ja irgendwie da rankommen. Dafür habe ich einfach zu wenig Ahnung vom JavaScript Ökosystem. Das ist sicherlich total einfach, aber da fehlt mir jetzt einfach das Wissen. Ich glaube, egal, dass man die Einstellungen klicken kann. Du müsstest den Chrome Debugger-Port von UXP wissen, dann kannst du eine RunConfig im VS Code erstellen. Okay.
01:49:20 Ich bin auch nicht 100% sicher, ob das überhaupt geil oder arg hilfreich ist. Weil ich meine, so oft muss man wahrscheinlich nicht reingucken. Und sind wir ehrlich, das ist schon ziemlich geil, dass das hier überhaupt reicht. Und du sagst, man kann auch einfach hier den Bagger reinschreiben. Und das ist dann Äquivalenz zu so einem Breakpoint. Ich habe auch sowas in Erinnerung. Ah ja, ist tatsächlich so. Das ist schon echt geil, ey. Hat gerne lai. Das ist tatsächlich nicht übel.
01:49:58 Ja, so lässt sich's arbeiten. Also vor allem, weil ich ja auch wirklich den gesamten Scope da hab und sowas. Kann ich jetzt wirklich... Okay, ist eigentlich komplett unnötig, die Bagger reinzuschreiben, wenn man auch einfach irgendwo klicken kann.
01:50:12 Zack, zack, zack. Dann ist der Kram hier. Da gehe ich in Sequence rein. Gucken wir hier, verfügbare. Das ist schon. Das ist okay, ja. Und vor allem, also dadurch, dass man halt auch einfach aus einem Bildordner raus den Kram starten kann, ist das wahrscheinlich total easy, das ist so, das, was ich mich jetzt noch frage, diese TypeScript-Definition, die Datei mit reinzubekommen. Denn das ist noch so eine Sache. Da gibt es so eine TypeScript-Definition-File. Kann man aufmachen. Und hier steht alles drin.
01:50:41 Also auch unsere Frage eigentlich, Video Track, Video Track, hier ist es und hier ist Declare Video Track und hier gibt es Get Track Items und das sind die zwei Variablen übrigens, die man reingeben muss. Einmal Track Item Type und einmal Include Empty Types, um das zu die Frage, so einfach ist es. Das ist, weil hier wirklich eine, keine Ahnung, über 1000 Zeilen lange Typisierungsdatei hinten dran steht, wo der ganze Kram drin ist. Das ist schon irgendwie ziemlich mächtig.
01:51:14 Gute Nacht, Carp. Ja. Also hier sieht man auch mal, was alles geht. Da geht sehr viel. Ja, und wenn ich jetzt irgendwie, ne, wenn ich jetzt rausfinden wollen würde, Track Item Type, gehe ich halt auf Track Item Type und dann interessieren mich jetzt halt hier Clip. So. Und damit hätte ich alles, was ich bräuchte. Clip ist die 1.
01:51:49 Und damit müsste ich eigentlich jetzt mit 1 und 1 und Falls müsste ich da rankommen. Wisst ihr was? Das testen wir direkt. Wir sind doch krasse Hacker. Guck mal hier. Also letsec ist gleich await x. Ist hier sec noch? Ups, das habe ich sec sicherlich überschrieben. Let, also x. Nee.
01:52:16 grad sagen, das wär absolut wild. Absolut wild wär das. Await, ähm, PP Pro, PP, ähm, äh, äh, äh, Project, Get, Active Project, ja, Get, Active Sequence, Let's Sec, Sec, Get, hä? Aha, warte mal. Es ist doch ne dynamische Sprache, oder?
01:53:03 ja genau get video track track.get ah null get track items so jetzt wird es spannend also t wissen wir jetzt ist 1 und das hier ist false let items slash await das habe ich eigentlich gerade Premiere auf ok ja passt
01:53:45 So, now we are talking. Guck mal hier. Das ist genau dieses eine Item. Das ist richtig. Was können wir Geiles uns geben lassen? Name. Ja, ist okay. Let's einfach nur Video. Ne, wie hieß das? Items. Null. Get Name. Das ist eine Promise und das steckt drin.
01:54:22 Irgendwas ganz hässliches .mp4. Ah, guck mal hier, das ist der Match. Das ist wirklich die mp4-Datei, die hier unten steht. Also, that's it. Typ-Datei. Typescript-Datei. So viel wert. Könnte man nicht nur sagen, now we're talking, sondern now we're modern talking. Mit dem Gesicht in die Ecke stellen. Zehn Minuten. So schlechte Witze mach nicht mal ich. Nee, schon gut.
01:54:58 Ja, okay, also that's it. Das ist so eine d.ts-Datei. Keine Ahnung, ob man da vernünftig einbindet, ist mir aber auch egal. Damit kann man dann vernünftigen Code schreiben. Und das Krasse ist halt, das möchte ich an der Stelle nochmal festhalten.
01:55:11 Alter Code. Das nochmal hier kurz zu zeigen, damit ihr mal in den Genuss kommt, wie das davor war und mal versteht, warum ich eigentlich die ganze Zeit hier so heftig am Ausrasten bin. Das mache ich ja nicht nur für die Quote und die Klicks, auch ein bisschen natürlich, ist klar. Das ist alter Code hier.
Vergleich altes vs. neues System
01:55:3501:55:35 Also erstmal, TSX hat nichts mit React zu tun, sondern einfach nur, weil es Extentscript-Dateien waren. In altem Code wäre es so, dass man erstmal einen Host und einen Client... Warum hat der jetzt gerade eben... Ah ja, weil ich es aus dem Host rausgespawnt habe. Ich muss es hier rausspawnen. Also erstmal gibt es irgendwie einen Host und einen Client.
01:56:00 Und der Host ist der eigentliche Code, der mit Premiere irgendwelche Dinge tut. Die tut es nicht so geil, aber es tut immerhin. Also hier werden wirklich mal Sachen aufgerufen. Und der Client-Code muss über so ein CS-Interface, so eine tausende Zeilendatei, die man mitliefern muss, muss den Code aufrufen, was wirklich unglaublich hässlich ist.
01:56:29 Aber dafür sorgt, dass man Eval-Ausdrücke hier drin hat. Und das ist kein Witz. Hier ist wirklich irgendwo... Guck, Eval-Skript. Hier wird also wirklich JavaScript ausgeführt. Quasi so einen Sidechain-Angriff gefahren auf sich selbst, I guess. Um...
01:56:50 irgendwie von JavaScript aus, JavaScript aus, Code aus zu callen, die aber nicht in derselben Anwendung miteinander stecken. Da wird also irgendwie ein String rübergeschickt und dann ausgeführt. Und das ist alles jetzt obsolet. Das braucht man nicht mehr. Niemand will so programmieren, sondern es gibt einfach eine Funktion und die eine Funktion greift hier auf ein DOM-Objekt zu. Das heißt Document Object Model, nicht das, was du jetzt wieder denkst. Meine Güte, Alter.
01:57:19 Twitch muss man wirklich mit allem rechnen. Also auf ein DOM-Objekt greift es zu und hat dann einfach Zugriff auf Premiere. Fertig. Das war's. Weitere Magie passiert vielleicht, aber man bekommt sie nicht zu Gesicht. Man sieht nur das DOM-Objekt. Fertig. Das macht komplett Premiere Remote so viel einfacher. Ja genau, GetNameDropTable, ja.
01:57:56 Das war ein einziger Injection-Angriff CEP im Gegensatz zu UXP. Meine Anforderungen an das neue Ding sind, dass ich, weißt du, das ist so krass, ich kann jetzt hier einfach einen Web-Service-Server schnell hochballern. Ich kann einfach, weißt du, ich kann in TypeScript den Kram hinschreiben, hier einen Web-Service spawnen, der existiert dann, der ist dann da und dann...
01:58:24 ruft er einfach den Code auf. Punkt. Klar, ich kann irgendwie auch wieder fancy Reflection Shit machen und irgendwie über TypeScript-Dateien drüber gehen und so. Das ist alles erlaubt und das mache ich wahrscheinlich auch, weil es der einfachste Weg ist, das zu machen. Aber es ist halt, es ist advanced, es ist shit.
01:58:48 Das ist das neue von Adobe, genau. Ich kann hier einfach Funktionen hinschreiben und die werden dann aufgerufen und ich starte hier einfach einen kleinen Ex... Wie heißt das? Ex... Ex... Extract? Ne, Ex... Dieser Web-Service... Serverabhängigkeit dieser Standarddinge, was man von nutzt. Express, genau.
01:59:10 Ich starte hier einfach einen Express Service und lausche auf eine HTTP und eine WebSocket-Schnittstelle, so wie ich das sonst auch immer gemacht habe, parze, was da so reinkommt und gibt es dann weiter an eine Detail mit Funktionen, I guess.
01:59:30 mit bisschen OpenAPI Dokumentation drüber. Das landet am Schluss in irgendeinem Dist Ordner. Der Dist Ordner wird einfach von meiner Anwendung geladen und das war's. Hot reload everywhere. Keine weitere Magie. Das Ding schießt sich einfach ab und startet sich neu und fertig. Reden wir kurz über Testbarkeit und das ist mir ein wichtiges Anliegen. Mehrere Arten von Tests sind möglich. Also erstmal
01:59:56 sehe ich keinen Grund, warum man irgendwelche Async-Funktionen nicht auch irgendwie vernünftig aus einer Test-Library aufrufen können, sollen, könnte. Nicht sicher, wie das dann funktioniert, weil das dann nicht im Premiere-Kontext aufgerufen wird.
02:00:14 Aber irgendwie kriegen wir das schon hin. Und wenn unser Testen einfach ist, dass man eine präparierte Premiere-Datei hat und dann irgendwie End-zu-End-mäßig Dinge ausführt und die dann wieder wegschmeißt oder irgendwie was hat, wo eine Premiere-Datei geöffnet wird, dann eine Funktionalität ausgeführt wird. Also da kann man irgendwie schon gute Integrationstests schreiben.
02:00:43 Die Frage ist eher, wie man hier über die vernünftige Unit-Tests schreibt. Das glaube ich noch keine. Also Integrationstests sind einfach. Du hast einfach irgendwelche Test-Premiere-Dateien und die haben quasi wie eine Fixture. Die hat einen definierten Zustand und dann führst du einen Test aus und danach hat sie einen anderen definierten Zustand, den du überprüfen kannst oder so. Da könnten wir einfach ein eigenes Test-Framework schnell schreiben. Das wäre nicht mal großartig schwierig.
02:01:10 Also die spannendere Frage ist eigentlich, ob man hier irgendwie Unit Testing reinbekommt. Ja, das ist eigentlich auch meine letzte Frage, die ich habe. Aber ich nehme irgendwie nicht an, dass es irgendwas gibt. Das wäre schon irgendwie wild. Essential Tools. Das ist nicht das, was ich gesucht habe. Advanced Tool Chain. Intellectual Tool Chain. Was ist denn eine Intellectual Tool Chain?
Überlegungen zur Testbarkeit
02:02:0202:02:02 Besser wäre es die Funktionalität in eine andere Datei zu stecken. Klar, Mocken ist die dritte Möglichkeit. Ich kann auch einfach sagen, dass ich hier oben nicht Premiere Pro require, sondern Premiere Pro. Und Premiere Pro, oder PP kurz gesagt, mockt das komplette Objektmodell weg. Und ich kann auch so überprüfen, dass die Sachen, aber um ehrlich zu sein, solche Tests interessieren mich persönlich weniger. Weil ich habe, also...
02:02:34 Klar ist es wichtig, dass es irgendwie Unit-mäßig funktioniert. Ich glaube aber, dass das meiste Fehlerpotenzial darin steckt, ob Premiere sich so verhält, wie ich es erwarte. Das wäre dann doch irgendwie so auf einem Level von Integrationstests. Ist die Frage, ob man wirklich Unit testen will. Jetzt, wo ich nochmal so drüber nachdenke. Weil eigentlich will ich gar nicht, ich will gar nicht mocken.
02:03:05 Ich will gegen eine Premiere testen. Das ist doch eigentlich das, was ich möchte. Dann ist eher die Frage, auf welcher Ebene man gegen Premiere testet. Auf der Ebene von einzelnen Funktionen oder eher auf der von gesamten Commands. Wahrscheinlich ist es wirklich eher auf der von Commands. Dann ist es ein ziemlich einfaches Test-Framework. Das hat irgendwie von einem basierten Ausgangszustand, irgendwie eine Premiere-Datei.
02:03:35 aus mehreren Sachen aufruft und überprüft, ob sie... Also ich fände es halt irgendwie geil, ihr wisst ja, irgendwie so 20 HTML Endpunkte oder sowas, wenn halt jedes von diesen Dingen mal einen Integrationstest hätte, sicherzustellen, dass die alle auch noch funktionieren, wenn ich Dinge tue. Also in der Pipeline würde es sowieso niemals funktionieren, weil wie will ich denn da bitte Premiere drin haben? Da wäre dann wieder Unit-Testen geil, weil du da den Mock hast, aber das bringt dich halt auch nicht weiter.
02:04:04 Weil wie gesagt, da haben wir keine spannende Erkenntnis. Übrigens ganz vergessen, Heinrich, vielen Dank für 107 mittlerweile. Und B-Bro, danke für 20. Und Grant an der Stelle für Ankleid 46. Gerade in der richtigen Sekunde subscribe, wenn ich mal in dieses Fenster hier unten rechts reinblicke und nicht damit beschäftigt bin, mich mit dieser Komplexität hier zu erfreuen. Es gibt auch UI-Tests, die Videos machen, aber nicht für Premiere, ey. Wie will ich denn meine Lizenz in eine Pipeline reinkriegen?
02:04:37 Das sind Fragen, die interessieren mich auf dieser Ebene wirklich kein bisschen. Ich überlege gerade wirklich, man könnte ja irgendwie eine Funktion aufrufen aus irgendeinem Runner. Da ist ja ganz naiv, denke ich an einen Button, der heißt Test. Und der geht dann Stück für Stück die einzelnen Endpunkte durch. Braucht aber halt im Zweifel jeweils noch andere Premiere-Dateien. Ha! Ich habe noch keine Antwort.
02:06:07 Ich kann ja den Code nicht aus VS Code raus. Ich überlege gerade die ganze Zeit, ob ich irgendwie ein Test-Framework hier dran angeschlossen bekomme, weil ich habe ja keine Möglichkeit, Code irgendwie auszuführen aus Premiere raus, oder? Also es gibt dieses Plugin, was ich hier auch habe, aber der Extents mit Bagger. Validator for UNIXP.
02:06:57 Das ist halt alles so ein bisschen pointless. Ja, ich habe dann irgendwie den Code. Ich würde ja, ich meine, was ist ein Test? Ein Test ist ein Setup, ein Test ist ein Testcode, der dann ausgeführt wird und dann überprüfen, ob der Zustand des Setups nach dem Test im gewünschten Zustand ist. Mehr ist ja ein Test nicht.
02:07:19 So, den Code irgendwie von woanders aufrufen, kriege ich hin. Das sind einfach nur Funktionen. Check. Und Setup liefern, kreieren wir auch hin. Sicherlich kann man hier sogar Projekte öffnen oder sowas, weißt du? Wurde einfach nicht gespeichert, easy. Können wir mal eben in der hier Sachen nachgucken, ob es irgendwie Open gibt. Open Project. Wo werden die so eingesetzt?
02:07:55 Project static open. Path string open a project. Also geht offenbar. Okay, also ich kann in einem definierten Zustand eine Funktion ausführen. Und dann brauche ich noch Code, der überprüft, ob danach ein gewisser Zustand in diesem Projekt herrscht. Das wäre dann irgendwie mein Testcode. Und wie führe ich diesen Testcode aus? Da brauche ich jetzt irgendwie einen Testrunner.
02:09:01 Ich weiß auch nicht, wie eklig das wird, um ehrlich zu sein. Ich hatte gehofft, also das ist auf jeden Fall tausendmal einfacher, hier für Tests zu schreiben. Und sich irgendwie ein Test-Setup aufzubauen. Oder einen Test-Command, der immer in den Main-Plugin ausführt. Ja, genau, da hänge ich gerade auch. Man könnte ja irgendwelche über Konventionen, was auch immer, dass jeder Endpunkt auch einen zugehörigen Test hat oder was auch immer. Was man dann halt irgendwie über einen extra Endpunkt aufguckt. Das ist nicht so 100% sauber. Aber so könnte man schon solche Sachen herstellen.
02:09:38 Ich sehe halt schon wieder den Aufwand, um diese Testbarkeit zu haben. Das ist schon wieder so ein Major-Abfuck. Man sagt ja, dass man Tests nicht nur schreibt, um Tests zu schreiben. Sowieso nicht. Auch nicht, um die Qualität des getesteten Codes zu sichern, sondern auch, weil wenn man quasi Code auf eine Art und Weise entwickelt, dass er testbar ist, ist es automatisch besserer Code. Man muss sich mehr Ideen, Gedanken machen muss um Modularisierung und Zustand und so weiter.
02:10:05 Deswegen pushe ich auch diesen Testgedanken jetzt mal von Anfang an mit. Aber wenn das gesamte Framework mir so wenig bietet für Testbarkeit, da frage ich mich echt, ob mir das nicht mehr das Genick bricht, als es mir tatsächlich hilft. Das finde ich irgendwie unzufriedenstellend.
02:10:29 Also vor allem, weil ich nicht gefühlt der erste XP-Entwickler in dieser Welt bin, der sich irgendwie Gedanken macht, ob man das Zeug irgendwie testen kann. Also for real. Ja, sehr lustig. Diese Variante haben wir schon uns angeguckt. Component-Tests, auch sehr lustig. Rebuild and reload, das ist alles, also diese KI-Antwort ist unglaublich schlecht.
02:11:52 Es hat noch nie jemand sich um Testen von UXP-Plugins Gedanken gemacht, oder? Ich bin gerade wirklich der erste Mensch auf dieser Welt, der diese Frage stellt. Das muss so sein, oder? Genau, ich bin jetzt auch so lost, dass ich bei Gemini Pro gelandet bin. Muss ja irgendwas dafür können, dass man da 20 Euro im Monat für zahlt.
02:12:36 Ah ja. Weißt du, normalerweise lobt einen Gemini erstmal, was für ein krasser Mensch man ist, dass man sich solche noblen Gedanken stellt. Aber dieses Mal ist Gemini on point. Notoriously tricky, Bruder. Ja, klar. Lass doch einfach alles rappen. Dann können wir den Rapper debuggen. How about no? Nein?
02:13:23 Diesen Decoupling Approach machen wir nicht, weil das löst vielleicht unser Testing Problem, aber es sorgt dafür, dass alles andere die absolute Hölle wird. Also ja, ich könnte irgendwie dann hier Project, Type Project, hier sind irgendwelche Sachen drin, das kann man alles mocken. Also diese Sachen könnte ich tatsächlich zurückgeben. Ich könnte Mocking Sachen für all diese Funktionen schreiben.
02:13:57 Aber was genau gewinne ich dabei? Weil also dann teste ich im Zweifel gegen meinen selbst geschriebenen Mock. Genau, der schaut im ganzen Projekt nach entsprechenden Tests und führt diese aus. Aber wie? Also, wenn ich V-Tests starte, wie will der denn, also, das muss ja aus Premiere rausgecalled werden.
02:14:40 Mocken fliegt raus. Ich teste da einfach nur ein Gedankenkonstrukt von mir gegen ein anderes Gedankenkonstrukt. Das ist ungefähr so, wie wer den besseren imaginären Freund hat bei Religion. Das bringt nichts. Ach cool, und Weg 2 ist Mocken. Das ist wie das in dem Plug-in-Code. Das ist das Parent-Prozess. Reicht das nicht? Not sure, um ehrlich zu sein. Ich glaube irgendwie nicht, dass es reicht. Hallo, Libogo.
02:15:29 The modern approach using community toolkits. Was? Bin ich vielleicht doch nicht der erste Mensch auf dieser Welt, der sich solche Gedanken macht? Okay, für Adobe Photoshop. Was? Was? Was? Ich bin der zweite Mensch, der sich diese Gedanken macht. Alter, jemand hart geschossen. Okay, das ist leider Hardcore-Photoshop. Das bringt uns nicht weiter.
02:17:20 Wie ähnlich ist die SDK, du im Zweifel ist alles was wir in diesem Tool hier gesehen haben gleich und alles andere anders. Also bisschen demodellierend, der Aufwand um das vernünftig aufzubauen ist einfach so hoch. Ja da bin ich schon wieder raus, Manual Testing.
02:19:08 Ich meine, das Gute ist, ohne Frage wird die Qualität der gesamten Implementierung höher sein als meine jetzige, weil ich mich halt mit so vielen Dingen nicht rumschlagen muss, die die alte CEP-Geschichte halt einfach mit sich gebracht hat. Insbesondere diesen Kram mit dem Hin- und Herschicken von diesen E-Wall-Commands. Das war wirklich immer richtig krass, Krebs.
02:19:47 Da habe ich wirklich gar keinen Bock drauf. Ich bin der Meinung, dass wir erstmal eine Version implementieren sollten. Und Tests sind wieder ein Afterford. Ey, es nervt mich ein bisschen. Also was heißt Afterford? Wenn ich irgendwie alles auf dem Weg vernünftig mit reinbekomme, dann mache ich es. Wenn nicht, dann call ich es ein Hobbyprojekt. Und es wird schon. Weiteres Fenster, was denn die Testen-Premiere ausführt? Ja, sowas, ne?
Konzept für Test-Framework
02:20:4302:20:43 Also quasi ein Test-Framework um mein Main-Plugin drumherum. Was aber im Normalbetrieb einem nicht in die Quere kommt. Ja, darauf können wir uns einigen. Zwei Panels.
02:21:03 ein Produktivpanel, was so ähnlich sein wird wie das hier. Ich will ein paar mehr Buttons, die einfach Dinge können und ein paar mehr Informationen. Das soll mir bitte mal sagen, dass das Ding läuft, auf welchem Port, wie viele Commands geladen wurden, was weiß ich. Also einfach mehr als das. Und dann gibt es hier oben ein weiteres Fenster, das heißt dann Test.
02:21:29 Und das ist highly technical. Da wird für jeden Endpunkt oder sowas geguckt, ob es ein Test existiert, von mir aus per Konvention. Und da stecken drei Dinge drin. Erstens das Testprojekt, was einfach nur ein Pfad ist. Und die Testdateien können ja tatsächlich auch Teil des Repos sein, die sind ja nicht groß. Und...
02:21:56 Ja, mit Liefern, das lädt man sich eh runter und führt aus, es ist nicht so, als wäre das irgendwie krass. Ich will auch dieses Mal meine eigene Funktion tatsächlich direkt mit ausliefern als Samples. Und das wird dann, das geht dann einfach drüber und lädt immer ein Projekt, Applied, die Funktion, die es testet, von mir aus per Konvention, oder ist es einfach eine Map, I don't fucking care.
02:22:28 Ich habe das halbe Script, weil wir haben die Möglichkeit sowas sogar sauber und typischer zu definieren.
02:22:34 Pseudotyp sicher. Und dann überprüft es mit anderem Premiere-Code, ob der Zustand auf einen Stand gestellt ist, den ich wollte. So lassen sich vernünftig Testschreiben. Es ist nicht in der Pipeline ausführbar, war aber auch niemand Anspruch. Es ist noch nicht mehr auf der Konsole ausführbar, war aber niemand Anspruch. Es hat auch keine Testabdeckung, war auch niemand Anspruch. Aber es erfüllt den eigentlichen Nutzen.
02:23:01 Und zwar erstens, dass ich das Zeug so designe, dass es stateless ist und damit hoffentlich eine saubere Schnittstelle habe. Dieser Nebeneffekt, den man für Testbarkeit entwickelt. Und Nummer eins, wenn ich irgendwo mit irgendwas mein, ähm, irgendein anderes Kommando zerschossen habe, kriege ich das raus. Und ich kann auch so Basic-Tests schalmen, wie, ja, der Service ist da und der reagiert. Weißt du, so Kram.
02:23:36 UXP sollte deutlich stabiler sein. Ja, aber ich sag dir, ich hab gerade bei meinem letzten Premiere-Update, und das ist kein Witz, ne? Also, ich geb dir ein ganz konkretes Beispiel und ich hoffe, dass du mich dann nachvollziehen kannst. Hier in meinem letzten Release steht das hier. No migration projects detected yet. Weißt du, warum dieser Satz hier drin steckt?
02:24:03 Weil es mir zu aufwendig war, alle von meinen Funktionen zu testen, ob sie auf der neuen Premiere-Funktion auch noch funktionieren. Und wir haben ja gerade bei diesem anderen Plugin für UXP für Photoshop gelesen, dass auch UXP wohl nicht fehlerfrei ist und da auch Regressionen reinkommen.
02:24:26 Das heißt nix proper, nur weil es eine neue Schnittstelle ist. Deswegen bin ich echt nicht so sicher, ob das alles so gut ist. Ich will, dass wenn ich neue Versionen release, irgendwas hoch mache, wenn ich was auch immer tue.
02:24:41 will ich einmal kurz die Tests alle durchradern lassen können. Und wenn ich das nur lokal mache und wenn ich das von Hand anstoßen muss, Hauptsache es rattert automatisch mal schnell Dinge durch und führt Code aus und zeigt mir danach einen grünen Haken an. Auch wenn ich da für meine eigene kleine Testbibliothek mit eigenen Assertions oder sowas, was ich schreiben muss, ist eigentlich auch mal eine ganz coole Herausforderung.
02:25:08 Wir brauchen ja nicht viel. Laden Premiere-Datei, fügen Command aus, kann nicht easy machen über ein anderes Plugin und dann zwei Assert-Funktionen. Eine Assert, die ein Boolean rausgibt und eine Assert Equals oder was auch immer. Und wenn da nicht True rauskommt, dann wird halt ein roter Haken angezeigt. It ist so easy. Und das macht dann Ray auf alle Testfälle düwer.
02:25:36 In Java würde man sagen Reflection über JavaScript, die du rausgefunden hast. Und ja, alle glücklich, Haken grün.
Zusammenfassung und Ausblick
02:25:4802:25:48 Ich denke, so können wir es auf jeden Fall im Kopf halten. Okay, das war ein intenser Stream. Der ging auch ein bisschen länger, als ich es eigentlich wollte. Aber ich muss sagen, wir haben das Ziel absolut erfüllt. Das ist das, was ich wollte. Also wir sind da, wo ich hin wollte. Wir haben jetzt ein ziemlich genaues Bild davon, was möglich ist. Ich hatte, wie gesagt, ich habe, also das ist kein Witz, ich habe hier wirklich hier vor nie irgendetwas gemacht mit UXP. Ich bin...
02:26:17 äußerst positiv überrascht nochmal für alle TikTok Zuschauer.
02:26:25 Ich bin äußerst positiv überrascht, was alles möglich ist, wie einfach es war, hier reinzukommen. Das ist anfängerfreundlich. Das ist wirklich, also im Gegensatz zu dem, was mit CEP notwendig war, wo man manuell irgendwelche Registry Keys setzen musste, damit überhaupt irgendwas mal startet und so. Im Vergleich dazu ist das so unglaublich anfängerfreundlich, dass man das Leuten sogar empfehlen kann. Das ist nicht auf dem Level anfängerfreundlich wie ein Stream Deck SDK, was ja wirklich idiotensicher ist.
02:26:53 Aber es ist anfängerfreundlich und diese API ist wirklich sehr zugänglich. Deswegen muss ich sagen, ich bin sehr positiv überrascht. So lässt es sich arbeiten. Und ich unterstreiche nochmal mein Statement. Premiere Remote wird komplett from scratch neu geschrieben, verliert mindestens mal die Hälfte der Komplexität und wird hoffentlich stabiler und moderner, als es jemals war. Krass, Leute.
02:27:23 Ich bin zufrieden. Das ist ein schönes Fazit. Ich freue mich drauf, Premiere Remote mit euch neu zu schreiben. Ich kann nicht sagen, wie in welchem Pace wir jetzt hier weitermachen, ob ich vielleicht doch einfach mal das Projekt mal aufsetze und gucke, dass alles funktioniert und das zusammen mit meinem besten Freund Opus und seiner kleinen Schwester so nett mache, weil die so nett ist.
02:27:50 Oder ob ich das hier live im Stream mache oder ob ich da mal ein Video zu mache. So, hey, das ist komplett offen. Ich denke aber, dass wir es schon so auch ein Theme sein können, den zukünftigen Coding-Streams, von denen ich auch nicht weiß, wie oder was oder wo oder wann sie kommen. Das ist ja das schöne, komplette Freiheit. Aber dafür muss ich halt wirklich nichts sagen. Und alle, die jetzt hier zugeschaut haben, werden das bestätigen können. Dieser Stream hatte deutlich weniger Stöcker im Arsch als so ein guter Sonntagmorgen-Stream.
02:28:18 normal so hatte, selbst so ein lockerer, guter Sonntagmorgen-Coding-Stream, dann könnt ihr euch auf den Kopf stellen. Habt ihr euch mal auf den Kopf gestellt. Hab ich zum Beispiel so sehr lange nicht mehr gemacht. Ich glaube, ich würde mir sofort das Genick brechen. Würde ich es auch nur versuchen. Aber, ähm...
02:28:34 Ich finde, das war ein sehr viel lockerer und gechillterer Stream, als wenn ich mich zwingen würde, Sonntagmorgens live zu sein, um nochmal auf meine Diskussion anzustoßen, die ich im letzten Guten-Sondag-Morgen-Stream angestoßen hatte, dass ich mir sämtliche Planungen hier rausnehme, um mir endlich mal die Freiheit wieder zu geben. Video ist vor kurzem übrigens rausgekommen. Wenn es klappt, kommt diesen Sonntag direkt das nächste. Es ist komplett wahnsinnig. Aber mal gucken, wie weit ich mit meiner...
02:29:02 selbst auferlegten Freiheit so komme. Freiheit nicht von Mediacraft, sondern in dem Fall von mir selbst. Und ja, das war es mit dem Stream. Premiere Remote, also doch nicht tot. Tut mir leid, Syncopster. Den Change kannst du ja mal irgendwo hin staschen. Vielleicht brauchst du ihn noch irgendwann, aber für jetzt sieht es eigentlich sogar ziemlich geil aus für das, was so kommt.
02:29:26 Und die CEP Legacy Version, ich glaube nicht, dass die noch lange leben wird, um ehrlich zu sein. Also es ist jetzt wirklich für mich so ein Freiheitsstoß, das jetzt hier vernünftig neu zu machen. Ich finde es geil, dass wir dann einfach so viel besseres Produkt haben als davor. Und das mit modernen Technologien. Finde ich mega. Ich hoffe, es war für euch spannend. Also das ist, glaube ich, mal eine Welt, in die ihr so nicht einfach so eintaucht.
02:29:53 wo man erstmal ein bisschen suchen muss, um so verrückte Dinge überhaupt zu entdecken. Ich finde so nach wie vor so Plug-In-Sachen und so was einfach unglaublich spannend. Das ist ein riesen Spielgebiet, wo man ganz viele tolle Sachen machen kann. Genau, taucht du mal woanders ein. Schönen Kopfstar. Ich wünsche euch einen schönen Kopfstar-Abend. Schlaft schön, arbeitet morgen früh schön. Ich mache jetzt auch Feierabend. Ich überlege gerade, ich muss eigentlich noch so ein paar anstrengende Mails schreiben.
02:30:23 Aber die kann ja auch alle morgen schreiben. Urlaub, du Penner. Krass. Ich hatte auch Urlaub vor zwei Wochen. Deswegen hatte ich auch letzte Woche frei. Also, weil ich hatte wirklich vor zwei Wochen Urlaub und habe am ersten Tag meines Urlaubs mit einer Lebensmittelvergiftung eingefangen und lag dann zwei Wochen lang flach. Ich wünschte, diese Story wäre ein Witz, aber es ist wirklich die Wahrheit.
02:30:48 Deswegen war jetzt auch zwei Wochen bei mir Funkstille. Also das Video war schon hochgeladen und geplant. Aber hat mich wirklich gerade zwei Wochen lang gekostet. Hab auch ein paar Kilos gut abgenommen. Bin jetzt ein schmaler Boy wieder. Okay, danke fürs Zusehen. Macht's gut. Bis bald. Ciao.