skip to content
Video cover art for AutoShow CLI with Nick Taylor
Video

AutoShow CLI with Nick Taylor

Anthony Campolo and Nick Taylor discuss DevRel, conferences, and building a CLI for video and audio transcription, weaving personal stories and coding insights.

Open .md

Episode Description

Nick Taylor joins Anthony Campolo to add a CLI spinner and custom "Key Moments" prompt to the AutoShow content repurposing tool during a live co-stream.

Episode Summary

Anthony Campolo and Nick Taylor reunite for a co-stream focused on improving AutoShow, Anthony's open-source CLI tool for transcribing and repurposing audio and video content. After catching up on their respective careers—Nick's transition into developer advocacy at Pomerium and his whirlwind conference tour including KubeCon EU and All Things Open AI, and Anthony's progress on Dash cryptocurrency funding, job interviews, and an AI-powered TV show project with his college friend—they dive into hands-on coding. Nick explains how he uses AutoShow at work to find compelling 60-second clips from hour-long interview recordings, saving significant time over manually scrubbing through video. They tackle two contributions to the newly separated AutoShow CLI repo: first, integrating the Ora spinner package to provide visual feedback during long-running operations like audio downloading and transcription, and second, drafting a new "Key Moments" prompt that would automate Nick's clip-finding workflow directly within the tool. Along the way, they navigate real-time debugging of the spinner's synchronous execution issues, discuss editor tooling like Windsurf and Cursor, and touch on the evolving landscape of AI models and Node.js versions. The stream captures authentic open-source collaboration, from git workflow quirks to the value of AI-assisted code review.

Chapters

00:00:00 - Introductions and Career Updates

Anthony welcomes Nick Taylor to the co-stream and Nick introduces himself as a developer advocate at Pomerium, a company focused on securing internal applications. They share how they've known each other through open source and conferences for years, with Anthony recounting a recent visit from their mutual friend Dev who got stuck due to visa complications.

Nick describes his career journey from Open Source (later acquired by the Linux Foundation) into his first dedicated developer relations role at Pomerium, encouraged by mentors like Angie Jones. He highlights the conference circuit he's been on, including All Things Open AI, SRE Day London, and KubeCon EU, where he met coworkers in person for the first time and even landed a spot on the Kubernetes podcast live stream despite being brand new to the Kubernetes ecosystem.

00:05:04 - Conference Highlights and the Kubernetes World

Nick reflects on his favorite conference experiences, noting the intimate feel of the smaller SRE Days events and the massive scale of KubeCon EU with its 10,000-plus attendees. He talks about meeting colleagues like Daniel Afonso from PagerDuty and reconnecting with his former CEO from Open Source, illustrating how conferences serve as critical networking hubs in the developer community.

The conversation shifts to Nick's hands-on learning curve with Kubernetes and Linux infrastructure, having spent most of his career as a frontend developer. He describes setting up a mini PC to run a Kubernetes cluster, embracing the challenge of learning Linux commands that aren't yet muscle memory, and his intentional decision to move beyond frontend development into the infrastructure and security space that Pomerium operates in.

00:12:05 - Anthony's Projects: Dash Funding, Job Interviews, and an AI TV Show

Anthony shares updates on his AutoShow project receiving funding through Dash, a cryptocurrency with a DAO governance model. After narrowly missing the first vote by eight votes, his proposal for building a crypto payment integration passed the following month, providing roughly $2,000 monthly over six months. He also mentions ongoing job interviews with companies he's excited about.

The most colorful update involves Anthony's college friend Eric Edwards, who has been writing a sci-fi TV script inspired by his family's used farming equipment business in California's Central Valley. Anthony is helping produce the show using AI tools for animation, text-to-speech, and comic book generation, drawing inspiration from the AI-produced show Neural Voices. They discuss the creative workflow of generating character designs, choosing a cartoon art style to simplify lip-syncing, and converting scripts into comic book storyboards as an intermediate step toward full animation.

00:18:04 - AI Video Tools and the Sora Experience

The pair discusses their experiences with AI video generation tools. Nick shares a Sora-generated video based on his profile photo where he appears to be rapping, noting the comical proportion issues in early attempts. Anthony describes his disappointment with Sora's output quality upon its public release after months of closed-beta hype, finding Runway and Kling to be more capable alternatives.

Anthony shows off comic book panels generated for Eric's sci-fi show, demonstrating how current AI image generation can handle text rendering far better than previous versions. They discuss the cartoon art style's resemblance to shows like Futurama and Adult Swim programming, and Anthony explains his hypothesis that cartoon-style characters will make AI lip-syncing look more natural than attempting photorealistic animation.

00:23:41 - AutoShow CLI: Architecture and Nick's Workflow

The conversation pivots to the technical focus of the stream as Anthony explains the recent separation of AutoShow into two repositories—a standalone CLI and a front-end/back-end app—to improve development velocity. Nick describes his practical use case at Pomerium: processing hour-long interview recordings through AutoShow to generate timestamped transcripts, then feeding those transcripts to an LLM to identify compelling 60-second segments for YouTube Shorts.

This workflow replaces the tedious process of manually watching entire videos to find good clip points. Nick explains how the timestamps in the transcript are the crucial ingredient, allowing him to quickly locate moments in his video editor. They discuss how this use case could become a built-in feature through a new "Key Moments" prompt, and Anthony mentions an existing create-clips script that approaches similar functionality from a chapter-based perspective.

00:31:36 - Adding the Ora Spinner to the CLI

Nick begins the hands-on coding portion by implementing a loading spinner using the Ora package from Sindre Sorhus, whose libraries Anthony trusts for their maintenance quality. They walk through the AutoShow CLI's five-step processing pipeline—generate markdown, download audio, run transcription, select prompt, and run LLM—identifying the download and transcription steps as the primary candidates for spinner feedback.

After installing Ora and wiring it into the download audio utility function, they hit a bug where the spinner appears frozen. Through debugging, Nick discovers the spinner starts and stops synchronously without giving it time to animate, since the processing code wasn't properly awaited between the start and stop calls. They resolve this by repositioning the spinner lifecycle around the actual async operations.

00:39:29 - Refining the Spinner and Merging the PR

With the spinner working correctly for both audio downloading and transcription processing, Nick incorporates feedback from GitHub Copilot's AI code review, which catches that spinner.succeed implicitly stops the spinner and suggests adding spinner.fail in catch blocks. They discuss the value of AI-assisted code review as a practical and genuinely useful application of AI tooling.

Nick creates the first pull request on the new AutoShow CLI repo, leading to a humorous exchange where Anthony merges without formally approving—teaching him the distinction between GitHub's approve and merge workflows. They also touch on editor tooling comparisons between Windsurf, Cursor, and VS Code's new agent mode, and Node.js version milestones including the just-released Node 24 and its native TypeScript stripping support.

00:44:00 - Building the Key Moments Prompt

Nick begins crafting the "Key Moments" prompt by adapting the prompt he's been manually feeding to ChatGPT. They work within AutoShow's prompt system, where each prompt consists of an instruction string and an example output. The instruction directs the LLM to identify compelling segments from a transcript with timestamps, and the example demonstrates the expected format using actual output from Nick's previous manual runs.

They use Windsurf's AI assistance to help format the prompt correctly within the existing TypeScript structure, adjusting the number of key moments from three to two for the initial version. The process highlights how AutoShow's prompt architecture makes it straightforward to add new content generation capabilities without modifying core logic.

01:47:15 - Wrap-Up and Future Plans

After encountering a bug with the key moments prompt not generating output—which they agree to debug off-stream—Nick and Anthony reflect on the session's accomplishments. The spinner improvement represents a meaningful quality-of-life upgrade for CLI users, and the key moments feature, once completed, will automate a workflow that currently requires manual copying between tools.

They brainstorm future enhancements like grabbing raw video clips with buffer time around key moments, building a lightweight editor for show notes in the productized version, and integrating with video editors like DaVinci Resolve. Nick shares a Matt Pocock tweet about video editing workflows as inspiration. The stream closes with appreciation for their chat audience, particularly the ever-supportive Fuzzy, and plans for continued collaboration on AutoShow.

Transcript

00:00:02 - Anthony Campolo

All right. Welcome back, everyone, to AJC and the Web Devs special edition co-stream with long-time returning guest Nick Taylor. If you're coming in from Nick Taylor's stream, welcome in. If you're coming in from my stream, you probably already know who he is. Why don't you go ahead and introduce yourself anyway, Nick.

00:00:22 - Nick Taylor

Yeah. Thanks, Anthony. My name's Nick Taylor. I'm currently a developer advocate at a company called Pomerium. We're a really good solution for securing your internal apps. And aside from that, I've known Anthony for quite a while through open source and just hanging at conferences. So thanks for having me, man.

00:00:44 - Anthony Campolo

Yeah. You're in the running for most long-time returning guest. And Dev just stayed at my house the other night. He showed up at 5 a.m. because he got caught up in some stupid visa stuff. He wasn't allowed to fly, apparently. And he was like, "Anthony, I'm stuck in Indianapolis. Help!"

00:01:07 - Nick Taylor

No, wait. Yeah, I know he was talking about it because he switched roles. Yeah.

00:01:12 - Anthony Campolo

Yeah, that was pretty brutal. So we were kicking it just the other day.

00:01:17 - Nick Taylor

Oh, that's cool. That's right. I forgot you're both in the same town, right? Or not? Not necessarily literally the same town.

00:01:24 - Anthony Campolo

Yeah, I forget. I think he's in Wichita now. He used to be in Cincinnati, but the whole Midwest area is such that most of the big cities are within a couple hours of each other.

00:01:37 - Nick Taylor

Yeah, totally. That's cool. So what are we looking at today?

00:01:44 - Anthony Campolo

Well, let's talk about what you've been doing at Pomerium before we kind of get into it. You've been doing a lot of content. You've been doing a ton of streaming. You just streamed earlier today, didn't you?

00:01:54 - Nick Taylor

Yeah. I've been traveling a lot. But yeah, I started at Pomerium. To go back a bit, I was working at a company called Open Source prior to Pomerium, and Open Source was like GitHub insights on steroids. It was amazing working there, one of the best teams I've ever worked with. We got acquired by the Linux Foundation, which was awesome. Unfortunately, most of the engineering team didn't go along for that ride during the acquisition. I was a little bummed initially, but honestly, it was nice being off for two and a half months.

Then, when I was looking for new roles, because I've been an app developer pretty much my entire career, people, including yourself, always assumed that I'd been just a DevRel. I kind of unintentionally baked it into my role as an engineer, I guess.

[00:02:58] And so this time around, I was looking for a new role. I was talking with some people, including Angie Jones. I was like, "Hey, what do you think? Is it a good idea if I go into DevRel?" And she's like, "Yeah, for sure. With the engineering background and you're already doing a lot of this stuff, just go for it." So I had an opportunity, and I decided to take the next plunge, if people know what that commercial is, and just kind of go for it. And yeah, hit the ground running.

I started off with putting out a bit of content, some video shorts, but then shortly after that kind of went on a whirlwind tour of conferences. I was at All Things Open AI. Then I was at SRE Day London, in London, England, not Canada for people in Ontario.

[00:03:52] And then I was at KubeCon EU and then came back. And then I was in San Francisco and Redmond for two other SRE Days, giving the same talk. So yeah, lots have been going on. We got all kinds of cool stuff going on. We had a 0.29 release that was pretty much during KubeCon, and now everybody's probably heard of MCP, model context protocol. So we're able to secure model context protocol servers with zero trust security, which is what we're based off of. So that's pretty fresh, as Thor would say. So lots going on.

00:04:31 - Anthony Campolo

The last stream I did with Dev, speaking of, was on MCP. We did an introductory tutorial that I built to kind of figure out what it is and how to work with it. That was a lot of fun. I learned a bunch, even though I built the tutorial. Yeah. What'd you say about 29? What was that?

00:04:52 - Nick Taylor

We had a release. So version 0.29.0. Okay. I can link to that if people want.

00:05:04 - Anthony Campolo

But yeah, all those conferences that you went to, which one was the most memorable?

00:05:10 - Nick Taylor

I'd say they're all great, but the SRE Days were smaller ones, so it was a little more intimate. I got to meet Daniel Afonso, who's on the core team, which is kind of cool because we've been following each other for a while, our mutuals and socials and stuff. But that's funny.

00:05:29 - Anthony Campolo

He has literally the exact same name, word for word, letter for letter, as my choir teacher did while I was in school. Hey, I bet he has to correct people because they probably say Alfonso and it's Afonso, right?

00:05:42 - Nick Taylor

Yeah, well, when I wrote his name, like when I was posting pictures and stuff, it kept autocorrecting to Alfonso. So, like, no.

00:05:50 - Anthony Campolo

Is he Brazilian?

00:05:52 - Nick Taylor

Oh, that's a good question. I could have sworn he said he was Argentinian, but I'm not sure. Okay, I don't remember.

00:06:03 - Anthony Campolo

That would make sense. That's a similar part of the world because my teacher, Alfonso, is from Brazil.

00:06:08 - Nick Taylor

But he's in Portugal, so like, no, I can't remember. No, I'm mixing him up with somebody else. Sorry. No, he lives in Portugal, so I think he is Portuguese. I don't think he moved there. I think he is Portuguese. I'm mixing it up with somebody else I met at the conference who I got introduced to through somebody I used to work with at Dev.to.

00:06:32 - Anthony Campolo

Yeah, you're a busy man. You meet a lot of people.

00:06:35 - Nick Taylor

But in terms of the conferences, I really enjoyed All Things Open AI because it was just cool to go to the inaugural All Things Open AI and be able to give a talk. I gave a talk I'm giving a bunch of times this year: creating Copilot extensions, not VS Code extensions, because every time I put that into ChatGPT or Claude it always assumes VS Code extension.

00:07:04 - Anthony Campolo

Reminded me of another thing you did, which I thought was super cool: Virtual Coffee Conf.

00:07:09 - Nick Taylor

Oh yeah, that's right. So I gave that same talk on the GitHub Copilot extension. That was a fun conference because I've been part of Virtual Coffee literally since the beginning. Becca Weigel, who's my good friend, started that. It just started off with a DM where she said, like, "Hey, if anybody wants to join a virtual coffee," this was like 2020 in April, and I just responded to the DM, "Hey, yeah, I'd like to join." And now everything's more automated. It's not DMs with Zoom links, but that's just pretty cool to see that all come together.

00:07:49 - Anthony Campolo

The link here, you guys did it with CF Dev as a collab, I think.

00:07:54 - Nick Taylor

Yeah. My friend. Well, you know Brian as well. Brian.

00:07:57 - Anthony Campolo

Stepson.

00:07:58 - Nick Taylor

Oh, that's right. Yeah, I forgot about that. You, Lucia, and Roy Dirks, actually, who's at IBM. Yeah, I think, yeah.

00:08:06 - Anthony Campolo

Yeah. We all go way back.

00:08:07 - Nick Taylor

Yeah, that's true. I forgot about that. But yeah, I really enjoyed the All Things Open AI conference. And I really liked KubeCon EU because, one, it was my first KubeCon and it was massive.

00:08:24 - Anthony Campolo

Tens of thousands of people go to that conf, I bet.

00:08:26 - Nick Taylor

Yeah. It was like, I think it was at least 10,000 people. I really enjoyed that one because I got to meet my coworkers for the first time. Hey, what's up, Fuzzy? Aside from that, I also got to hang out with Dougie again, my buddy and old CEO from Open Source, which was fun. And yeah, also just met a bunch of people. I saw Daniel there as well, Afonso, because PagerDuty was there. Hey, thanks for the kind words, Fuzzy.

I got to meet a bunch of people I've only met once, like Marino, who's over at Kong, I think it is. I got to meet Ian Coldwater. That was cool, just chatting. And I'm brand new to Kubernetes, to be honest. My experience with Kubernetes prior to KubeCon was just restarting pods as a front-end dev.

00:09:25 - Anthony Campolo

Yeah, I managed to avoid Kubernetes up to this point in my life.

00:09:29 - Nick Taylor

Yeah, so I have to ramp up on it because, one, I want to ramp up on it, but we secure Kubernetes as well. So I basically have to do it. I got a mini PC, which is what I was screaming about this morning. And basically I'm going to put a Kubernetes cluster on there, secure that.

00:09:48 - Anthony Campolo

So you want us to know: how's the Linux life?

00:09:51 - Nick Taylor

Yeah, it's good. It's just like I was mentioning this on stream. It's not like I don't know the command line. It's just, you know, I'm an application developer that's all of a sudden in SRE slash platform engineering slash infra security lens. So there's just a lot of stuff I need to learn. And I'm confident I'll learn what I need to learn, but there's just a lot of Linux commands that aren't muscle memory for me right now. So it's just like, okay, look this up, or ChatGPT, how do I do this thing? But that'll come.

I'm excited about it all. And it's like I purposely switched out of front-end. Nothing against front-end. I think it's great. I'm good at it, but I wanted to try other things.

[00:10:46] Yeah. So it's pretty cool. And the other, honestly, icing on the cake at the end of KubeCon was I ended up on the Kubernetes podcast live stream. I know one of the DevRel folks there, but I was just saying hello to people, and I saw him, Abdel. And I was just like, "Hey, just wanted to say hey." And he's like, "Oh, how's your KubeCon going?" And I was like, "Oh, it's going pretty good. It's my first one." He's like, "What? You gotta come on the live stream." So my last day there, I got to go on the live stream, which was pretty cool.

So going from not being in the Kubernetes community to all of a sudden I'm on the Kubernetes podcast. It wasn't for like a long time, and we chatted for like maybe 3 or 4 minutes, but it's still pretty cool, man.

00:11:33 - Anthony Campolo

That's cool. Yeah. I remember back when I was first getting into tech, and I was trying to find all the podcasts out there. The Kubernetes podcast was one of them because it's been around for a really long time, and I would listen to it and, like, I didn't even know what a container was, you know? So it was completely incomprehensible to me.

00:11:51 - Nick Taylor

Totally. So yeah, lots going on, but it's pretty cool. What about yourself, though? I mean, we go way back, but we haven't chatted in probably a month or two. So.

00:12:05 - Anthony Campolo

Yeah. Let's see what were the main things I got going. So the AutoShow Dash funding finally kicked in, which is nice. So I've been trying to, and I put in a proposal. Dash is a cryptocurrency. They have a DAO, a decentralized autonomous organization, and anyone can submit a proposal to get funding from the Dash community.

I've had a good friend there, Ryan, who I've been connected with since I worked at Quik Node. I really, really appreciate him and the way he approaches the whole Web3 world. It's as far from the grift as you can get. He really takes it seriously and Dash has a lot of integrity as a community.

So as I kind of moved away from the Web3 world, it was the one kind of connection to that world that I kept because I felt it was really worthwhile. And he hit me up maybe like 3 or 4 months ago.

[00:13:05] And he was like, "Hey, I see you're building this new AI tool, and I think that you should try and get funding from Dash to build a Dash integration, like a crypto payment version, basically, so that if people wanted to use AutoShow, there will be a way to pay with credit card and Stripe and all that kind of stuff. But if people want to pay with cryptocurrency, you should build that in and you can get some funding from Dash to do that."

00:13:28 - Nick Taylor

So okay, cool.

00:13:30 - Anthony Campolo

I put in the proposal and the first month it didn't pass. So the way it works is you put in a proposal and then the collective community basically votes on what gets funded and what doesn't. And then there's a certain amount of money put aside by the treasury each month to pay out.

So the first time it didn't go through and I was like, "Ah, it's kind of a bummer." But it was really close. It was like eight votes away. It was right on the cusp. So I kind of stuck with it. I kept working on the integration. And then last month the funding actually went through.

00:14:00 - Nick Taylor

Oh, nice.

00:14:00 - Anthony Campolo

It's not a ton, but it's like $2,000 a month. And if it continues to get funded, it'll pay out over six months. So it'll be like over ten grand if it ends up getting funded every month. So yeah, that's really good because it allows me to spend a little more time just working on that and not needing to spend so much time on freelance stuff and extra blogs. Even Uber Eats, I do every now and then if money is really tight.

And then I'm doing a couple job interviews. I'm not going to say where because they're still kind of in the mix. But there's two places, one of which I've already gone through essentially the whole interviewing round, and I'm just kind of waiting to hear back. And then one that I may start a round of interviews with soon, both of which are companies that I think are very cool and that I would very much enjoy working for.

[00:14:51] So those are on the back burner. And that would then allow me to really not need to worry about money at all. And I'll be able to kind of really slow roll AutoShow. But I'm still planning on getting it launched as soon as possible. It's pretty dang close to actually being ready for prime time.

But that's awesome. The last thing that is actually super fun: I have a buddy. He's been my buddy since college. He was the drummer in my band. His name is Eric Edwards, and I'm trying to get him on the stream to talk about this. Actually, we're going to create a TV show.

00:15:29 - Nick Taylor

Oh.

00:15:30 - Anthony Campolo

No way. So he has been just writing this script, and he's not someone who's ever done this before. So he just hit me up like a month ago. And he was asking me for recommendations on coming-of-age films. And I thought he was asking because he had a cousin he wanted to show a movie to or something. So I was giving him recommendations, and I'm like, "Why do you need coming-of-age?" Because he knows that I watch a ton of movies. I've always been a huge movie fan. So I'm the type of person that when people are looking for recommendations, I'm one of the people they go to.

And he's like, "No, I'm writing a script." I'm like, "Really?" And so he basically has a very interesting job. His parents, they're in the Central Valley, California, and they run a company where they sell used farming machinery equipment, and they're pretty big time. They do a lot of work and they're really experts in their field. And so he's been working for his dad's company, and it's like the family company. It's his mom and his dad. They do it together. All of his brothers work for the company too.

And he basically created this show as like a sci-fi version of his family's company. So there's a whole crew, and each of the crew members are kind of based on his family members. It's just a way for him to kind of blow off some steam because there's things about the job that he finds kind of frustrating or whatever, but he still loves it and he does it. And so this is kind of a way for him to process it, I think.

So he was telling me about this and he was saying maybe he would want to actually try and produce it at some point with some AI tech because we both watched the show Neural Voices, which is a sci-fi show that's done entirely with AI tech. And it's fantastic. It's not like AI. It's really well written and it's really well produced.

So I was just like, "Hey, I know a lot about this AI stuff now, and I could kind of help you do this." And so he was like, "Do not go to therapy." You have to explain that one, Fuzzy. Oh, men do not go to therapy. Oh, yeah. No, I think producing, I think creating artistic content is actually a much better way to process your feelings than therapy, but that's just my own opinion. I would never tell anyone not to go to therapy, but I would say there are ways to work out your feelings. There's plenty of ways to work out your feelings. There's no one right way to do it.

So yeah, we're kind of doing that.

[00:18:04] And that's gotten me into a lot of the parts of the AI space that I had not done yet, which is like text-to-speech for voices and video, like moving animation and stuff like that. Have you worked at all with any of the AI video stuff?

00:18:24 - Nick Taylor

I did a couple things in Sora. I actually generated one. Do I have it for you?

00:18:36 - Anthony Campolo

Sorry. Didn't work for me at all. The stuff it generated was total crap.

00:18:39 - Nick Taylor

Yeah, it worked. Hold on, let me find it. I'll put it in the chat, but I thought it was public. I did two tries on it, but I don't have it public. I know I have a post on it. Sorry, because I know you can make them public. I'll just share the link. Where is it?

00:19:01 - Anthony Campolo

Yeah, I got access to it a couple months ago, and I think it first became public because it was in closed beta for like a year. And people were tweeting about it and saying how amazing Sora was, like, "But you can't use it. It's just amazing. Trust us." And then it finally came out and I used it, and everything it generated for me was just total crap. So I tried Runway and Kling also.

00:19:25 - Nick Taylor

Okay.

00:19:26 - Anthony Campolo

They were kind of decent.

00:19:29 - Nick Taylor

Yeah. If you load that up and want to show it real quick, I can.

00:19:33 - Anthony Campolo

You drop it in the private chat so I can copy and paste. [00:19:35] - Nick Taylor Oh yeah. Sorry. Copy pasta. This is a five-second video because the video is only five seconds max. That thing there is literally just my profile photo. If you go to my profile on X, it's that photo. I gave it that and I basically said, "make me rapping," as a play on API wrapper. I was pretty impressed that it generated very well.

There were a couple weird ones where it made my legs super short. My upper torso was like 90% of my body, and the legs were like this. I finally got one working, and there's a couple variations, but I haven't done deep video stuff.

[00:20:36] I've just been messing around with stuff like image generation. So not video, but of Garfield. Yeah, just like that.

00:20:45 - Anthony Campolo

So here's one that I generated from his show. So it's that, like, sitting down eating. Okay, there's. Yeah. So that was like the first kind of when I tried to create.

But something else I did, which I think is pretty cool, we decided that a kind of good stopgap that we could do before we figured out all the voices and the animation stuff like that. I basically took his script and I turned it into a comic book. So we created character designs, and he already has a full written script for episodes. He's put a lot of work into this.

We sat down, we figured out the character images that we wanted for all of it, and I was like, I can just turn this into a comic book. And so it's kind of like storyboarding to the nth degree, because once we have the video and audio stuff in place, we can just make these move and just remove the speech bubbles.

00:21:39 - Nick Taylor

So okay. Gotcha.

00:21:40 - Anthony Campolo

So yeah, you can see it's kind of sci-fi. It looks pretty good though. And you see here a little bit of slop in the text here, but for the most part it can spell words correctly, which you could not have done before. The old ChatGPT couldn't do text at all.

So hopefully Eric's cool with me sharing that. But if you watch this, it's probably not a big deal. Eric actually watches my streams. I just found out.

00:22:12 - Nick Taylor

Yeah. That's cool though, man. I'm curious to see how that turns out. It's trained off of other cartoons, obviously, but it doesn't look like Simpsons. It does feel like there's a hint of Simpsons or Futurama-ish tones.

00:22:36 - Anthony Campolo

It's not like Adult Swim type shows. That's what it reminded me of the most.

00:22:40 - Nick Taylor

Yeah, but looking at it, I wouldn't say that's Adult Swim or Futurama. It's not the same. So yeah.

00:22:51 - Anthony Campolo

The way we first started is I basically took his script and I just asked it to create character designs. We started off with just two characters, and I said, create me a couple different versions of this based on the script.

It spat out three different versions, some more photorealistic and some more cartoony. The one that had that style we were just looking at was the one that we both kind of liked, and we were like, okay, we could do this.

I also thought that if it's kind of a more cartoony look, the things like lip syncing will be a bit easier because the lip sync tech has actually gotten pretty good these days. I just feel like if it's not a photorealistic character and it's just a cartoon character, it shouldn't be very hard for it to be able to sync the lips and basically look like an actual animated thing and not like an AI-generated thing.

[00:23:38] So that's kind of my hypothesis that we're working with right now.

00:23:41 - Nick Taylor

Oh, that's cool, man. And I guess you could always get transcriptions with AutoShow for it.

00:23:49 - Anthony Campolo

That's right. Yeah. Well, there's already a script, so that's.

00:23:52 - Nick Taylor

Yeah, yeah, yeah. So rescripted, I don't know. That was my terrible segue to talk about.

00:23:58 - Anthony Campolo

Yeah. So you're using the CLI, which is very cool. We talked about this beforehand, but you should explain your use case, and then we can kind of dive into the code if you're cool. Screen sharing, then I want to walk through a PR with you because you opened an issue in the AutoShow repo, which is very useful.

I have split up the CLI from the front-end/back-end repo. So there's now two repos because I found that the codebase was getting too unwieldy the way it was. I wanted originally to keep them the same because they were working off the same shared logic, and I didn't want to have to always build a feature twice if I wanted it in the CLI versus the back end. But I eventually decided that it just made a lot more sense to keep them separate. And it's allowed me to move much, much quicker with the actual app.

[00:24:47] So it's definitely been worth it. But yeah, talk about what you're doing with it because you're using it for your job, which is really cool. I really want people to get utility out of this if they're using it for their actual work. That shows that I'm on the right track here.

00:25:00 - Nick Taylor

So I'll just share my screen for now. Cool. Let's do entire screen. Cool. I'll let you just bring that in. Okay. That's Garfield. That was just image generation.

00:25:18 - Anthony Campolo

Yeah. Mm-hmm.

00:25:19 - Nick Taylor

Yeah. But if we go to, oops, wrong window here. So if we go to YouTube, this is my use case. I have these interviews I do with people. For example, I did one with my old coworker John, who at the time was doing AI stuff over at the Linux Foundation.

00:25:46 - Anthony Campolo

He just got a new job, I think.

00:25:48 - Nick Taylor

Yeah, he started at it's called Zocalo, I believe. They're like, I can't remember what they do. I gotta check that.

But I have all these interviews and the whole point of these interviews is it's not to promote Pomerium. It's not like, okay, thanks for telling me about your project, now let's wire up Pomerium. That's not the point of these at all.

00:26:13 - Anthony Campolo

What I used to do at StepZen, they would bring people in to interview and they're like, now let's integrate with StepZen.

00:26:19 - Nick Taylor

So there is obviously content I'll do on our YouTube, like the shorts and stuff about Pomerium, and there'll be guides in other videos. But the interviews are really more like I'm just trying to build up community content that, even if you're not using Pomerium, that's fine. I just want to speak to people in the industry and potentially more related to the space I'm in.

So I'm probably not going to have somebody on talking about Astro or TanStack because it's not really infra platform. But anyway, I have guests on and the interviews are like an hour, hour and 15 minutes.

Typically what I do, and I would even do this with my own streams prior to AutoShow, was I'd be like, okay, now let me go play the video. I'm going to watch through it. If I'm live streaming on Twitch, I would put markers to go like, okay, this is a good spot to do a short or grab a clip.

[00:27:21] But with work, we're only streaming to LinkedIn, X, and YouTube. So one, I can't. Well, maybe you can do that in YouTube, but the whole point is I do the interview and then I put a short out that would probably roll out a couple weeks later.

00:27:41 - Anthony Campolo

Fuzzy is also saying you should have him on the show.

00:27:44 - Nick Taylor

Yeah, yeah, yeah. No, definitely have you on, Fuzzy. But the point is, once the video's gone out a couple weeks later, I'll just have like, hey, if you missed the live stream with John, here's a short.

I would literally go through the whole video to try and find where's a good spot, and that's time-consuming. So what I ended up doing, and we'll look at this once we pull up AutoShow, but AutoShow essentially, I just pass it the URL of my video. It downloads, it pulls out the audio. I'm not leveraging any of that right now.

What I leverage is it generates a transcript, and the flow I do, which can probably be automated, is I grab the transcript and I paste it into Claude or ChatGPT. I say, here's a great conversation I had with somebody. Can you pull out 60s max a piece in here that is compelling?

[00:28:41] It's been pretty bang on so far. And what I do is it's not so much to get the transcript, it's to know the timestamp at that point. Then I get the timestamp, and then I load it up into my video editor, and then I just go, okay, crop to there. Then I edit it to make it a YouTube short or for other socials.

But that's kind of how I'm leveraging it. That's really valuable to me right now, and it saves me a lot of time. So one, I think it'd be interesting maybe to have something in the CLI to say it could either be like generate transcript clips from those, not just one 60s, maybe there's multiple. But it could also be interesting to actually cut the video too. Maybe that's more like a stretch goal.

00:29:36 - Anthony Campolo

But actually I already have a script. It's not built into the CLI, but it's a file that's in the project already called Create Clips. That does do that. It won't work perfectly for what you're doing because it's based more on the chapter flow.

But I love what you're doing, and it's really great because it's right in line with why I built it. The first reason I built it is because I wanted to get chapter titles, which also relies on the timestamps.

So as you're saying, yeah, the fact that the transcript includes the timestamps lets you do a lot of cool stuff in terms of pinpointing specific things that happen within the video. And what you're also saying is basically you're using kind of the first half of the workflow in terms of the transcription part, and then you're not leveraging any of the prompts or the LM part because you are using your own custom prompt.

[00:30:32] So what you're able to do is we just have to make a new prompt. I think what we're going to call, we can call it Key Moments, I think would be, yeah.

00:30:39 - Nick Taylor

That sounds good.

00:30:41 - Anthony Campolo

Yeah. So because there's one called Key Takeaways. But Key Moments will be like, we can just have it do the top three key moments within the script and then it can pull out and then include quotes. So yeah. I think this is totally, we could do this within the span of just this stream.

00:31:01 - Nick Taylor

Yeah. And you could go even further with it. I'm already scope creeping, but you could say, you could either pass a parameter for, I don't know, say for a short, or you can pass a time parameter too. Like 60s max, because that's the max you can actually upload to Bluesky, for example. YouTube's lax on that now. I think you can go up to three minutes with a short now. But passing a max time could be interesting to you. But yeah, no, I think that's cool.

00:31:36 - Anthony Campolo

Also, you would want to put a spinner in. That was what scheduled this because you would open up a PR to add a spinner. I don't know if you want to do that at all. We could see how that should.

00:31:47 - Nick Taylor

Be pretty quick. For context, I've done a couple streams with Anthony about AutoShow, but it's typically been him demoing, or I think he got me to walk through something at one point a while ago. Yeah, yeah.

And then when I started the new job, I was like, oh, let me see if I can actually leverage this. And then I'm doing something, I forget what it was, but it looked like nothing was happening. I thought it was frozen. So that's why I suggested the spinner, just for a bit of CLI UX.

00:32:21 - Anthony Campolo

Yeah. Yeah. No, I love that. Why don't we start with that, actually.

00:32:24 - Nick Taylor

Cool. Yeah. Okay. So I know you mentioned I can go ahead and present again here. You've got a new repo, you said.

00:32:34 - Anthony Campolo

Yeah. So instead of AutoShow, it's just AutoShow CLI.

00:32:37 - Nick Taylor

Okay. So AutoShow, I have it in my hit history. It's just always AutoShow web dev. Sorry. And you said it was dash dot dash.

00:32:48 - Anthony Campolo

Just add dash CLI to that end.

00:32:51 - Nick Taylor

Cool. Give it a mandatory star. Okay, cool. And I'm a big fan of the GitHub CLI, so I'm going to clone it that way too.

00:33:00 - Anthony Campolo

I'm all about it.

00:33:02 - Nick Taylor

I do this newsletter, one tip a week dot com, and I was like, should I put a tip about that? And I think I'm going to later on because I already have some queued up. But in general, whenever you share like, oh, this is my workflow or whatever, it's like anytime I talk with somebody about their workflow, it's like, oh, I didn't know about that tool, or oh, I didn't know you could do that with that tool. So I think I'm going to post it, even though it's a very obvious one to me.

00:33:33 - Anthony Campolo

A good one. I mean, that's why I do these streams is because I learn so much from people.

00:33:38 - Nick Taylor

Yeah. No, it's great. It's like, all right. Cool. So I'm just going to go ahead and clone this. I'm using Windsurf.

00:33:45 - Anthony Campolo

I'm like, this doesn't look like VS Code, but it doesn't look like Cursor either. I've not used Windsurf at all, actually. How's it been?

00:33:52 - Nick Taylor

It's pretty good. I was using Cursor a lot before that, and Cursor is definitely amazing too. I'm just kind of literally trying different tools.

VS Code is a lot better now too. With Copilot they have an agent mode now. So I think it's a good thing that a lot of people are just competing. You know, Cursor got really amazing. That kind of forced the hand on maybe GitHub was already working on these things, but Microsoft. But like VS Code's come out with agent mode now, which is really solid.

And I think it's just going to push each of these different editors to just keep doing better, basically. All right. Cool. I just restarted my Windsurf. There we go. Cool. I don't want to view the changelog.

Okay, so let's just open up this Windsurf dash r and what was it, AutoShow dash CLI. Cool.

00:34:47 - Anthony Campolo

Yeah. And something that will help: just go to the .github folder and the setup script.

00:34:53 - Nick Taylor

Okay.

00:34:55 - Anthony Campolo

I'm just going to have you comment out the V3. So scroll down to where the Whisper stuff is. This will just help us do the setup faster. So comment out large V3 turbo.

00:35:08 - Nick Taylor

Okay.

00:35:09 - Anthony Campolo

Yeah. Okay. Now go ahead. You can just run npm run setup. That should be all we need to do.

00:35:16 - Nick Taylor

All right. Oh wait, I got it. Does this do npm install as well? I can't remember.

00:35:22 - Anthony Campolo

Yes.

00:35:22 - Nick Taylor

Yeah, yeah. Okay. Yeah.

00:35:23 - Anthony Campolo

Because the setup is a bash script. So you don't need your dependencies already installed to do it.

00:35:28 - Nick Taylor

Cool. All right. So that's what's going on. So I guess talk us through what's being installed here again. There's obviously some tools, but like Whisper, Whisper.cpp for people who aren't aware of that. What is that exactly?

00:35:44 - Anthony Campolo

Yeah. So Whisper is OpenAI's open-source transcription model. The official package that they put out is a Python library, and there is a community-run C++ version of it, which speeds it up a lot. So that is what Whisper.cpp is—it's basically Whisper C++. It's the same guy who runs llama.cpp, which is like the underlying infrastructure behind things like Llama.

So it does that. It also includes things like FFmpeg and CMake, which is a dependency that Whisper CPP relies on. But it doesn't have a whole lot of other stuff it used to have. I used to have Ollama built into this, but I eventually took that out. I decided that the open-source models just weren't adding a whole lot. And I feel like the type of person who's going to want to use that can probably figure it out themselves. And really, the value most people get from this is by hooking in actual ChatGPT models and cloud models.

[00:36:52] You know how to use open-source models, but I'm sure you know that they're just not that good. And the ones that are kind of good can't fit on the average dev's machine. They can't run a 405 billion parameter model. So even the best open-source models are just not feasible to use.

So I just decided that we're not really there yet in terms of local models. I put so much work and time and effort into making those work, and then I realized that it just wasn't worth it. So I kind of moved away from doing that. So there's no integration in here anymore. But I think that so far no one has complained about that.

00:37:36 - Nick Taylor

Yeah, yeah. Gotcha. I opened this. I don't know if this is what we should be looking at, but I've typically been using the npm run as. That's what I was doing before.

00:37:46 - Anthony Campolo

Yeah. The only reason why I put these in, these are just some nice aliases. Mostly I just use this because I always want to use the large V3 one. And so I just do npm run v3 and then I can go straight to using the video flag with the large Whisper V3.

Okay, for the most part though, if you're just kind of using this for your own stuff, you'll want to use the npm run as, which is like an alias for AutoShow.

00:38:14 - Nick Taylor

Yeah. So this is the CLI now. So I'm assuming you can obviously compile this to a CLI as well. Or is it.

00:38:23 - Anthony Campolo

Compile to CLI.

00:38:25 - Nick Taylor

I guess what I mean is if I'm leveraging AutoShow, do I still keep using it as just npm run as, or is there an actual AutoShow CLI? Like it's not.

00:38:40 - Anthony Campolo

Yeah. So it's not published to npm. There was a point where I got it to where you could use it as a Docker container, but that is kind of gone to the wayside because I was working more on the Docker integration for the front end and back end.

So right now it's basically what you see is what you get. You clone down the repo, you run the setup commands, and then you can use it. I may at some point want to get it published on npm. That was kind of a goal when I first started building this.

But I've put so much work into the CLI and it's like, honestly, I've put too much work into it. I need to put more work into the actual front end/back end, because that's what's going to be the product I'm going to sell. So there's a whole bunch of stuff I could do in terms of the CLI to make it way doper.

[00:39:26] It's just I don't really have the time right now.

00:39:29 - Nick Taylor

Yeah. That's cool. Totally valid. I opened up this, obviously in the repo, but this is the issue I created, so I forget.

00:39:40 - Anthony Campolo

Right. And you saw I left a comment saying that I was going to. Yeah. So that is now done. So I would say we can just leave that issue open for now, and then we can close it and point to the CLI once we have it actually done.

00:39:57 - Nick Taylor

Yeah. So you can also.

00:40:00 - Anthony Campolo

Go ahead. Say what you're saying.

00:40:01 - Nick Taylor

I was going to say if you wanted to, you can transfer it to your other. Actually, I don't know if that only works in orgs. I'm not sure if you can do that between projects for your own. Fuzzy says keep up. [00:40:16] - Anthony Campolo Great work.

00:40:16 - Nick Taylor

That. Yeah.

00:40:18 - Anthony Campolo

No biggie. I was just curious. What are you using for the spinner? Is this a built-in thing for Node, or is this a dependency? Like, how does this work?

00:40:28 - Nick Taylor

It was a package, I think. I think it was called Ora, a spinner for Node CLI. Is that it?

00:40:38 - Anthony Campolo

Yeah, that's what it was, a dependency I'm going to regret adding at some point.

00:40:42 - Nick Taylor

I don't know. I mean, maybe Commander 30.

00:40:47 - Anthony Campolo

30 million downloads. That sounds pretty good to me. Yeah.

00:40:50 - Nick Taylor

So basically, this is what I grabbed. This is what I was going to suggest. Obviously, if you had a preference, that's fine.

00:41:00 - Anthony Campolo

Solid. Oh, it's Sindre.

00:41:03 - Nick Taylor

Yeah. It's Sindre.

00:41:04 - Anthony Campolo

So he's the one dude that anytime I need to add a dependency, if he has something, I already have some of his dependencies in my project, like file type. I always feel comfortable adding his stuff in because I know he actually maintains them, and he knows how to keep them up to date and secure. So I will. That is the one type of dependency that I will not balk at adding. So good job, you picked the right one.

00:41:29 - Nick Taylor

I just realized I have to fork this, unless you want to add me to the org, but I don't think you do. So let me go ahead.

00:41:37 - Anthony Campolo

And I'm not totally opposed to it.

00:41:41 - Nick Taylor

Yeah, I'm happy to help if you want. At least for today. It'll be easier. I'll save you some inspiration. Yeah. Cool.

00:41:50 - Anthony Campolo

I totally agree. Fuzzy, he is really good. There's almost no one on his level, I would say.

00:41:57 - Nick Taylor

Oh yeah. He's got so many projects. One of my favorite projects of his is Refined GitHub. It's basically a browser extension, and it enhances GitHub. And 99% of the time, I have no idea if it's a GitHub feature that got added or if it's Refined GitHub.

00:42:26 - Anthony Campolo

Okay. You should hop off the screen, and I just added you as a collaborator.

00:42:32 - Nick Taylor

Cool. I'll just open that up in a separate window.

00:42:36 - Anthony Campolo

Oh, that's right, you can do the multi-window. You have multiple monitors, I'm assuming.

00:42:41 - Nick Taylor

Yeah, I actually switched up. I had a 34-inch monitor before, and now I have a 28-inch monitor. I was on, I'm assuming you know Jason Lengstorf's TV show called the Web Dev Challenge. I was on it recently. It was like March 11th. We recorded, but they're sponsored by BenQ. So BenQ gave me a monitor.

And it's really nice. At first I was, I don't know if a 28-inch monitor will be good for me because I went from a 27-inch to a 34-inch a few years ago. But it's just a really amazing monitor. It has a weird aspect ratio that you think is weird initially. It's three by two, but after using it, it's just really good. So I have that, and then I just have it set up.

00:43:35 - Anthony Campolo

I have literally never had a monitor bigger than 16 in. I've only ever worked on a laptop.

00:43:43 - Nick Taylor

Cool. Why did I not get the invite yet? Hold on a sec. Let me refresh. I can just go. Actually, I can even just go to GitHub if you sent it. It should show up in notifications. Yeah, there we go.

00:43:59 - Anthony Campolo

Yeah, I just added your GitHub account. I didn't put in an email or anything like that.

00:44:04 - Nick Taylor

Cool. All right. So I'm just going to create a new branch. So we'll just add spinner. Get new branch. How is that not a new... Oh. Never mind. Sorry. That's my bad. It's my alias. I've been between different machines, so that threw me off.

00:44:22 - Anthony Campolo

Got Fuzzy. He shared one of his repos. You can keep going. He can explain that in the comments. I mean, yeah, off screen just for a second, but I'll be watching. Keep going.

00:44:35 - Nick Taylor

Yeah, go for it. I'm just seeing what Fuzzy said. Okay, cool. So we got a new branch here, so let's just push it up. So, PS, you have some aliases. Cool. That's good.

So we should have that up here now. There we go. Cool. Nice. All right. So basically we want to install Ora. So actually let me check what Anthony's using. Okay. Just using npm. That's good. Okay. Added the Ora package. Cool. Three, five. Oh, whoops. I don't want all those files. There's the script. Soft head. There we go. Hold on a sec. We don't need the setup in there, so let's push that now. Cool.

All right, let's just push that up. Okay, so that's the Ora package.

00:45:50 - Anthony Campolo

Now I'm saying it's to help with custom error creation if we're needing it.

00:45:57 - Nick Taylor

Oh, okay. Cool. Trying to remember where this was. So download audio. So let's download audio.

00:46:10 - Anthony Campolo

Well, my bad. So there's going to be a couple moments where it's going to be hanging. It would be good to have a spinner. This would be both when it's downloading audio and also when it's actually running the transcription, because that's the part that usually takes the longest, and then also when it's actually running the LLM. So those would be the three times where it's doing that.

00:46:31 - Nick Taylor

Yeah. So this one, all right, download audio. Let's go to definition. Okay. That's all happening. So we probably want to do it back in here. Is this called anywhere else?

00:46:51 - Anthony Campolo

So it's called anytime you're doing either a file, a video, or RSS. And then the video or file, the video one runs inside of a playlist. So if you run on playlist or channel, then it runs there. So I would say we should put it in video and file and RSS.

00:47:17 - Nick Taylor

Okay, cool. I'm just slightly vibe coding here because I don't remember the syntax, but here we can already see it.

00:47:26 - Anthony Campolo

I'll get to see how Windsurf works also.

00:47:29 - Nick Taylor

Cool. All right. So added it. There we go. Cannot find name Ora. That's right. We need to import it. So let's just do that. Okay. Import Ora from Ora. That's cool. So essentially we're not converting to WAV. It's downloading.

00:47:55 - Anthony Campolo

So you're right now because you're in the file.

00:47:58 - Nick Taylor

Oh, okay.

00:47:58 - Anthony Campolo

Yeah. So file, it takes a local file from your machine, so it converts it to WAV. If it's downloading it, that would be the video file.

00:48:06 - Nick Taylor

Gotcha. So basically it's pretty simple what's happening here. You're going to give the spinner a message, and that's what will appear to the right of the spinner. You start it, you do whatever tasks you're doing, and then you just literally stop the spinner.

So if we take a peek, I think it did it for all of them. Or I have to accept all. There we go. So we'll just give that a second, and let me close this. And there. Okay. Let's see what it did. File, yes. Okay, let me get some real estate back here so we can see what it's doing. So, yeah, in here, it's just converting to WAV.

And then where was the other one? Download. So if we come in here, did it add Ora? No. What did it add there? Okay. It did add it.

00:49:06 - Anthony Campolo

Import it there. It doesn't really need to be imported there if it's not. Actually, no. Scroll down. There is some green in this file.

00:49:12 - Nick Taylor

Oh yeah.

00:49:13 - Anthony Campolo

So okay. Yeah. This actually probably makes more sense for it to just be added to the download audio. So we don't need to add it in three places.

00:49:22 - Nick Taylor

Yeah, I was going to ask that. It was more just I didn't know if you wanted to tightly couple it into that or not.

00:49:29 - Anthony Campolo

No, that makes more sense because, just as reminders, the way that the whole AutoShow flow works is there's five steps. There's the generate markdown step where it just grabs the metadata. There's the download audio step, which either downloads a file and converts it to WAV, or takes a local file and converts it to WAV. And then there's the run transcription, run LM, and then or select prompt and then run LM.

So those are the five steps that run whether it's a video, a file, or an RSS feed. And so as you saw, the download audio, it's a utility function that's used multiple times. So it makes more sense to put the spinner in download audio, so it's just in one place.

00:50:19 - Nick Taylor

Okay. So let's go to download. There we go. Audio. Boom. Go to definition.

00:50:36 - Anthony Campolo

Yeah. So this is the process file. This is where the function is being used. So I think it makes sense. So this is the download audio, and all the process steps are in their own folder called process steps. And they're prefixed with a number. So it's prefixed with zero two dash because it's the second process step out of the five. Okay.

00:50:56 - Nick Taylor

So let's import this. Cool. And then once we're done here, do you want it to, I guess, do the whole try-catch thing and then do the Ora stop or not.

00:51:13 - Anthony Campolo

I don't know because I don't know how this works.

00:51:15 - Nick Taylor

Well, it's essentially visually it'll start the spinner, it'll say downloading audio. We can set this also as a default message because, like you said in the other one, it would be converting audio. One's downloading and one's converting.

00:51:32 - Anthony Campolo

I would just say, you can say I'm creating a WAV file.

00:51:37 - Nick Taylor

Okay.

00:51:37 - Anthony Campolo

Because then that would encompass both, whether it's downloading it or it's converting it, a file that already exists.

00:51:44 - Nick Taylor

Or how about if you ever change it in the future? How about just processing audio.

00:51:49 - Anthony Campolo

Yeah. That's perfect.

00:51:49 - Nick Taylor

Yeah, okay. Cool.

00:51:52 - Anthony Campolo

Right now it's always going to be a WAV because that's what CPP relies on. But future proofing is definitely good, and it's always going to be doing that.

00:52:02 - Nick Taylor

All right. So what I meant was, I'm just going to call this spinner. The implementation doesn't matter for the name. So we can do it right here. Or what I was asking was, do you want it to do all the rest of this stuff? And then I guess it makes sense to stop it right away, because if other stuff fails, the spinner is just going to stay there.

00:52:31 - Anthony Campolo

I think so.

00:52:31 - Nick Taylor

So, okay, I guess let's test this out. What I can do is test it.

00:52:38 - Anthony Campolo

Is test it on a video or the video flag instead of the file flag. You should pick something that's long because I have some examples here, but you should grab one of your videos that's at least ten minutes long, because then it will be long enough to actually see the spinner run.

00:52:52 - Nick Taylor

Yeah. Okay. Well, I guess I can just grab one of the large ones. I have pretty good bandwidth, so.

00:53:01 - Anthony Campolo

Yeah, just grab one of your videos. It can even be an hour-long one. [00:53:04] - Nick Taylor All right, let's do it. Cool. Let's grab the one I did with Chad Whitaker from dude.

00:53:12 - Anthony Campolo

I loved this interview, by the way.

00:53:14 - Nick Taylor

Oh, that's right. You were in that one. It was really good.

00:53:17 - Anthony Campolo

Man, that dude knows his crap for sure.

00:53:21 - Nick Taylor

Okay, so I don't know the flags here off the top of my head. I'm going to paste the video. I know it's got to be in quotes.

00:53:27 - Anthony Campolo

So it'll be as dash dash space dash dash video.

00:53:31 - Nick Taylor

Okay. Yeah. And that's it. Yep. Okay. Cool. So we should see a spinner here.

00:53:40 - Anthony Campolo

Yeah. So right here is where we would see the spinner. So we see it. It's a little... Oh, there it is. Okay.

00:53:47 - Nick Taylor

Okay. Why is it frozen though? We could put a space, I guess, but I wonder. I wonder if the download audio thing froze it. Okay, let's stop that for a sec.

00:54:02 - Anthony Campolo

Yeah, there may be something blocking in there.

00:54:06 - Nick Taylor

I'm going to do a test here. I'm just going to.

00:54:10 - Anthony Campolo

Yeah. This entire project was vibe coded, so anything can happen.

00:54:15 - Nick Taylor

Okay, so I'm literally going to comment out the actual processing. I just want to see if the spinner goes. Sure. Okay, interesting. It's frozen regardless. Maybe there's a step I missed. Why don't we go check the docs? All right. Okay.

00:54:33 - Anthony Campolo

That's what I usually do. If I'm trying to integrate a new thing, I'll dump the whole README into the LLM. When I'm trying to add it, I'll make sure it actually catches any sort of weird implementation details that may have.

00:54:49 - Nick Taylor

Okay. So we got spinner started and then set timeout. Sure. Changes okay. So this is just showing different steps you could be doing, and it changes stuff. But why is it freezing? Interesting. Okay, let's see this. ChatGPT. All right. Let's try: "Using the Ora package, the spinner doesn't spin."

00:55:33 - Anthony Campolo

And I would dump the whole download audio file in there so it sees how you're using the code.

00:55:39 - Nick Taylor

Yeah, 100. Because I did this actually when I opened that issue. I tested it before I created the issue. So yeah. Let's see. I feel like it's going to say something is causing it to freeze, but I'm starting and stopping it immediately. Oh, I know why.

00:56:01 - Anthony Campolo

You stopped it.

00:56:02 - Nick Taylor

Classic. No, that's not it. Where is it? Is this in a wait? It's because it's not awaiting it. So it's literally going this. I'm guessing log initial function call is a promise? Let's see. No. Okay. Oh, maybe that's not the part.

00:56:25 - Anthony Campolo

You can just comment out that entirely if you want.

00:56:29 - Nick Taylor

Yeah, but what I mean is it's starting and stopping immediately. So if we come back to here, download audio, okay, I understand it. So for example, if I do this just as a proof of concept. Yes. There we go. Okay. So this will do. Let's do like five seconds and let's come back here. Now we're going to see it spin. See. Ah, so.

00:57:03 - Anthony Campolo

Okay, explain what the hell just happened. I'm not following it all right now.

00:57:06 - Nick Taylor

Okay. So this code is running synchronously. We create the spinner, we start it, so it starts to do its thing. This last step, I don't know what that does, but it runs immediately.

00:57:20 - Anthony Campolo

It's just a log function. The L is just console log. That's all it is.

00:57:25 - Nick Taylor

Gotcha. So it's that.

00:57:26 - Anthony Campolo

For coloring.

00:57:28 - Nick Taylor

Okay. So it runs that. That's immediate. It does log initial function call. That happens right away. And then we just say spinner stop. So the spinner never has a chance to actually finish. So I think what makes more sense is the actual processing is here, right? It's like a wait access.

00:57:50 - Anthony Campolo

In the tribe.

00:57:51 - Nick Taylor

So we need to stop it there, basically. So if we leave this here, the spinner is going to start. Just to show, if I stop this and do it again, I'm not stopping the spinner this time. But it starts. Nothing's stopping it from stopping right now. So let's just stop the CLI. Does that make sense what I was saying?

00:58:16 - Anthony Campolo

Yeah, it basically wasn't being done in the right part of the code.

00:58:22 - Nick Taylor

Yeah. So dash dash video. There we go. That one. Okay, cool. Oh, I didn't want to run it. Okay, so let's come back to the code. So we've started it. That's good. We just want to do a spinner dot stop. So this is more for you. Where should we stop? There's getting access to it. We await. We rename it. This is probably where it is. We have to wait till the... Oh, there's a spinner dot succeed. So I don't know if I added that. Or is that.

00:58:56 - Anthony Campolo

That might have been when.

00:58:58 - Nick Taylor

Yeah. Yeah. So here, see it's trying to say do the set timeout, but I don't need the set timeout. I just want spinner.

00:59:06 - Anthony Campolo

Request animation frame.

00:59:09 - Nick Taylor

Oh, we're. Yeah. But we're not in web dev. I can't tell if he's being sarcastic or not. Yeah, exactly. So now it's going to do it and then stop.

00:59:20 - Anthony Campolo

What we're working on right now, continue. And then I'll fill them in.

00:59:24 - Nick Taylor

Yeah. So basically I'm going to run it now, and we should see a spinner kick in. I'll just mention it. Okay. So we see it processing the audio. It's literally processing the audio. And then once it actually finishes doing the audio, it should stop the spinner. And then it'll say, I forget what we wrote, audio succeeded, audio download did successfully there. So I'll let you go ahead and explain what AutoShow is to the person asking.

00:59:55 - Anthony Campolo

Yeah. So for we just showed up, AutoShow is a tool for content repurposing. It takes audio and video files, transcribes them, and then feeds in a prompt with the transcription to an LLM to create things like chapter titles or summaries. Or you can even create rap songs. You can do anything you want in terms of feeding it in. And then Nicky T right now is helping me beef up the CLI and make the DX a little bit better with things like loading spinners and stuff like that.

01:00:27 - Nick Taylor

Yeah. So this worked, but it's.

01:00:30 - Anthony Campolo

This whole thing is a node CLI. So this is all basically a back end project running on your own machine there. This is why I decoupled out the CLI. There's no front end here. There's no react. Everything is just like a TypeScript back end essentially that runs with commander, if you're familiar with that project.

01:00:50 - Nick Taylor

Yeah. Gotcha. So this does work, but this isn't good UX still. It says processing it, and then we get all this. I think what we should do is update the text as we hit the different steps. For example, you can still log. Well actually, is the log here for actual logs or just for visual?

01:01:15 - Anthony Campolo

It's just in the terminal where you're running the CLI. Okay. So I think logging, because it's not being deployed anywhere, is just for the user as they're using the CLI.

01:01:27 - Nick Taylor

Gotcha. So I think what we should do instead is update the spinner text. So I don't think we... Yeah. We could actually start off with this. Step two, download audio. So the spinner is going to start with that log initial function call, whatever that is. What outputs like the this whole piece here.

01:01:55 - Anthony Campolo

So that is, that was the logging utility function you were looking at.

01:02:02 - Nick Taylor

Oh, okay. So it outputted that. Okay. Gotcha. Okay.

01:02:06 - Anthony Campolo

So versus log initial function call, it says download audio, then options input file name. So those are all the things that it's spitting out.

01:02:14 - Nick Taylor

Oh, okay. Okay. Gotcha. Yeah. Okay.

01:02:16 - Anthony Campolo

And I may, this is pretty old code that I may end up refactoring at some point, but it lets you know kind of what's being fed into each of the process steps. So you can kind of track along as it's going, if you want to make sure the right YouTube URL is being fed and the right file name is being created. That's essentially what this is for, just to track what's happening in the CLI doing the five process steps.

01:02:43 - Nick Taylor

Gotcha. Okay, cool. So we could do this. I'll just show you, like, this isn't necessarily what you have to do, but we could do. I'm just going to comment out stuff for now, but then we can do like spinner.info, existing file found.

01:03:02 - Anthony Campolo

Yeah, that would make more sense if all the logging is kind of going through the spinner, because then people will know when it's hanging versus when it's just processing.

01:03:13 - Nick Taylor

Yeah, exactly. Okay. I think that's it. Okay.

01:03:16 - Anthony Campolo

Cool. This is going to be a huge improvement in the DX. So I'm glad we're doing this.

01:03:20 - Nick Taylor

Okay, so let's try this again. I might not have it perfect yet. Okay. So the generate markdown. Okay. So see here it says downloading audio.

01:03:28 - Anthony Campolo

Great. That is perfect. Yeah.

01:03:30 - Nick Taylor

So now it's not, it didn't blurt out that whole chunk there. But I put it before it, like download audio with the following arguments. Before, and then yeah. And then basically the spinner turned into audio downloaded successfully eventually.

01:03:48 - Anthony Campolo

Cool. So can we do that same thing for the run transcription step?

01:03:52 - Nick Taylor

Yeah, I think so. So for this, it's more like just to see, are you okay with getting rid of that? Yeah, because it's important. Okay. Yeah. Cool. The only thing I wonder is if those things go by too fast, but maybe that's not a big deal. Wait. Rename. That's good. Oh, wait. Okay. So. Okay. We could even do a spinner here. So we'd say like, well, we'll let. I guess we'll leave it for now. We can talk about it in the PR, maybe. So let's just do this. So clear. Let's do git add. Actually, we don't want the setup for the turbo three there. And we're going to say git feature, and we'll say added spinner to audio download. Cool. Let's push that. And you said where else did you want to do it?

01:05:01 - Anthony Campolo

So in the transcription part. So just run the command and let the whole thing go through. Then I'll show you in the logs what I'm talking about. So just do one time through the whole process.

01:05:13 - Nick Taylor

Okay. Cool. Let's bring this up here.

01:05:16 - Anthony Campolo

Yeah. So there's the down. So if you start at the very top actually, scroll up to the very top. But let's just walk through each of these. So there's step one, which is generate markdown. That happens so quickly, we don't really need a spinner there because that's going to take like literally less than a second. And then you have the download audio, which is the one that we just added the spinner to. And then step three is run transcription. And this is the one that usually takes the longest because it's actually running whisper. So scroll down just a little bit further. So where it says invoking whisper, you see here it's still running. So this is where we would want the spinners, exactly at this point where it's processing right now.

01:05:55 - Nick Taylor

Okay. Gotcha. Yeah. I think what you could do is, like, for debugging purposes, you could output the options like you have currently. But once it's productized, maybe have it actually, we can make it look different. We could do, and this is.

01:06:13 - Anthony Campolo

Like a verbose flag.

01:06:14 - Nick Taylor

Yeah, but don't have to worry about that for now. But yeah.

01:06:18 - Anthony Campolo

Yeah, that's something that's been in the back of my mind.

01:06:21 - Nick Taylor

Okay. Here. Okay. That's in logging. So it's really.

01:06:25 - Anthony Campolo

Just go to the run transcription. It'll be prefixed with dash three three dash run transcription, just like the dash audio. Yeah, the code is pretty similar for each of these. So you'll see it's a similar setup to what you just saw.

01:06:39 - Nick Taylor

Okay, there we go. Spinner not imported. Let's import it. Cool. And so the thing here with windsurf is I'm going to tab and then I'm going to go down. It might look elsewhere. So here, and then it's going to get there. Is that correct? Succeed or is that info.

01:07:02 - Anthony Campolo

It should just say transcription completed successfully because it may not always. Well actually, hold on. No, no, this is not what you want because this is only happening within the Deepgram transcription. So there's a switch case where it picks either Deepgram, assembly, or whisper. We want it to be outside of that so we don't have to do it three times.

01:07:20 - Nick Taylor

Oh, okay. Gotcha. Cool. So let's do that. I'll leave the existing logging there, but that's something. Actually, no, we don't need that here because it, like you said, it's going to say it.

01:07:32 - Anthony Campolo

Yeah. So delete that from assembly and whisper then.

01:07:36 - Nick Taylor

Okay. Yeah. Gotcha. And here. Cool. Default. That'll throw. That's fine. So. Okay, cool. There we go. You see. And windsurf knew to take out the deepgram from what I pasted because it knew it was more generic. Okay.

01:07:56 - Anthony Campolo

So pretty sweet. I might have to try windsurf out.

01:07:59 - Nick Taylor

Yeah, there's, I can ask. There's somebody I know. I got, like, a three month free subscription. I can probably hook you up. Okay. So let's. [01:08:09] - Anthony Campolo Run this. Say no to free stuff.

01:08:12 - Nick Taylor

Okay, so Markdown is super fast, like you said. Downloading audio. It's kicking in, and we'll just give that a second.

01:08:24 - Nick Taylor split / short musical interjection

Doo doo doo doo doo doo doo dee dee dee dee dee dee dee dee dee.

01:08:30 - Nick Taylor

Yeah. Okay, it's running.

01:08:31 - Anthony Campolo

Okay, now it's running. Yeah, now we're talking. That's sweet.

01:08:34 - Nick Taylor

Yeah. So the other stuff you have here, like the video whisperer and all that, I think it's good to output maybe a few with a verbose flag, but that can be a separate thing.

I mean, as a dev it's useful to me, but unless it's broken, I probably don't care.

01:08:53 - Anthony Campolo

Sure. Yeah. I've started to standardize the logging because what I've realized is that when I did this a couple times, as I've refactored and had new logging, at a certain point Claude and ChatGPT started doing correct logging where it gives you the name of the function it's running in, in brackets.

It'll be like the run transcription stuff and then it'll give you the logging. So it's kind of just straight lines. I did it in a way where it formats it in a way that's easier to read, but I think it's better to do more of a standard logging thing where it's just a line and it gives you the information you want, and then it tells you on that line where that code is running.

I think that's more kind of standard how it's supposed to be logged. Am I right about that?

01:09:46 - Nick Taylor

Yeah, I think that sounds better. Also with the spinner right now, because we have these pieces of extra logging in here, it could be the same spinner instance, you know what I mean?

So we start, we do spinner, text is download audio, and then we get to the next one, which is the transcription. So it's using the same one because unless you're doing the verbose mode, you just basically have the CLI.

01:10:16 - Anthony Campolo

That's being updated. Yeah, that makes a lot of sense.

01:10:20 - Nick Taylor

But we can start off with just this if you want. Okay, let's just check the changes. Did I go in the right file? Yeah. Okay.

So essentially importing it got rid of the L step, started the transcription, got rid of the Deepgram symbol, and Whisper completed. Then we just added the succeed, and there we go. Cool.

I think that's it. Let's see here. Anything else they say about the spinner? Yeah, I think that's it.

01:11:04 - Anthony Campolo

So.

01:11:05 - Nick Taylor

Okay, cool. Let's do clear. I just got to add the one file, so let's do that one. Cool.

01:11:16 - Anthony Campolo

Did you add it to the package.json?

01:11:19 - Nick Taylor

Yeah, I did that before. So now we just want to do g feature. Added spinner to transcription processing. This is the kind of thing, like, if I was doing this for a feature, here's my log right now.

So I did add the Ora package feature, add spinner to audio download, add. It's going to get squashed, I'm assuming, in the PR, but I would just basically add spinner for improved, but I might have made that just one.

01:12:01 - Anthony Campolo

That's fine. I'm not super hung up on git flows and all that, you know?

01:12:07 - Nick Taylor

Yeah, yeah. Cool. All right, let's go ahead and create a PR. We want to go there. Right.

01:12:17 - Anthony Campolo

Yeah. Since I added you to the repo, you might be able to just merge it.

01:12:21 - Nick Taylor

Yeah, well, I wouldn't mind getting an approval, but yeah. So feature: add spinner for better CLI UX. Cool body. We can submit as draft. Just come up here.

Oh, wow. I get the honors of being the first pull request.

01:12:43 - Anthony Campolo

Yeah. I mean, I literally just created this repo, like, a day ago, and someone actually had just opened another issue on the AutoShow repo.

01:12:51 - Nick Taylor

Okay.

01:12:52 - Anthony Campolo

I was trying out the node type stripping, but you have to be on Node v22. They're on Node 20. So yeah, I've kind of reverted back to just using TSX for now. That's probably the better solution.

01:13:08 - Nick Taylor

Yeah, yeah. On my GitHub Copilot extension template, I have Node 22 with the experimental flag. It's just nice. And Node 24, I just saw, was released today, I think. Oh really? So I believe it's no longer experimental.

01:13:25 - Anthony Campolo

Right. Yeah. Because you had to be on 22 for that, or maybe 23. I forget.

01:13:34 - Nick Taylor

All right. That's cool.

01:13:35 - Anthony Campolo

Yeah. I used to never be one to be on the latest Node versions, but as I've been adding more dope features, I've started using newer and newer Node versions because I really like where Node is going, more like Bun, where you don't need to rely on dependencies.

You don't even need a dependency for SQLite anymore, which is pretty incredible.

01:13:57 - Nick Taylor

Yeah, no, totally. All right, I'm gonna just give us a nice little. Let's run this again. And I'm just going to do a quick screen recording.

01:14:13 - Anthony Campolo

Yeah. No, that's great.

01:14:14 - Nick Taylor

I like to add these things. This is something I think is important because not everybody knows what I did and stuff, and maybe people watching the stream, but somebody that just happens to check the repo might have no context. You know what I mean?

01:14:33 - Anthony Campolo

So Fuzzy says there's three Node versions of note: 12, 18, and 22. You're going to have to expand on that a bit.

01:14:46 - Nick Taylor

All right. I'll just let this record.

01:14:48 - Anthony Campolo

20 was a pretty big one. 20 is what let me no longer need that EMV. That was the biggest one for me.

01:14:53 - Nick Taylor

Yeah, I still use EMV. I know you can pass it in. I haven't switched some of my stuff to that.

01:15:01 - Anthony Campolo

Yeah, I've stopped using that for everything, except I couldn't get the MCP server to work without using EMV. It was so weird.

01:15:10 - Nick Taylor

Okay, is that with the MCP SDK?

01:15:14 - Anthony Campolo

Yes. Yeah, exactly.

01:15:16 - Nick Taylor

Yeah, yeah. Okay. All right, there we go. Cool. Just trim that, and then just copy this in. All right, cool.

01:15:37 - Anthony Campolo

By the way.

01:15:38 - Nick Taylor

Chris.

01:15:39 - Anthony Campolo

Just texted me saying you gotta look at the c15 CLI. This is his new company he's building, which is based around cookie consent forms. And he's like, you should look at our CLI. I think I've already solved some of the things you're trying to do. So he's watching the stream.

01:15:55 - Nick Taylor

Okay, cool. So I put you up as a reviewer. I also added Copilot because I'm curious what the Copilot review is going to say.

01:16:03 - Anthony Campolo

Oh, interesting.

01:16:05 - Anthony Campolo

Yeah. No, actually, I haven't added it. I need to add this to all my repos. I built a whole flow where you get an AI code review on every PR. I built this whole thing out, but I haven't added it to my repos yet.

It's pretty sweet. It basically looks at the changes and then explains in English what the change is, and then any security implications and code implications and things like that.

01:16:29 - Nick Taylor

Okay. Is that Code Rabbit?

01:16:32 - Anthony Campolo

It's literally just using the AI SDK tool calling. And it basically just throws you your two git commits and compares one to the other. So it's kind of just all custom code in a Node script, really.

01:16:50 - Nick Taylor

Okay.

01:16:51 - Anthony Campolo

We can stream on that because it's pretty interesting.

01:16:54 - Nick Taylor

Yeah. The Copilot actually gave, because I'm not super familiar with this, it provided some good feedback. So I don't need to explicitly do spinner dot stop because spinner dot succeed will implicitly stop it.

And the other thing is, because we were doing the happy path, it'd be good to add a spinner dot fail if something goes wrong. So that's true. I'll do those quick changes.

I don't think AI is going to fix everything, but this is actually useful. This is something.

01:17:27 - Anthony Campolo

AI code review is a hugely useful use case that I think more people need to lean into.

01:17:35 - Nick Taylor

Obviously, there can be some false positives, but you know what? I'm going to give this W to Copilot. Here you go. I will commit your suggestion. Cool.

Let me come back here. Clear, G pull!

01:17:56 - Anthony Campolo

All right. Cool. I'm gonna get Chris on my next stream so he can show me his sweet new CLI.

01:18:02 - Nick Taylor

Okay, so I'm gonna look for the spinner dot succeed. We have it in two places, I imagine. Yeah. So let's just go and see where it would fail.

So here, so catch. We'll do a. Yeah, exactly. Spinner dot fail. Good. And then here. This one's a little harder, I think, because you don't have a. I think if things go sideways, or do you have a catch? Oh yeah, you do. Okay, yeah.

01:18:36 - Anthony Campolo

All of these are pretty standard try-catches. Okay, cool.

01:18:39 - Nick Taylor

So there we go. Clear. G GCI added.

01:18:45 - Anthony Campolo

So Fuzzy is saying here that Node 22 is quality of life. Node 18 was reserved for effing AWS Lambdas, and 12 was when Mateo started making it awesome.

12 is before my time. I didn't start coding until like 16 or something.

01:19:04 - Nick Taylor

Okay. Is there any. Oh, I accidentally committed something, I think, here. Hold on a sec. Okay. That's good. Let's push that up.

Yeah, I did add. I accidentally. Oh, no, I didn't. Okay, I must have went. Oh, I undid it before. Yeah, the V3 turbo. So everything's in there now. So now. Cool.

Yeah. So essentially we got the two dependencies. It should have updated. Yeah, the package lock. Sorry, one dependency. Package lock's updated.

We import Ora. We've got spinner info, spinner succeed, fail. Same thing here. Spinner... where is it? Succeed and then also fail. So if you want to go ahead and give a stamp on that, if you're cool with it.

01:19:59 - Anthony Campolo

Yeah, this all looks good to me.

01:20:02 - Nick Taylor

Oh, I have it as a draft. Sorry. Let me change that.

01:20:04 - Anthony Campolo

Yeah. Make it an actual PR.

01:20:06 - Nick Taylor

Ready for review. Cool. All right. Yeah.

01:20:16 - Anthony Campolo

Let's merge this sucker. Confirm. Merge. All right. You were officially the first contributor to the AutoShow CLI. [01:20:26] - Nick Taylor Nice. Oh, you didn't approve it? What? Yeah.

01:20:31 - Anthony Campolo

Did you?

01:20:31 - Nick Taylor

Oh, okay.

01:20:32 - Anthony Campolo

I merged it.

01:20:34 - Nick Taylor

Yeah. You know what I mean? You didn't approve the PR before you merged it.

01:20:37 - Anthony Campolo

What? What does that mean? I thought merging was approving. What's the difference?

01:20:43 - Nick Taylor

Oh, no. Usually you approve, and you can merge, but I can't approve my own one. Anyway, I'll put a comment.

01:20:55 - Anthony Campolo

That is complicated, man.

01:20:58 - Nick Taylor

Here. Let's just put it here. Why did I go to the wrong CLI? Yeah, you see, because you didn't approve it, it's not merged. It's just closed. It doesn't matter.

01:21:29 - Anthony Campolo

I literally clicked a button that said merge. It was so simple.

01:21:34 - Nick Taylor

You'll always be able to merge. It's just if you want to approve it. So, close.

01:21:42 - Anthony Campolo

I never knew that there was a distinction between merging and approving. So you just taught me something right there.

01:21:49 - Nick Taylor

Cool. Let's go there. Implemented in AutoShow, not there.

01:22:03 - Anthony Campolo

If I revert the merge, can I approve it and then merge it?

01:22:08 - Nick Taylor

You probably could, but you can approve it after the fact, I think, too.

01:22:13 - Anthony Campolo

Let's give it a try. I don't think that's actually what I want to do. Now it's opening a pull request for me.

01:22:22 - Nick Taylor

Oh, no. Yeah. I'd just leave it.

01:22:27 - Anthony Campolo

You have to explain to me the difference between merging and approving next stream.

01:22:34 - Nick Taylor

Cool. All right, so that's in. I don't know if I'll have time to do the other thing, but what were we talking about?

01:22:41 - Anthony Campolo

For the new prompt that you wanted to write. This should be very simple, actually. Just look at the prompt file.

01:22:48 - Nick Taylor

Okay.

01:22:48 - Anthony Campolo

It's just some text for you to add. It's very simple.

01:22:52 - Nick Taylor

Okay. So, feature: add a prompt for key moments?

01:23:02 - Anthony Campolo

Key moments, yeah.

01:23:05 - Nick Taylor

For extracting key moments in a video. Do you do just audio as well?

01:23:18 - Anthony Campolo

It could do video or audio. It doesn't really matter.

01:23:45 - Nick Taylor

Cool. Oh, there we go.

01:23:48 - Anthony Campolo

Cool. If you look in the src folder, there's a folder called prompts with a single file called sections dot ts. That's where all of the prompts for AutoShow are. We just need to add another prompt with whatever prompt you've been feeding to ChatGPT for what you've been doing.

01:24:04 - Nick Taylor

Okay. New key moment. Cool. All right. I'll take a peek at what my prompts have been.

01:24:25 - Anthony Campolo

Yeah. You can literally just copy and paste what you've already been using straight into the prompts.

01:24:30 - Nick Taylor

Yeah. I'll open it in the side window. One second here. Where are you at? There. Cool. I think I did this in Claude. I'm still using Claude, because we have a remote MCP server at work that's connected to the cloud integrations.

01:24:54 - Anthony Campolo

I've been using Claude more recently. Claude 3.7 with extended thinking. I've gotten a lot of use out of it because it gives faster outputs than what I was originally using, O1 Pro for a while, and then O3 came out. I found O1 Pro and O3 sometimes worked better than the other, but O1 Pro is so slow that it really cuts into your dev time.

So I've been trying to move away from that. I've been trying out 3.0 extended thinking and also Gemini 2.5. It's really hard to figure out which LM is the best these days because they're all constantly putting out new ones.

01:25:37 - Nick Taylor

Yeah. I was going to say I'm a big fan of Claude, but I started using ChatGPT a lot more. They have projects now.

01:25:48 - Anthony Campolo

Yeah. We got a new chat in here saying, I love Claude. I swapped from GPT after six years. That's a long time. Claude Code is still iffy and royally botched some refactors. I tried to run through it this weekend.

Yeah, I tried Claude Code out once. It didn't really fit my workflow personally. Okay, and thanks for joining, by the way, Violated Sign.

01:26:16 - Nick Taylor

Violet, Violated Sign. Somebody I know.

01:26:19 - Anthony Campolo

Oh, weird. Yeah. So, we're looking at my project called AutoShow, which is a content repurposing app that takes video and audio files and transcribes them and feeds them to different LMs with different prompts.

Right now, Nikita is adding a new prompt called Key Moments. The prompt he's adding is: find a maximum 62nd snippet that is really good in this transcription, so I can generate a YouTube short in the video.

I talked to Alex from Coding Cat about this. He had a similar use case he wanted to add, which is that he wanted to create YouTube shorts. When I first started building this, I was looking at more of clips, like a 5 to 10 minute kind of clip, like when you watch a show like Lex Fridman. He has this podcast, he'll do a three hour long podcast, and then he'll have a Lex Clips channel that lets you do different 5 to 10 minute clips.

[01:27:23] But shorts are different from clips. ChatGPT came out in November 2022, but GPT itself came out in 2018 or 2019, I think. I wrote a blog post about GPT 2 in 2019, so I know that that's at least six years old. ChatGPT itself is not six years old, but GPT is.

01:27:50 - Nick Taylor

Yeah, okay. ChatGPT came on my radar with the 3.5 GPT, but prior to that.

01:28:00 - Anthony Campolo

3.5 GPT was the underlying model of ChatGPT when ChatGPT was released.

01:28:04 - Nick Taylor

Yeah, it's pretty interesting. I was working at an AI startup in 2017 with conversational AI. I was building chatbots.

01:28:12 - Anthony Campolo

What company was that?

01:28:14 - Nick Taylor

I got acquired, but it was called Automat. It got acquired by a company called Salesfloor, S-A-L-E-S-F-L-O-O-R. This was back when it was specifically Facebook Messenger chatbots. We had researchers on the team and stuff. There was no ChatGPT. There were no models like we have right now.

01:28:48 - Anthony Campolo

So Hugging Face was probably around by that point, but it would have been really early.

01:28:53 - Nick Taylor

Yeah. The kind of things we were doing, I was working on frontend there, but I also had to work with the research team. We had to craft the prompts, and Facebook had a specific API, and we had a Haskell backend, I think.

One of the big clients at the time was L'Oreal, the cosmetics company. It was basically asking questions like skincare routine, and then based on what you selected, it would propose stuff for non-oily skin.

01:29:38 - Anthony Campolo

This is cool. So, Violated Sign, I was quick on the AI stuff. I was just getting back into coding after about five years of doing nothing. I credit it to basically my entire career change and everything I'm able to do now. I'd be swinging hammers and cutting boards if it wasn't for AI.

Now I feel that I'd still be teaching 12 year olds to play G, C, and D chords on guitar if it wasn't for coding.

01:30:04 - Nick Taylor

Cool, man. I'm assuming it's in the select prompts.

01:30:09 - Anthony Campolo

No, sorry. Select prompts is the logic that grabs the prompt. You just want the prompts. There's a prompts directory with a section. So look up sections dot ts.

01:30:26 - Nick Taylor

Here we go.

01:30:26 - Anthony Campolo

Go. Then Fuzzy is saying, folks who look back at this moment in time and go, but they had Terminator in the 80s. Did they not learn.

01:30:33 - Nick Taylor

Yeah. Give me your clothes.

01:30:35 - Anthony Campolo

And we had The Matrix in the 90s. Every decade has their AI.

01:30:40 - Nick Taylor

We even had MCP in the 80s. If you've ever seen the original Tron, Master Control Program. So yeah. Anyway, I'm dating myself.

01:30:51 - Anthony Campolo

You see here, every prompt has an instruction where you tell it in English what you want, and then an example where you actually write out what the output should be.

01:31:03 - Nick Taylor

Okay, gotcha. Let's go to the end here. Country song is that.

01:31:12 - Anthony Campolo

Yeah. So there's country song, rap song. Look at key takeaways, actually. Let's see where that one is. Okay, or just takeaways.

01:31:26 - Nick Taylor

Okay.

01:31:26 - Anthony Campolo

Yeah. Takeaways. So that is: include three takeaways from the episode, and then an example.

01:31:32 - Nick Taylor

Okay.

01:31:33 - Anthony Campolo

Really, any of these you can just copy and paste and rewrite. The main thing is there needs to be an instruction and an example. The thing you dropped was basically instruction. While you're doing that, I got a whole bunch of comments to read here.

01:31:48 - Nick Taylor

So yeah, go for it.

01:31:50 - Anthony Campolo

Was it more like select filter based on words? Then I only saw better chatbots popping up when ChatGPT happened. Yeah. No, I agree. I think that ChatGPT obviously changed the game.

Fuzzy Heroes is also referencing Spielberg's film A.I. Artificial Intelligence. Fantastic, highly underrated film. Really love Spielberg's film A.I. Artificial Intelligence. That's with Haley Joel Osment as a kid. Love that movie. I watched that with my partner about a year ago.

Star Trek is why I bought into 3D printing. Immediately, I saw the chance to get a quote unquote replicator in my home and jumped at the chance. Yeah, I've never gotten into 3D printing. I really should. I don't have a use case right now, but it seems pretty fascinating.

Being a 90s kid in the 2020s is an amazing feeling. Yeah, man, I'm a 90s kid. I think Nicky T is probably your... you're maybe an 80s kid, right?

01:32:48 - Nick Taylor

Yeah. I was born in the 70s, so yes.

01:32:54 - Anthony Campolo

Late 70s though, right?

01:32:55 - Nick Taylor

Yeah, yeah, yeah. You're.

01:32:59 - Anthony Campolo

Definitely a kid then. Matrix is 99 because the trilogy came out a decade after. It's definitely a noughties movie. Yeah, that's probably true.

I just watched Bring It On with my partner yesterday. That movie came out in 2000, but it's definitely like a 90s movie. Trekkie.

01:33:20 - Nick Taylor

All right, so I'm being lazy here, just doing vibe coding. I put in my actual prompt I used in ChatGPT, and I'm going to see if it's going to do it. Okay. It didn't insert it, but let's try this.

So, identify a compelling 62nd segment from the transcription that captures the essence of the content. I don't know.

01:33:42 - Anthony Campolo

Make sure the example includes a timestamp in it.

01:33:45 - Nick Taylor

Yeah, yeah. Do we want to just start off with one? We should do three.

01:33:54 - Anthony Campolo

Okay. Three would be a good one to start with.

01:33:58 - Nick Taylor

Okay. From the transcription. I don't think you can focus on moments of high engagement unless it means the conversation.

01:34:09 - Anthony Campolo

Yeah, you can cut that out.

01:34:10 - Nick Taylor

Yeah. Focus on clear messaging. I don't know about emotional impact either. Ensure that the selected snippet highlights three... the selected snippets, not snippet highlights... three key takeaways for the viewer. Okay.

And then I'm going to... let's see here. Let's see what it does. That's not going to work. Cool. Hold on a sec. Okay. That's all in a text block, is it? Oh, yeah.

01:34:58 - Anthony Campolo

It's just a JSON object with two fields, instructions and example. Then each is just a string template. [01:35:04] - Nick Taylor Yeah. Okay. I think the existing ones that are here are probably fine, but like you said, timestamps. I would say.

01:35:15 - Anthony Campolo

You should take the output of what you've actually run and use that as an example.

01:35:21 - Nick Taylor

Okay. I don't know if I still have it, but let's take a peek. Let's just open up another Windsurf. AutoShow. I should have a content folder still. Yeah. Okay, so here it is. This is the one. I don't remember where I took it, though. Let's see here. Funding and open source. Oh, "gift"? Really? It doesn't have the word "gift" in there. "Economy"? Really? Am I looking at the wrong thing? Oh, maybe I was in the wrong thing. There we go. Okay, so let's just say... let me unpack this. Okay. So, "market." Okay, so let's do this. And we've got "market economy." So 24:46 to 25:43. Let's just go with that, or 40. Come over here. Oh, from the episode, it just has to include timestamps and the content of the moment. Okay.

[01:37:08] So let's just do one here. Then let's make up another one. That's good. Sure.

01:37:21 - Anthony Campolo

Yeah. That's perfect.

01:37:27 - Nick Taylor

Oh, interesting. It pulled out pieces of that other one.

01:37:32 - Anthony Campolo

Oh.

01:37:32 - Nick Taylor

Okay. It's the same one. But you know what? Let me just grab a couple.

01:37:37 - Anthony Campolo

You can just rewrite it to say two key moments. It's fine. Yeah, we can rework it. Let's just get the MVP in there.

01:37:47 - Nick Taylor

Yeah, okay. Cool. And two, okay. So that's done. I just gotta check work slack. Hold on. Okay, everything's good. Cool. All right, so let's go.

01:38:04 - Anthony Campolo

Yeah. If you've got it. Oh, we just lost Nicky T. Oh no. Everyone in chat, how you doing? What's up? It looks like we got Nicky T back.

01:38:18 - Nick Taylor

Yeah, I accidentally closed the browser.

01:38:22 - Anthony Campolo

That's good. How much more time do you have, by the way?

01:38:26 - Nick Taylor

I can probably go for maybe another 15, 20 minutes.

01:38:30 - Anthony Campolo

Okay, cool. We should only need another ten. I was gonna just say, once we have the prompt written, we should just run it and then see what it outputs.

01:38:39 - Nick Taylor

We can try it now.

01:38:41 - Anthony Campolo

PR, yeah.

01:38:43 - Nick Taylor

Cool. I don't know if you wanna just go ahead and share my screen again.

01:38:47 - Anthony Campolo

Yeah. You're sharing.

01:38:49 - Nick Taylor

Cool. All right. Let me get you back without closing the window this time. Okay, so that's good. Highlight it. Oh. See? Windsurf? No, I changed it to two. There. It knew to switch it up there.

01:39:03 - Anthony Campolo

Could you just add a couple spaces before instruction?

01:39:07 - Nick Taylor

Yeah.

01:39:08 - Nick Taylor split / short musical interjection

Yeah.

01:39:11 - Nick Taylor

Before instruction.

01:39:13 - Anthony Campolo

Yeah. So the JSON is correct in terms of the formatting.

01:39:17 - Nick Taylor

Oh, yeah. Sorry. Gotcha. I, for some reason, thought you might not use prettier because some of the text was like that.

01:39:24 - Anthony Campolo

No, I don't have prettier or eslint at all. I've never been a big fan of either of them, honestly. Okay, I see the value, obviously, for moments like this, but just never gotten there. Maybe I'll do that after this.

01:39:38 - Nick Taylor

Yeah, I'm a big fan of it. For this one, I'll leave the text because it's already there.

01:39:42 - Anthony Campolo

Yeah, that's fine.

01:39:44 - Nick Taylor

Cool. Let's close all that. Okay. Let's close the sidebar. So how do I use this now? I've already generated, so I should have a content folder.

01:39:54 - Anthony Campolo

So in the docs, there are prompts. Go to docs. Yeah. And then go to Prompt Options.

01:40:06 - Nick Taylor

Let me just do preview. Oh, I don't have it installed on Windsurf yet.

01:40:11 - Anthony Campolo

That's fine. Let's just keep it here because you're going to want to write a new one anyway. So go to where it says takeaways.

01:40:23 - Nick Taylor

Yeah.

01:40:23 - Anthony Campolo

That's in the outline. So go down to where that actually is.

01:40:26 - Nick Taylor

Oh yeah. Sorry. Why is it not doing that? Take away. There we go.

01:40:36 - Anthony Campolo

There you go. So just create a new one. They all have dash dash prompts, and it'll be whatever you wrote, whatever the name was of the thing you just created.

01:40:48 - Nick Taylor

Yeah.

01:40:49 - Anthony Campolo

Just delete all that. You just want the actual text.

01:40:54 - Nick Taylor

Like that.

01:40:57 - Anthony Campolo

Yeah. You kind of messed everything up there.

01:41:05 - Nick Taylor

Okay. I like how you're so polite like that. You're like, ah, it's all messed up.

01:41:11 - Anthony Campolo

Yeah. So just copy. You don't want to copy and paste the markdown, all that. You just want to add another. So just look at what you're looking at right here. So you've got a couple different commands here. That should be better.

01:41:25 - Nick Taylor

Okay. So this is RSS. But that's not what we want. Okay. That's an example.

01:41:31 - Anthony Campolo

Just change it to video, or actually, it could be video or audio.

01:41:38 - Nick Taylor

Right. Okay. Prompt key moments. Okay.

01:41:43 - Anthony Campolo

And then change that too. Just look for one of the other dash dash videos in there and grab the URL that they're using.

01:41:53 - Nick Taylor

Okay.

01:41:57 - Anthony Campolo

Get rid of the space after the dash. Dash.

01:41:59 - Nick Taylor

Yeah. Right.

01:42:00 - Anthony Campolo

Okay. That's the only one in there, it looks like.

01:42:02 - Nick Taylor

Well, we can make up one. What's your live stream at your agency? Web dev, right?

01:42:08 - Anthony Campolo

There's a specific one that I use in the README. If you go to the readme, you should be able to find it.

01:42:14 - Nick Taylor

Okay. Not README. Okay.

01:42:20 - Anthony Campolo

Read me the very first example. The command has a video URL you can use.

01:42:25 - Nick Taylor

Okay. No, that's the image.

01:42:28 - Anthony Campolo

Yeah. Keep scrolling. There you go. Yeah. Grab that one.

01:42:32 - Nick Taylor

Cool.

01:42:33 - Anthony Campolo

Replicator. Sounds like a great way to look at 3D printers. For me, 3D printing is about hardware, and I've never been good at working with hardware directly. Yeah, I've never done any hardware work at all. [01:42:42] - Nick Taylor Okay, that's good. I just want to add key moments to my transcript.

01:42:48 - Anthony Campolo

Yeah. Just try running that command and see what happens.

01:42:51 - Nick Taylor

Okay. Let me get my video there.

01:42:58 - Anthony Campolo

Yeah. Sweet. What this will do is output the file that you'll need to feed to an LLM once it outputs the final thing. How long is this video again?

01:43:14 - Nick Taylor

No, the video is already downloaded.

01:43:17 - Anthony Campolo

I'm just thinking about how long the transcription is going to take, since it was pretty quick before. Okay, cool. Yeah. Because it's not using V3, so it should run. Really?

01:43:28 - Nick Taylor

Yeah. I'm on my work computer, a MacBook Pro M4, so it's got some juice to it.

01:43:40 - Anthony Campolo

Have you ever used a 3D printer?

01:43:43 - Nick Taylor

I have not used one myself, but when I worked at Autodesk they had all kinds of them there. People were printing huge Star Wars things and all kinds of stuff. I don't think they had to pay for it, so it was a lot of cool stuff there.

01:44:00 - Anthony Campolo

What is Autodesk? I've heard of it, but I don't really know what it is.

01:44:03 - Nick Taylor

It's an engineering firm, but they do all kinds of things. They do software like 3D Studio Max and AutoCAD. That's not stuff I worked on. I worked on project management software for the video game and movie industry. They had lots of big clients like Netflix and Disney and so on. They do a lot of engineering stuff. I guess they must have a 3D printer branch of the company because there was an insane amount of 3D printers there, which is not something you'd normally put in an office, I don't think.

01:44:43 - Anthony Campolo

Yeah. Okay.

01:44:44 - Nick Taylor

So it finished here.

01:44:45 - Anthony Campolo

Okay. Really quick, let me just read this out and then we can look at it. So I was lucky to go to a small rural school. So I had three years of CAD in middle school. That's crazy. And four years of AutoCAD in high school. Man, your school is way better than mine.

I use Bamboo Labs pump because it's cheap and they work great. I can make anything I need in Fusion 360 and then print out within a day or so, depending on how large it is. Super nice to be able to print Raspberry Pi cases or wall holders or anything else. Yeah, there's a whole bunch of terms in there I don't understand, but I think I got the gist.

01:45:18 - Nick Taylor

All right, so this ran, but I don't see... oh, it's under examples. Is that it? Example.

01:45:24 - Anthony Campolo

No, it's in content. It says right there, funding. Click one of those two.

01:45:33 - Nick Taylor

Okay. But that's the full transcript.

01:45:36 - Anthony Campolo

So scroll back to the top. Is the prompt not written in there? Scroll a little bit down. There's a transcript timestamp. Scroll below that for the output, like so. Interesting. We may have broken something along the way.

01:45:53 - Nick Taylor

Yeah. There's no key moments in here. Let's just double check what we did, because you know better than me, obviously. Okay, so what's the difference here? Okay. Oh.

01:46:09 - Anthony Campolo

That's just adding white space. That's all fine.

01:46:13 - Nick Taylor

Okay. Let's come down here. So key moments. Is it in the right section?

01:46:18 - Anthony Campolo

So yeah, that should be fine. Actually, it looks like you've modified two files. Did you modify... look at where you modified the other file. So... oh, that's...

01:46:26 - Nick Taylor

Just the readme. Yeah.

01:46:29 - Anthony Campolo

That's just the readme. Okay.

01:46:30 - Nick Taylor

So key moment. Whoops. That's the wrong file here. And you come back here.

01:46:38 - Anthony Campolo

The thing you called it was key moments. Yeah.

01:46:42 - Nick Taylor

It should be.

01:46:43 - Anthony Campolo

It has instructions as example.

01:46:47 - Nick Taylor

Prompt key moments. That should be it.

01:46:54 - Anthony Campolo

Looks like it should be fine. It has instruction and it has example below instruction. Yeah. And then go to the very bottom of it, okay. It should all be fine.

We might need to do a little debugging, and we're already going pretty long here, so we can probably call it here. Yeah.

01:47:13 - Nick Taylor

We can look at this after. Yeah.

01:47:15 - Anthony Campolo

We're basically where we should be. We're just hitting some weird bug. But yeah, we can figure this out off stream. I think a ton of the stuff we just did was super great. So yeah, we'll get that fixed up.

01:47:29 - Nick Taylor

Yeah.

01:47:30 - Anthony Campolo

That way you'll have your own custom prompt that you could use. Yeah. Any thoughts based on what we just did?

01:47:37 - Nick Taylor

Yeah. Well, the update to the UX, I think, is really good because, like I said before, I mean, I know it's working now because I debugged it, but I think for anybody that pulls this down, they'll be like, okay, it's doing something now, as opposed to the usual, like, is it frozen or is it just still processing kind of thing.

01:47:57 - Anthony Campolo

Having a spinner is pretty important for that for sure.

01:47:59 - Nick Taylor

So I think that's a nice little quality of life improvement. And once this is in, this will be helpful for me too because then I'm no longer generating a transcript, pasting it into ChatGPT, or asking for 60s. So I think getting the transcripts with those key moments will be good.

And then later on, maybe we can do another stream where we can say, like, get me three raw video key moments because I'm sure you'll still need to edit it. I could see it being like, get me the key moment, but grab 10s before and 10s after or something, because sometimes when the video starts, it'll be like blah or something, like cut off. But yeah.

01:48:43 - Anthony Campolo

That.

01:48:43 - Nick Taylor

Could be.

01:48:44 - Anthony Campolo

Something really honing in on the exact moment where you want something. That's the same thing with chapters, you know. Yeah. The way it works right now, especially if you give it to GPT, it tends to give you a new chapter every six minutes. But that's not really what you want. You want to know where the beginning of each chapter is. So figuring out where this actual clip starts, that you want, is something you really have to finagle with the prompts.

01:49:12 - Nick Taylor

Yeah.

01:49:13 - Anthony Campolo

And great stream, you legends.

01:49:15 - Nick Taylor

I love Fuzzy. Always supportive.

01:49:19 - Anthony Campolo

Always hype man. Yeah. Fuzzy is my biggest hype man. He shows up to every one of my streams.

01:49:24 - Nick Taylor

Yeah, I could be down in the dumps, and Fuzzy would be like, you got this, man.

01:49:31 - Anthony Campolo

This.

01:49:31 - Nick Taylor split / short musical interjection

Bro.

01:49:32 - Nick Taylor

You got this.

01:49:33 - Nick Taylor split / short musical interjection

You could.

01:49:34 - Anthony Campolo

You probably.

01:49:35 - Nick Taylor split / short musical interjection

Say.

01:49:36 - Nick Taylor

Oh, yeah. Well, Scottish. Yeah, yeah. It's true.

01:49:38 - Anthony Campolo

Yeah.

01:49:38 - Nick Taylor

But yeah. So I think the thing that would be cool about this, because I know you want to productize this at some point, is that what we're doing here right now in this feature that we're not finished with yet would be something great for, like, give me my key moments. And then in the productized version, there's probably some kind of editor where you can slightly tweak. It might not be a full-blown editor, because that's a lot of work and might not make sense.

01:50:07 - Anthony Campolo

Yeah, editing the show notes that it puts out is something that I have not done yet. It's in the back of my mind. It's something that will be pretty useful, but I don't know if I want to launch with that. I think it's going to be easier if I just launch with, you know, just having a database with your show notes.

01:50:24 - Nick Taylor

Yeah. Oh, yeah. No, I don't mean this for the first thing, but I could see that being a useful thing that people would pay for, which is like...

01:50:32 - Anthony Campolo

Some sort of rich text.

01:50:33 - Nick Taylor

Give me three.

01:50:34 - Anthony Campolo

Key.

01:50:34 - Nick Taylor

Key moments. Let me slightly edit it. You know what I mean? Because you could know where it is in the time, and then you have access to FFmpeg. I'm sure there's a crop feature or something. I don't know, I haven't really used FFmpeg, but that's later down the road.

01:50:51 - Anthony Campolo

Yeah. Real quick, before we close it off, you had mentioned something about DaVinci and FFmpeg. Do you want to talk about that real quick?

01:50:57 - Nick Taylor

Oh, this is just something I shared with you the other day. I've never used DaVinci Resolve, but let me go find the...

01:51:05 - Anthony Campolo

This came up on stream when I had Chan Michael Chan on a long time ago. I was showing him AutoShow, and he was like, man, if I could hook this into my editor, that would be really key. And he was also using DaVinci, and Violated Sign is saying here, I love DaVinci, best editor out there. So thanks for the stream. I like the vibe here. That's cool, man. Oh yeah, it's all about. So thank you everyone who's been watching. It's super great to have an actual audience chatting in the chat. So thank you.

01:51:33 - Nick Taylor

Yeah, we should definitely...

01:51:35 - Anthony Campolo

Violated Sign, thank you. God, please tell me how to say your freaking name.

01:51:41 - Nick Taylor

Here, I'll drop the tweet. This is from... no, that is not the tweet. I don't even know what that number is. It just copied. That's the pin to my bank. No, that's not it. Here, hold on a sec. Copy. Text. There we go. So this is a tweet, or post, whatever you want to call it. Oh, hey. Yawn yawn yawns from my virtual coffee.

So this is from Matt Pocock, who is obviously pretty legendary in terms of TypeScript and all other kinds of stuff. And this tweet is just him. He has a short video about his process because he's pretty happy with it. And I just dropped it to you because of what you're working on. I've never used DaVinci Resolve myself, but he was just kind of explaining his workflow, so people can check that out. It was pretty interesting.

01:52:30 - Anthony Campolo

Awesome.

On this pageJump to section