
Layoff Log with Chantastic
Anthony Campolo and Michael Chan discuss AI tools, content creation, podcasting, and web development frameworks in a wide-ranging conversation
Episode Description
Anthony Campolo demos AutoShow, his AI-powered transcript tool, for Michael Chan while they discuss content creation workflows, video editing, and developer tools.
Episode Summary
Anthony Campolo and Michael Chan reconnect on a livestream after a long hiatus, reflecting briefly on the pandemic-era Discord communities that kept them connected before diving into the main topic: AutoShow, Anthony's open-source tool for turning audio and video content into structured written material. Anthony demonstrates the tool live by processing episodes from Michael's React Podcast RSS feed, showing how it uses Whisper for transcription and Claude for generating summaries, chapters, and descriptions. The conversation branches naturally into the broader challenge of content repurposing — how podcast creators can generate clips, blog posts, and YouTube chapters from long-form interviews to grow their audience. Michael, recently laid off and producing a video series called the Layoff Logs, shares his struggle to increase his output frequency and explores the gap between AI-generated text timestamps and getting those markers back into video editing software like DaVinci Resolve. They discuss the potential of scripting DaVinci via Lua, the merits of whisper.cpp over Python Whisper, developer productivity tools like shell aliases, and the state of the JavaScript ecosystem including Prisma, Cloudflare, SQLite at the edge, and the resurgence of PHP. The stream closes with both expressing excitement about bridging the gap between AI-generated metadata and practical video editing workflows.
Chapters
00:00:00 - Reconnecting After the Pandemic Discord Era
Anthony and Michael greet each other and fall into a reflection on the strange liminal period of the pandemic, when developer communities lived inside Discord servers for hours each day. They talk about the intensity of those online relationships and how the 2022 Remix Conf marked a turning point back toward in-person interaction. Both acknowledge the difficulty of maintaining digitally-born friendships in a post-lockdown world and how scheduling a livestream together is itself an act of intentionality.
Michael notes that not everyone had the luxury of a tight-knit online community during that period, and Anthony agrees, emphasizing how important those spaces were for mental health. They discuss the tension between the deep connections formed in always-on chat rooms and the reality that sustaining them now requires deliberate effort — much like scheduling a lunch in the physical world.
00:04:47 - Michael's Layoff Logs and the Quest to Make Videos Faster
Michael explains the origin of his Layoff Log video series, tracing it back to a job application at Syntax that pushed him to articulate what he wanted for himself creatively. The feedback he consistently received was that his content was high quality but too infrequent, so he set out to increase his output speed. After being laid off, he started producing videos but gravitated back toward interview-format content, which proved time-consuming to edit.
Anthony connects this directly to the problem his tool AutoShow aims to solve — accelerating the content pipeline for solo creators. They discuss the broader content strategy of clipping long-form interviews into short segments for social media distribution, a model popularized by major podcasters, and how that funnel approach can drive audience growth over time.
00:12:02 - Live Demo of AutoShow on React Podcast Episodes
Anthony shares his screen and walks through AutoShow's workflow, feeding Michael's old React Podcast RSS feed into the tool. He shows how it downloads episodes, runs them through Whisper for transcription, and then passes the transcript to Claude with a detailed prompt that generates a one-sentence summary, a full paragraph summary, and timestamped chapter descriptions. The live output reveals that the AI correctly identifies sponsors, guest topics, and conversational segments.
Michael is visibly impressed by the results, and they discuss how podcasts are notoriously hard to grow without surrounding written and clipped content. Anthony also demonstrates how he aggregated all of Michael's Layoff Log interviews and asked an LLM to extract the ten most important takeaways across the entire series, showing the potential for higher-level synthesis across multiple episodes.
00:23:45 - Clipping Strategy and the Editor Integration Gap
The conversation turns to the practical challenge of turning AI-generated chapter timestamps into actual video clips. Anthony explains that the timestamps can be pasted into YouTube descriptions to auto-generate chapters, but Michael pushes on a deeper question: how do you import those markers back into video editing software like DaVinci Resolve or Final Cut to automate the clipping process?
Anthony acknowledges he doesn't know enough about video editor APIs to bridge that gap, but they brainstorm possibilities including JSON output formats and Lua scripting in DaVinci Resolve. They also touch on the landscape of paid clipping services, which both suspect may be overpriced relative to the difficulty involved, and the importance of keeping the workflow local and privacy-respecting.
00:32:27 - Video Editing Tools, Aliases, and Developer Workflows
A tangential but lively segment covers their respective toolchains. Michael reveals he uses DaVinci Resolve because it's free and satisfyingly complex, while Anthony admits he's still using iMovie and resolves on-stream to finally download Resolve. They briefly discuss Final Cut Pro's pricing history and the rise of CapCut as a TikTok-native editing option.
Earlier in the stream they had also swapped notes on shell aliases and dotfiles — Anthony sharing his shortcuts for navigating to his blog and pushing commits, Michael describing his fully automated machine setup script. They discuss the whisper.cpp versus Python Whisper performance difference, with Anthony urging Michael to switch to the C++ implementation for dramatically faster transcription.
00:37:01 - Favorite Interviews, Editing Philosophy, and AI Skepticism
Michael reflects on his favorite Layoff Log interviews, highlighting the collaborative episode with Selma where she offered to edit the episode herself. This sparks a discussion about the art of editing — knowing what to cut, preserving callbacks, and the tension between keeping conversations authentic versus trimming for audience interest. Anthony shares his own strict no-cut philosophy from his podcast days.
The conversation shifts to AI skepticism in the developer community. Both agree that AI tools are simultaneously overhyped and underhyped — overhyped in marketing but genuinely transformative for those who invest time in learning to use them well. Anthony credits ChatGPT with enabling him to build AutoShow's Node CLI scripts, work he couldn't have done without LLM collaboration, and argues that much of the cynicism comes from people who only tried the free tier.
00:51:02 - Frameworks, ORMs, Prisma, and the JavaScript Ecosystem
Michael steers the conversation toward frameworks and the JavaScript ecosystem. They discuss React Server Components, with Anthony expressing fatigue over the topic, and the idea that JavaScript is uniquely positioned as a true full-stack language. A deep tangent follows on ORMs — Anthony defends Prisma through the lens of Redwood's framework integration while Michael expresses frustration with JavaScript ORMs generally.
Anthony pulls up a ChatGPT conversation about has-many-through versus many-to-many database relationships, and they work through examples together using Ruby ActiveRecord syntax. The segment highlights how LLMs can serve as real-time teaching tools for unfamiliar languages and concepts, with Anthony noting it was literally his first time reading Ruby code.
01:02:43 - PHP, Cloudflare, SQLite at the Edge, and Closing Thoughts
Michael declares that PHP is having a moment, attributing it to developer fatigue with the service-heavy JavaScript ecosystem. They pivot to discussing Cloudflare's growing full-stack capabilities — Pages, R2, D1 — and how the SQLite-at-the-edge trend is reshaping infrastructure options. Anthony shares his experience working at Cloudflare competitor Edgio and candidly admits Cloudflare built a better product.
The stream wraps with both expressing enthusiasm for bridging AI-generated content metadata with video editing tools. Anthony commits to exploring DaVinci Resolve's Lua scripting API as a weekend project, and Michael encourages him to pursue it. They exchange well-wishes regarding Michael's job search and Anthony's independent creator path, closing with warmth and plans to stay connected.
Transcript
00:00:01 - Anthony Campolo
Alright. We are live. What's up? Michael Chan, my man. Chan-tastic.
00:00:07 - Michael Chan
Good to see you. Hey, how's my volume? I totally forgot to check. Are we good? We're good. Okay, go, go, go. Sorry.
00:00:13 - Anthony Campolo
Actually, I checked my audio. Okay, I'm good. I just had to make sure I don't go through my headphones. I go through my actual computer microphone. But yeah, it is so great to stream with you again, man. I feel like it has been a minute.
00:00:27 - Michael Chan
It's been a lot of minutes, man. It's been way too long. I was actually just talking with a friend of ours, you know, that we spent a lot of time in Discord with, just about how weird the last, I mean, it's an understatement to say that the last five years were weird, but it was so weird.
00:00:51 - Anthony Campolo
A fever dream. We all lived through this crazy fever dream.
00:00:53 - Michael Chan
Totally. Yeah, but it's funny now. Now that we're kind of back in and we're pretty well socialized again, now that we're back into it, it's kind of weird to look back and be like, okay, man, there were some really strong moments that I had in that weird fever dream.
00:01:14 - Anthony Campolo
Yeah. And that liminal digital space where we're on streams and Discord for like eight hours a day. Yes. Conversations.
00:01:21 - Michael Chan
Yes. And I'm still trying to figure out what it was, you know, to put a name on it. What was it and what was valuable about it and what we can take forward.
Because I think that for me, maybe the end of being perpetually inside of a Discord window was the 2022 Remix Conf, where we hung out and it was kind of like, oh, okay, I guess we're back in person. And now it's really hard to bridge these gaps between this kind of in-person feeling and the perpetually online digital feeling. Yeah, I don't know. There's something there.
00:02:08 - Anthony Campolo
I can say so much about this. I feel like the first thing I would say is that a lot of people went through this fever dream without something like that. And I think we were extremely fortunate in that sense, that we actually had a group of people to connect with at all. And that was...
00:02:25 - Michael Chan
Was.
00:02:26 - Anthony Campolo
Us in our house watching the news, could you imagine? That is pure nightmare fuel.
00:02:32 - Michael Chan
Yeah. Oh, man. Yeah.
00:02:34 - Anthony Campolo
I think those spaces were so important for all of our mental health, to be able to do that while we were locked inside and seemingly living through the apocalypse for like a year.
But then, as you say, now we're back into the real world and it's like, okay, I can't spend eight hours a day on Discord. How do I keep these relationships going and continue to connect with these people? These meaningful relationships that we built, how do I sustain them now in this new normal? That's where my head is at with all this, which is why I wanted to schedule a stream with you.
00:03:06 - Michael Chan
Right. Yeah. No, and I appreciate you making it a reality because it is such a hard thing to do. And it's almost, once again, in the digital space, you have to be as intentional as in the physical space, right? Where it's like, hey, I want to spend time with you, so we're gonna get together for a lunch or we're gonna go to this hackathon together, or this meetup or whatever.
And so you almost have to do the same thing to have conversations with people that you want to hang out with that you predominantly interact with in the digital space. And it's tough. It's just a different mode, you know?
00:03:44 - Anthony Campolo
Yeah. And that's why you make friends with content creators.
00:03:48 - Michael Chan
Right? Yeah, I know. Well, that's the other piece of it too, right? I think that was probably the space that Discord filled the most for me. You didn't have to be a content creator to be comfortable in a small space with a handful of people talking about the thing that you're interested in.
00:04:13 - Anthony Campolo
Like it was a chat room or message board.
00:04:15 - Michael Chan
Yeah, exactly. And that's the thing that's really hard to create because you and I are very happy just being like, oh, hey, we can connect in public and then that's content or whatever it's called, right? But that's not the case for everybody. And it's really hard. But I hear you, I really enjoy doing that. Yeah, just make it content.
00:04:47 - Anthony Campolo
Yeah, totally. And I feel like that's the strategy you've kind of gone with. Your Layoff Logs, what was the impetus of this idea and how did you kind of decide to do it?
00:04:59 - Michael Chan
Okay, so it's funny. I applied for a job with Syntax. They were opening up this video creator role to kind of take some of the topics that they cover on Syntax and go a little bit more into tutorials, effectively. And so I thought it was a really cool role. I got close, didn't nail the final stage of the interview. Which is totally fine.
00:05:29 - Anthony Campolo
The job that CJ got.
00:05:30 - Michael Chan
Yes. Yeah. And I think CJ's brilliant for it.
00:05:33 - Anthony Campolo
Yeah. For someone to lose out to, that's a very, very high bar. I'm sure you were a very compelling choice. Like for real.
00:05:43 - Michael Chan
100%. When I found out, I was like, oh, well, duh. I would have picked CJ over me too. So through that process, they asked me, hey, what is it that you want for yourself over the next year? And that was a really hard thing for me to answer, because I don't necessarily think about that.
00:06:06 - Anthony Campolo
That means you don't think about yourself enough, you don't prioritize your own happiness, and you don't think about that.
00:06:14 - Michael Chan
Yeah. So there might be something under there. But yeah, it got me thinking. And then I was like, you know, actually, I really just want to get good at making videos faster. Right?
Because I think something that's interesting is a lot of times you can go to the feedback that people give you and it's like, oh, hey, your videos are great, super high quality. I just wish you made more of them. And that's a pretty common refrain from people. And it means that I'm maxing on quality and minning on frequency. And that's not necessarily a good place to be.
And so I think that for me, I wanted to do a better job of kind of operating on the other side of that continuum. And then maybe, you know, land a few, "hey, I love that you post all the time, but your videos suck," right?
00:07:10 - Michael Chan
Right now, I haven't gotten to that. But that was kind of the idea. So then when I got laid off, that was just bouncing around my head, just making videos faster. And I kind of started with that. But then I ended up into an interview show again, which is notoriously hard to edit. And I kind of burned myself out of editing.
00:07:31 - Anthony Campolo
That's also your safe space because you've been hosting interviews for years and years and years.
00:07:38 - Michael Chan
It is my safe space. Yeah. It's what I keep going back to when I'm too nervous to try something different.
00:07:44 - Anthony Campolo
Well, this is so perfect, though. I'm glad you're saying all this. This is the whole point of my tool, is that it's about how do you accelerate the content? How do you take a single person who's trying to create content and accelerate it?
And there's whole other tools for taking long form video and clipping it and creating these short little things you share on Instagram and TikTok. And that gets people to the actual long form interviews. Then you build up a following over 2 to 3 years. There's this whole long game and I know it works. I've seen enough people do it, but I've never done it myself. So I've never gotten to a point where I can create those short little videos. So that's one thing. That's not the problem I'm solving right now.
Right now I'm solving the problem of once you create all that video content, how do you turn that into written content or just other repurposed content?
00:08:32 - Anthony Campolo
Because I'm sure you don't do transcripts for your interviews, right?
00:08:38 - Michael Chan
So yeah, one of the things that I was trying to do is I was just pumping them into Whisper, so it's not really a transcript. It's a little bit more like a caption, and kind of a bad caption at that, because there's no attribution in Whisper. It's just pure text.
00:08:56 - Anthony Campolo
There's no diarization. Correct.
00:08:57 - Michael Chan
Yes. Diarization. Yeah.
00:09:00 - Anthony Campolo
So one of the things I've solved with my tool, by the way.
00:09:03 - Michael Chan
Nice, nice, nice. So yeah, the answer is like, right, the words show up on screen.
00:09:14 - Anthony Campolo
No, that. Yeah. That's good. Actually, that's something that I need to start using it for as well. But what I've found is that when you get that output, just the output, it's a string of text of every word that is said in the video. You can actually feed that to a chatbot or like a Claude and have it extract what is actually happening in the conversation.
And it can summarize it and explain and know that there's multiple people talking without you even telling it. That was the thing that I found really interesting, is that you wouldn't have to actually feed it a thing with the speaker diarization in there. You could give it a raw output of the words itself, and it just reads it and figures out that there's multiple people talking. It just knows how to do that.
00:09:59 - Michael Chan
That's interesting. I mean, it totally makes sense, right? Because people don't typically overlap continuously.
00:10:08 - Anthony Campolo
And when there are breaks in the conversation, if you're really reading it closely enough, you could figure out what's actually happening. It's just harder. It's a lot harder.
So anyway, the point is, even if you have a transcript that you're kind of throwing out by having Whisper, and this is what I use, I use Whisper, I generate the transcripts and I feed the transcript to the LLM and ask it to create just the topics. Like, where are the chapters? What are the things they talked about? Then you get a summary of the whole conversation.
00:10:34 - Michael Chan
Interesting.
00:10:36 - Anthony Campolo
Yeah.
00:10:36 - Michael Chan
Interesting, I love that. Yeah. Because I think this is one of the things that was so hard about React Podcast. In order to grow, you don't grow a podcast by making podcasts. You grow it by making clips and kind of having surrounding content, maybe showing up in blog posts and whatnot. But podcasts are not discoverable unless you're the best podcast and constantly show up at the top of Apple Music.
00:11:14 - Anthony Campolo
Is the podcast RSS feed still lying around somewhere?
00:11:17 - Michael Chan
It should be? Yeah, I don't...
00:11:19 - Anthony Campolo
Not anymore. Your website's gone. React podcast dot com is gone.
00:11:24 - Michael Chan
It's not.
00:11:25 - Anthony Campolo
At least it's... oh, wait.
00:11:29 - Michael Chan
Oh shit.
00:11:30 - Anthony Campolo
Your domain expired, bro.
00:11:33 - Michael Chan
What the.
00:11:35 - Anthony Campolo
I mean, I know you have like 900 domains, so I can see how that could happen.
00:11:41 - Michael Chan
Oh, you know what? I think my credit card, the card that I have on file with... It's like everything got weird, you know? I had everything on Google Domains, and then it went to Squarespace.
00:11:55 - Anthony Campolo
Oh. That's rough.
00:11:56 - Michael Chan
And then I had an old card in there. It's so stupid. The whole thing is dumb.
00:12:02 - Anthony Campolo
Okay. Because I need an RSS feed. Wait. Hold on. Here we go. I got one, this is through Simplecast. Okay. So I want to show you what I can do. I'll show you the magic of AutoShow. Okay, I'll just close out all my windows with my personal stuff. Okay.
00:12:30 - Michael Chan
Man, that's so crazy. That's how in the past that thing is. It was down. I didn't even know.
00:12:38 - Anthony Campolo
What was the last... Actually, I'll say it's an RSS feed.
00:12:42 - Michael Chan
It's like four years ago.
00:12:44 - Anthony Campolo
Last episode you did, December 2020. That would actually be the last one with Kasey Williams on Dreams and Disasters. Does that sound like the last episode?
00:13:04 - Michael Chan
Yeah, yeah, that was it. It was like 123, I think.
00:13:07 - Anthony Campolo
Yeah, that was December 2020. That's funny. That was right around when you created the Discord. Yeah, I remember it was just a couple months apart.
So let me share my screen. Let me show you something. Okay. So AutoShow is basically a big Node script that you can run on a YouTube video, a YouTube playlist, or a random list of YouTube URLs or RSS feeds.
So I need to do the RSS feed command. Okay, pop this in. I'm just going to create just a couple of these. This will run on the entire RSS feed if I just keep it going. So I'll just do a couple for now, and then I'm gonna give the crappiest Whisper model just for the sake of this demo. So I can configure either base, medium, or large for Whisper.
Okay. This is gonna create a markdown file that takes the URL, the channel, website title, publish date, and then cover image, which is probably just the React Podcast cover.
00:14:19 - Michael Chan
I'm glad that you found an RSS feed.
00:14:22 - Anthony Campolo
Yeah, right.
00:14:23 - Michael Chan
I just renewed the domain. I guess it did cancel. I think my credit card expired or something like that.
00:14:28 - Anthony Campolo
So I don't usually use the base model, so I need to build that real quick. Because I usually use the large model, not the base, because it gives you better results. So when you use Whisper, you use whisper.cpp.
00:14:51 - Michael Chan
I literally just type whisper file name in the command line.
00:14:58 - Anthony Campolo
How did you install it? What did you install?
00:15:02 - Michael Chan
Installed it with pip or brew, probably. I think.
00:15:06 - Anthony Campolo
You're using...
00:15:07 - Michael Chan
Brew.
00:15:07 - Anthony Campolo
So you're using the Python Whisper, probably.
00:15:10 - Michael Chan
Yes, yeah.
00:15:11 - Anthony Campolo
Yeah, that's the slow man's Whisper.
00:15:14 - Michael Chan
It's so slow, yeah.
00:15:16 - Anthony Campolo
So you need to get some whisper.cpp in your life. It's in C++ so it runs significantly faster.
00:15:27 - Michael Chan
Oh, that's on brew too. I just needed to do the different install. I'm gonna update my script right now.
00:15:33 - Anthony Campolo
I don't use it through brew. I clone the git repo down. I'm not sure how that's gonna work for you, but if that works, that's actually probably pretty sweet.
00:15:43 - Michael Chan
This is a non sequitur, but I went super hard into writing good dotfiles and a setup script. I can't even remember what my motivation was, but I went super hard into it. And so now I have a copy of a line in a readme and I can just copy that line on a new machine and it just fully sets up any machine for me.
00:16:11 - Anthony Campolo
Yeah. So I've started working on aliases for the first time. When I open up my terminal, I just hit A and it CDs into my blog directory and then opens up VS Code. So I just go boom, boom, and then I'm in it.
And then for my private repos where I don't really care about commit messages, I've aliased adding and committing to GC and then pushing to GP. So I just commit and push with GC GP.
00:16:38 - Michael Chan
Nice. Dude, aliases are great.
00:16:43 - Anthony Campolo
npm init with your type set to module. This one is huge because you always gotta set your type to module if you want your ESM.
00:16:52 - Michael Chan
Oh yeah, interesting.
00:16:55 - Anthony Campolo
npm package set type. Yeah, I learned this one from Monarch, actually.
00:17:00 - Michael Chan
I actually didn't know about that. That's crazy.
00:17:03 - Anthony Campolo
Yeah. Okay, so I think we've got our stuff. So this is the first episode. This is the episode with Kasey Williams. We've got this whole transcript here, goes all the way to the bottom.
And then it has a prompt. The prompt is telling it to create a one sentence summary, one paragraph summary, and then chapters. And then it gives it an example of what it needs to create. So I'm real quick going to open up my Claude. Just want to make sure you don't want to share your chat history with these things. I have strange conversations with other LLMs.
00:17:44 - Michael Chan
Who was it? Was it Dax that was saying you're the...
00:17:47 - Anthony Campolo
Most private. It's true. Dax is 100% right. That tweet resonated with me, let me tell you.
00:17:56 - Michael Chan
It's so true. It's the new browser history.
00:18:00 - Anthony Campolo
Yeah. All right, so here we go. One sentence summary: Kasey Williams discusses the challenges and surprises of 2020, including career changes, her Kickstarter project, and staying motivated.
And it gives you a longer description. She talks about TikTok, having a newsletter, working at Netlify, pair programming, online communities. And then here we got the actual chapters. So it knows that you use Retool and Honeybadger and that those are your sponsors.
00:18:36 - Michael Chan
Sponsor ads from Retool and Honeybadger.
00:18:38 - Anthony Campolo
Yeah. So that just breaks it down. Each chapter is maybe ten minutes or so.
00:18:47 - Michael Chan
Yes. Yeah, yeah.
00:18:53 - Anthony Campolo
Yeah.
00:18:54 - Michael Chan
Dude, that is so sick.
00:18:57 - Anthony Campolo
Yeah. So then the next level is I ran all of your dev logs through and then fed all of that to a chatbot and then asked it for the ten most important takeaways you've gotten from your interviews.
So these are the top ten most important takeaways that it said: Engaging in fulfilling activities. Importance of self-reflection. Open communication, value of feedback, celebrating small accomplishments, learning from mistakes, supporting creative pursuits, adapting to industry changes, fostering curiosity and growth, and balancing specialization and broad skills.
00:19:42 - Michael Chan
Yeah, that's so cool. It's kind of crazy. You could literally just go through life and have AI write your memoir.
00:19:55 - Anthony Campolo
You say that because I've been trying to convince my wife to feed her entire diary to an LLM.
00:20:05 - Michael Chan
That would be terrifying.
00:20:07 - Anthony Campolo
You only want to do that if you figure out how to do this locally. And this has been part of my mission and goal here. All of this can be done without, I use Claude because you get a nice output, but you can integrate this with an open source LLM as well. You can do all this locally and never give any of your data to a service.
So I have an open source version of this, and it's eventually going to be a paid version that's going to use all the services, and you're paying for it. This is kind of just how it goes. But if you are a freak about your privacy, there will be ways to use this in a 100% local private way, which is how I will be doing all of my stuff.
00:20:45 - Michael Chan
Nice. That is critically important, right? Because for a podcast, it's already public. Anyone can run any model on any of this stuff and it's already there. Maybe some of the models have even been trained on some of the transcripts, you never know.
00:21:07 - Anthony Campolo
If you ask it, we did this in the Discord once where if you ask it who Michael Chan is, fantastic. The models know. The models know who you are. I know who I am. Some people out there, all you chumps who don't have internet presences, they don't know who you are. They know who we are.
00:21:26 - Michael Chan
And it's kind of funny, right? I keep wanting to figure out what led it to understand that.
00:21:33 - Anthony Campolo
It's because the people who train these things, I'm sure they fed it all of Twitter. I'm sure they just scraped all this stuff.
00:21:42 - Michael Chan
Yeah.
00:21:42 - Anthony Campolo
There's just so much stuff if you have any sort of online platform. So check this out, I've got a bot page on my website. I've got testimonials and bots.
The testimonials are real people. I got Ryan Carniato saying I'm always right at the front of the line when it comes to new tech. Michelle Bagels thanking me for my Hack Miami work and Dan Shapiro saying I'm a badass podcast guest.
Then I got my bot moguls. These are real, they're really good. So this is what ChatGPT said about me.
00:22:18 - Michael Chan
It's hilarious.
00:22:20 - Anthony Campolo
Remarkably talented, deeply passionate web developer whose contributions to the community have consistently demonstrated an unwavering commitment to advancing web development practices and fostering a supportive, inclusive community with a focus on sharing knowledge and engaging with diverse perspectives within the tech world. That's the best possible testimonial you can ask for.
00:22:43 - Michael Chan
Mic drop. That's so good.
00:22:46 - Anthony Campolo
All the points.
00:22:50 - Michael Chan
What's Claude say?
00:22:51 - Anthony Campolo
So Claude also said extraordinary significant contributions. They highlighted my ability to break down complex topics into easily understandable explanations. And they said I have a gift for making web development accessible to learners of all levels, from complete beginners to experienced developers looking to expand their skill set.
00:23:14 - Michael Chan
It's so funny, man. Some of this stuff is so formulaic. What do humans want to hear? Humans want to hear that they were both the bottom and the top. They were both extremes and everything.
00:23:28 - Michael Chan
In the middle.
00:23:32 - Anthony Campolo
Yeah.
00:23:33 - Michael Chan
If that was a robot, I'd be laughing at humanity so fucking hard.
00:23:39 - Anthony Campolo
Yeah, I'm sure they're getting a kick out of us. So the layoff logs.
00:23:44 - Michael Chan
Yeah.
00:23:45 - Anthony Campolo
You were creating those and you wanted to make videos faster.
00:23:49 - Michael Chan
Yeah. So that was kind of the initial goal, but then as we discussed, I kind of fell into making it hard. I did that thing where you do two goals at once, where I was like, oh actually, I should probably learn how to edit a podcast, right?
00:24:08 - Anthony Campolo
And what have you thought about just taking these interviews, doing one every two weeks and then chopping it up into ten clips and then releasing one of those a day?
00:24:17 - Michael Chan
Yeah, I think that's actually a better way to do it. And I'm kind of curious.
00:24:24 - Anthony Campolo
All of the podcasts I watch, the real ones, they all do this. Some of them have different clips channels, but they'll put out a whole episode and then there'll be a whole chunk of 8 to 15 minute chunks of the episode. They just release all those with a nice catchy title and thumbnail, and then they turn an hour and a half long piece of content into seven different things.
00:24:47 - Michael Chan
Yeah, I mean, that's the format, right?
00:24:52 - Anthony Campolo
Yeah, exactly.
00:24:53 - Michael Chan
It's like Joe Rogan rode that machine into millions and millions of dollars. I'm curious, do you like seeing those before or after? Do you like the shorts, like, hey, episode's coming up?
00:25:11 - Anthony Campolo
It really depends, because the shows that I watch where there's a guest that I really want to hear, I want to know their perspective, then I'll want to hear the whole interview.
But some of the ones I watch, they'll do episodes where there's a whole bunch of consistent hosts that talk about the news of the day. I enjoy those, but usually they're cut into segments. They're talking about a news story, then another news story. So for that, I prefer to watch the clip. It really depends on the show.
For what you're doing, I would watch the whole interview. That's because I listen to your podcast, I'll listen to the whole interview. But the benefit here is that you have the clips because the clips are what the algorithm's optimized for.
00:25:59 - Anthony Campolo
And people, when they're just clicking around on YouTube and they're seeing what the next videos are, they're going to see a whole bunch of those. You need to have a whole bunch of those out there.
If you have a bunch of little clips with topics and the stuff that they would be interested in, they'll find that one thing that they're interested in just because they'll have all these different videos to find. They'll see it and be like, oh, this is really interesting. Then they'll work backwards to get to the full episode. It's about the funnel.
00:26:26 - Michael Chan
Yeah. So funny, funnels, right? It's so interesting to me that social has made mini marketers of everybody. It's really wild to see how marketing speak has infiltrated literally everything and everyone.
00:26:52 - Anthony Campolo
Yeah. And I've resisted it for a while, and it's one of the reasons why I never played this game with FSJam. I would just put out the episodes and be like, this is the conversation, you can listen to it or not.
00:27:05 - Michael Chan
Yeah.
00:27:06 - Anthony Campolo
That was nice. It also would be nice if I had ten times as many listeners and a third of them were paying me five bucks a month. That would be much, much nicer.
00:27:16 - Michael Chan
Sure, sure. That's interesting. That's cool. So with your thing, you talked about clips. Can you identify, what's the process of identifying clips?
00:27:32 - Anthony Campolo
So I guess the naive way to do it right now would be to take the chapters. And actually YouTube does this automatically. So if I were to take what I just generated and copy paste it, if you had a YouTube video with that episode, I copy paste it into the YouTube description. The timestamps themselves become clickable and then they will jump to it in the video.
And then also if you go to the chapters, it will read the headings and make those the chapters. It knows that. And then all of a sudden you have YouTube chapters. So you could do that, and then you just clip it and you can clip it automatically.
00:28:07 - Michael Chan
Okay, cool.
00:28:07 - Anthony Campolo
And it's not going to be exact though because, having done this enough, usually the actual time you want to start the segment will be within ten or so seconds before or after the time they give you. It's really hard to get exactly in the flow of the conversation, the exact point where they stop talking about one thing and start another.
There's still a little bit of manual effort you have to do, but it gives you the broad outline of what you would want to clip. And then you can just make sure you're lining up where the clip starts and ends, and you'll be able to do this in a day and clip your whole show.
00:28:40 - Michael Chan
Interesting. Something that I'm always kind of curious about is how you would integrate this, because it seems like text really is the interchange format for a lot of these things. You give text to a model and then the model can help you in any way that it can, where text is the output.
And so I'm wondering, could you export that to a markers list or a Final Cut timeline or something? What would the text output be that you could actually apply those as markers?
00:29:27 - Anthony Campolo
You get timestamps. You use the timestamps and then...
00:29:30 - Michael Chan
Yeah, but you would still have to scrub over them, right? You can't import them. I think that's the thing, what's the importable piece of it? Because if you had an importable piece, then you could...
00:29:42 - Anthony Campolo
I don't know enough about video editing software to even have a way to think about how to answer what you're asking right now. So you're correct. I'm spitting out a string, a long string of text of ones and zeros and letters.
00:29:57 - Michael Chan
That's it.
00:29:58 - Anthony Campolo
Yeah. So at a certain point, if you have to figure out how to interface that with video editing software, and the video editing software has an API, anything's possible. You could turn this into a JSON output instead of a markdown output and have your chapters be objects that have key values. But I still don't know where that ends up at your video editing software.
00:30:22 - Michael Chan
Interesting. That's the piece that I'm really interested in, because I think I want to know how to get it back into my editor.
00:30:38 - Anthony Campolo
Yeah. And I know there are a lot of services where you'll feed them videos and they'll find and create clips for you. I haven't tried any of those because they're all expensive.
00:30:47 - Anthony Campolo
Extremely expensive. Makes me think they probably work to some extent.
00:30:52 - Michael Chan
Maybe. I don't know, AI headshots are expensive and it's not that hard to do it on your own.
00:31:02 - Anthony Campolo
Not sure what you mean by AI headshot. Like, just creating AI-generated images? Photo AI is like ten bucks. It's pretty cheap.
00:31:09 - Michael Chan
Yeah, no, yeah.
00:31:12 - Michael Chan
I mean, just industries that have things priced high, it doesn't always mean that there's a lot of difficulty on the other side.
00:31:25 - Anthony Campolo
No, I agree. Yeah. I just feel like if all of them were crappy, then someone would make one that's slightly less crappy and not expensive.
00:31:32 - Michael Chan
Yeah.
00:31:33 - Anthony Campolo
I would just use that. In which case, maybe that's what we need to make.
00:31:40 - Michael Chan
Yeah. Because on your vision of giving more control to the consumer over their own privacy, which models they use, and all that kind of stuff, there is also this idea of like, okay, I don't want to use a service to generate all my clips. And so if I can map those to timestamps, I can use that to do the edits on my own or start edits on my own.
00:32:11 - Anthony Campolo
I guess my question is, what is the overlap between film people and developers? Because you're kind of a unicorn in that respect. Most people who are very into film editing aren't developers, and most people who are developers aren't into film editing, at least in my opinion.
00:32:27 - Michael Chan
Yeah, that's a good question. I mean, I guess that's a good point. I don't know how many people are like that. How did you guys get your podcast out? Were you on Transistor?
00:32:37 - Anthony Campolo
Transistor was our whole interface. You just feed it an MP3 file and then you input all the show notes.
00:32:44 - Michael Chan
But you guys didn't edit it, you just let it go?
00:32:46 - Anthony Campolo
Oh, I edited it with Audition, but there was no video.
00:32:49 - Michael Chan
Oh, okay, okay.
00:32:51 - Anthony Campolo
I just did audio editing, and audio editing because I was a music major, which also makes me a unicorn.
00:32:59 - Michael Chan
I mean, audio/video editing, at least to the extent that you're editing an interview or a tutorial, is really just audio editing with a video track.
00:33:10 - Anthony Campolo
Sure, yes. To a certain extent, if you only have two cameras.
00:33:15 - Michael Chan
Yeah.
00:33:18 - Michael Chan
But yeah, I don't know. Now my head's kind of spinning on how to bring that back into the framework because that would be kind of fun.
00:33:28 - Anthony Campolo
Final Cut, is that how you edit all your videos?
00:33:31 - Michael Chan
I use DaVinci, primarily. Yeah. I'm not sure, there's something intoxicating about how complicated it was when I started it. DaVinci kind of gave me that feeling.
00:33:48 - Anthony Campolo
Yeah, that makes me not want to try it then. But I need to get comfortable with a video editor. I can use iMovie to just clip stuff, but I know it's a super stupid way to do things. You should just use a real video editing software. It's like using GarageBand for audio.
00:34:08 - Michael Chan
Totally. I mean, you can use Final Cut, it's iMovie Plus.
00:34:15 - Anthony Campolo
But I don't want to pay for Final Cut, so that's right out the window. No chance. It's like hundreds of dollars, isn't it?
00:34:24 - Michael Chan
Oh, it's two. Yeah.
00:34:26 - Anthony Campolo
It's only 200? Oh wow. They dropped that sucker a lot.
00:34:29 - Michael Chan
It used to be like 1500 bucks. And I think there were different versions of it.
00:34:35 - Michael Chan
Final Cut Pro X, I think, is when it all changed and it became a reasonably priced product.
00:34:42 - Anthony Campolo
I might just torrent Resolve.
00:34:46 - Michael Chan
Oh, DaVinci Resolve is free.
00:34:48 - Anthony Campolo
Oh, it is?
00:34:49 - Michael Chan
Yeah.
00:34:49 - Anthony Campolo
That's excellent. Okay, good for them. Yeah. Downloading it.
00:34:53 - Michael Chan
That was the other reason that I wanted to pick DaVinci, because I always like to pick technologies that I could reasonably teach somebody. Because "download or buy this $200 piece of software with no demos" is a pretty big blocker.
00:35:18 - Anthony Campolo
I just signed up for Blackmagic Cloud. Is that even necessary?
00:35:21 - Michael Chan
I don't think so. The other thing too is apparently CapCut is on the rise, people are actually doing things with it.
00:35:32 - Anthony Campolo
All that was just the TikTok editor.
00:35:37 - Michael Chan
I think so, yeah.
00:35:40 - Anthony Campolo
That might be what I want if I want to edit TikTok videos. Anyway, kind of silly not to.
Hey, I got Mike Cavaliere in the chat. What's up buddy? I had him on the stream not too long ago. He also built an AI tool. You might like this. He has kids. It creates children's stories. You give it an age range and a topic and then it generates you a children's story.
00:36:00 - Michael Chan
Oh, that's a really good idea. Yeah.
00:36:04 - Anthony Campolo
It's called Storytime, and I kept calling it Storybook by accident. I actually tweeted out Storybook. I'm like, wait, that's a different thing.
00:36:14 - Michael Chan
And Storybook. There was always this name collision too on Storybook with, there's a video game I think, or I don't know.
00:36:22 - Anthony Campolo
There are many things called Storybook.
00:36:25 - Michael Chan
Yeah, exactly.
00:36:26 - Anthony Campolo
Like at least a dozen things called Storybook.
00:36:29 - Michael Chan
Yeah. Storybook is kind of the name of a category of thing, right.
00:36:34 - Anthony Campolo
Exactly. It's funny. Okay, so CapCut, I might need to look into CapCut. And then you said DaVinci Resolve is free. You've told me about DaVinci Resolve in the past. Every time I've asked this question before, last year and a half, that's usually the answer I've gotten.
00:36:51 - Michael Chan
Yeah.
00:36:54 - Anthony Campolo
That's right. I was talking about your app Storytime.
00:37:00 - Michael Chan
Let's go.
00:37:01 - Anthony Campolo
Yeah. So what have been some of your favorite interviews you've done?
00:37:08 - Michael Chan
One of the things is, and maybe this is where I would be helpful, I want to kind of coalesce them into maybe snippets or a little tiny book about things that I learned throughout the process.
But yeah, I really enjoyed all of them. It was really fun. I think one of the ones that was most satisfying was talking with Selma because I think we were both going through a really similar thing in life. And kind of at that point that we recorded her episode, there was just a lot going on. I was having a hard time keeping up. And so she actually offered to edit the episode, which was really cool.
00:38:12 - Michael Chan
And so she edited it, and it was kind of a fun little collaborative exercise because I've never really... I have a hard time trusting people to edit. Anyway, you know, that's funny.
00:38:23 - Anthony Campolo
I mentioned that I would never have anyone edit. I edit all the episodes myself. There's only one time ever. Aldo was like, hey, can I edit my episode? Because he got really excited when I sent him a rough cut, and I never send anyone a rough cut. It was only because he was asking for a rough cut.
And then I was like, no, Aldo, I need to edit this myself. And then I sent the final episode. I was like, sorry I was harsh. He was like, no, you're 100% right. I was totally silly for even thinking I could do this. This is so much better than what I would have done.
00:38:59 - Michael Chan
Yeah, editing is hard, and I feel like...
00:39:01 - Anthony Campolo
It really is.
00:39:02 - Michael Chan
It's a little bit of an art too. Everything has an artistic flair to it. But yeah, knowing what to cut out, sometimes if you're making an edit without being familiar with the content, you'll cut out things that are really important later on. You'll cut out things early that sound boring, but then they might be some kind of callback.
00:39:31 - Anthony Campolo
I would never cut anything. I would cut vocal tics and if someone actually said something wrong and wants to correct it, or if someone says something like, don't you cut that out, obviously. I would never remove anything.
00:39:44 - Michael Chan
Yeah.
00:39:45 - Anthony Campolo
If the guest is saying anything that's important, you know.
00:39:48 - Michael Chan
That's interesting because I feel like I have become more and more editorial over the years. And I'm not sure if that's just kind of going to my own interests and being like, any conversation between two people is kind of naturally self-centered around those two people, right?
And there is this kind of part of looking at it through an editor perspective or an audience perspective and saying, okay, what is not interesting to anyone else?
00:40:28 - Anthony Campolo
So this is hilarious. This is what it said for the introduction. This is the episode you're talking about. An introduction, mutual admiration. Simon and Michael expressed their excitement and nervousness about having this conversation together. They acknowledge each other as legends in their respective fields.
00:40:44 - Michael Chan
Hilarious. Hilarious.
00:40:51 - Anthony Campolo
That's so funny. Legend.
00:40:54 - Michael Chan
Legends. That's such a... not British. Like European. I feel like Europeans say legends. Legends? Chris.
00:41:03 - Anthony Campolo
Chris has called me a legend. Yeah. It's true.
00:41:05 - Michael Chan
Yeah. Who? Man?
00:41:08 - Anthony Campolo
[unclear] the difference between therapy and making personal videos. See, this is what I mean. If you wanted to clip this, this just gave you your clips and it gave you titles for your clips, and it gave you the YouTube description for your clips, and it gave you the beginning and end of your clips.
00:41:23 - Michael Chan
That's cool.
00:41:24 - Anthony Campolo
It's all there.
00:41:26 - Michael Chan
Yeah, dude. That's awesome. And so which mode is this? This is the summary mode, I guess.
00:41:38 - Anthony Campolo
Let me show you how I got here. So this is created from... let me just go to my repo online. This all comes from the prompt. The prompt is the most important part. The prompt is what makes everything possible. And so let's see, where's the prompt? The prompt is somewhere in here.
00:42:03 - Michael Chan
Prompt engineering, baby.
00:42:05 - Anthony Campolo
Right. Let me actually...
00:42:12 - Michael Chan
It's like our job is to talk well with computers, but we just didn't realize how that would eventually become human language.
00:42:20 - Anthony Campolo
I love it. I'm super hyped about it. Okay, so this is the prompt. It just lets it know this is the transcript with timestamps. And then I basically feed it the whole transcript after this prompt.
And I told it to create a one sentence summary and a one paragraph summary. So if we look at this, this is the one sentence summary. And this is the one paragraph summary.
And then I ask it to create chapters which include the timestamps from where the chapters begin, which is why it does this right here. And then I said it shouldn't be shorter than 1 or 2 minutes or longer than 5 to 6 minutes, which it doesn't really stick to. But if you don't tell it that, usually if you give it a really long one, it'll just do 5 or 6 chapters for a two hour thing, which is not enough.
00:43:13 - Michael Chan
Oh, sure.
00:43:14 - Anthony Campolo
Yeah. And then write a one paragraph description of each chapter that's at least 100 words. It used to just write kind of a one sentence thing for each, but I want a little more meat for each chapter.
And then this part's kind of important. I say note the very last timestamp because the chapters need to extend to the end. ChatGPT was the worst about this. If you gave it a two hour long episode, it would do the timestamps like an hour in and be like, now the episode's over. And I'm like, no, it's not. That's only half the episode. There was more episode there, even though it would fit in the context window. It just would be lazy and not read the whole thing.
00:43:50 - Michael Chan
So interesting.
00:43:52 - Anthony Campolo
This is the last kind of step. Claude doesn't really do that anymore, so that's not as big of an issue. But I keep this in here if you're using a different model. Kind of important.
And then I show it what it should look like. So I give it a markdown file that has the headings for episode summary, chapters, and then transcript because I copy paste it back over the prompt. And then you get this with the transcript on the bottom.
00:44:20 - Michael Chan
Huh. Fascinating.
00:44:23 - Anthony Campolo
Yeah. So there you go. I did this for all your episodes. They're all here.
00:44:29 - Michael Chan
Oh, for all the Layoff Log episodes.
00:44:31 - Anthony Campolo
Yeah. This is with Taylor. This is with Danny. This is with Steve. This is with Selma. This is with Aaron Fox. This is with Aaron Francis. With Michelle. This is Theo. Great one. And with Ryan.
00:44:49 - Michael Chan
Dude, that's so cool. I love this because, man, we gotta talk a little bit about AI because you were saying some people are scared of it and whatnot. I think for me...
00:45:07 - Anthony Campolo
Probably scared isn't the right word. I would say cynical about it. Cynical?
00:45:10 - Michael Chan
Yeah.
00:45:11 - Anthony Campolo
It's overhyped or that it's not really that useful. I understand where they're coming from. I just think they're wrong.
00:45:19 - Michael Chan
Yeah. I would say it's probably one of those things that suffers from being overhyped and underhyped simultaneously, right? Like in one sense, yeah, it is overhyped, right? I've seen you say that.
00:45:33 - Anthony Campolo
It comes up everywhere. Yeah. Because I've been building this for like a year. I used to just come up with the prompts and I was just doing transcription. And I built a scripting workflow. And then now I've actually integrated it with the API. So you could use a transcription service, you can use Deepgram or Assembly AI, and you can use ChatGPT or Claude. You can just hit the API. So yeah, it's a whole different level. What were you just saying...?
00:46:01 - Michael Chan
Oh, no, no.
00:46:01 - Michael Chan
No. Just kind of like it is both simultaneously, right? But I think for us as programmers, we're constantly getting further and further away from, you know, it's like binary and then assembly and then C and then languages that have nicer syntax than C but compile to C, right? Whatever.
00:46:25 - Anthony Campolo
You know, with the LLMs, the LLMs have gotten me closer to the code than I've ever been because I'm collaborating with it to write low level Node CLI scripts. I never knew how to do this before. I could not have built this without ChatGPT. Or I could have, but it would have taken me an extra year to learn all the Node syntax to do all this stuff.
I had my back end skills in terms of working with a database, but I never knew how to write a Node script. This was not a skill I was taught in bootcamp. This is not a skill I developed. As I was doing front end, I was slinging React divs and shit, which was totally different from Node scripting. They have nothing to do with each other.
00:47:10 - Anthony Campolo
So I cannot do a project without an LLM to collaborate with. Even though I can work with it through natural language, it's writing code for me and I'm implementing that code and it's helping me create better error handling with the errors I'm getting. And it's just all this.
And that's why I feel like some people, partly why they're cynical about it, is because they haven't really ever done that. They haven't really gotten a sense because they'll ask it a question and then they'll get some response back and it'll be this weird robotic kind of thing that's useful, half not. And they don't really know the depths of what they could do with it.
If they sit down and have a bug that they don't know what to do about, you can feed it that bug and the relevant code and be like, hey, what do I do about this? And it'll give you a whole bunch of options and it'll be actually really useful stuff to think about or to try. And usually the first one is the one that fixes it.
00:48:01 - Michael Chan
Yeah. It's like people who get their clothes tailored swear by it, right? And it's like, why would you wear off the shelf clothes? And it kind of feels like the same thing. Off the shelf AI kind of sucks, right? You have to really dive into tailoring it to what you want. But once you have kind of worked out the quirks, it's great.
00:48:35 - Anthony Campolo
That's a good metaphor because I think part of the problem is that a lot of people use ChatGPT, just hit the website, and use the free model, which is actually a lot worse than the paid model. And the people who pay for it and use it are like, wow, this is really incredible. And the people who are just trying it out for free are like, this thing's dumb as hell. Yeah, you're using the dumb one. You're using the challenged GPT. You gotta use the smart GPT.
00:49:10 - Michael Chan
For sure. It's interesting. It's an interesting time because I think that it is really shining a spotlight on people who didn't already have digital literacy. And it's just getting worse. The divide between people with and without digital literacy is becoming staggering.
00:49:34 - Anthony Campolo
I was having the same conversation with Monarch, actually, our previous stream. We were talking about how empowering the tech is and stuff. And he was talking about this and I was saying, but people don't feel empowered. And I know that I'm very unique in how empowered I feel by AI. And that's why I've been sharing it.
My wife especially, she's a copywriter. She has a master's in writing, you know.
00:49:57 - Michael Chan
Yes.
00:49:58 - Anthony Campolo
And so she was very resistant to this stuff. But I've kind of slowly shown her some ways she can work it into her workflow, ways she can use it to help accelerate some of her work, even just as a writer, not even as a developer at all.
And she's slowly starting to get it. And now she'll just ask ChatGPT random questions and stuff. She's researching things. And it's like, you don't have to make it your whole personality. You can just find little ways to get use out of it, you know?
00:50:27 - Michael Chan
Yeah. But some of us, like, you know, make it our whole personality for a little bit.
00:50:31 - Michael Chan
Yeah, totally.
00:50:33 - Anthony Campolo
That's me. 100% me.
00:50:38 - Michael Chan
Yeah. I mean, I did have a React podcast for like three years, so.
00:50:43 - Anthony Campolo
That was a good one to hitch yourself to.
00:50:49 - Anthony Campolo
I mean, my bet on Redwood was in large part a bet on React. Even if by just investing in the React framework that failed, I still won.
00:50:59 - Michael Chan
Yeah.
00:51:02 - Michael Chan
Man, it's so crazy just how much... It's so wild. Let's talk about frameworks for a second.
[00:51:13] - Anthony Campolo
How little or not little do you care about RSC?
00:51:17 - Michael Chan
Oh, RSC.
00:51:21 - Michael Chan
I think.
00:51:22 - Anthony Campolo
I cared about it so much throughout 20...
00:51:25 - Michael Chan
Ten years ago.
00:51:25 - Anthony Campolo
That I could not possibly care about it in 2024, and everyone seems to insist on still caring about it. I was like, guys, we're past ten.
00:51:34 - Michael Chan
Now I know.
00:51:35 - Michael Chan
Yeah, I think it's interesting. I really like the intention of what they're trying to do. I think that JavaScript is the only language that can actually be full stack.
We talk about full stack this, full stack that. What is full stack? Is this full stack? Is that full stack? JavaScript...
00:52:02 - Michael Chan
Is the only language that could make a podcast.
00:52:05 - Anthony Campolo
About full stack. That'd be cool, right? So we should totally do that in 2024.
00:52:16 - Michael Chan
It's true, it's true.
00:52:19 - Michael Chan
Yeah, and JavaScript is the only one that can do it, right? Because everything has to eventually hand off to JavaScript. The idea that you don't have JavaScript, it's kind of like, there just aren't actual sites that don't use JavaScript anymore.
And I think the big thing for me is, you actually can't build strongly accessible UIs without JavaScript. The primitives don't exist for you to be able to build those. And so that's kind of the baseline. We're talking about building a web for all, and for all means we have to use JavaScript to make something on the page accessible to other people. That's the baseline for me.
And so at that point now it's like, okay, how much do I care about only ever writing one language? I guess at a minimum you have to write HTML, CSS, JavaScript, and SQL.
00:53:27 - Michael Chan
And so the question is, do I want to add one more language to that on the back end?
00:53:32 - Anthony Campolo
I've never really written SQL. Some of you just use Prisma, and if you use Prisma you can use all these other, the Drizzles and the Kyselys and the whatnot, whatever the kids are into these days.
00:53:45 - Michael Chan
Yeah, that is true. Because that's just JavaScript.
00:53:51 - Anthony Campolo
To a certain extent. Some of them insist on giving you a JavaScript interface to stick a SQL string in, which I always thought was super silly.
00:53:59 - Michael Chan
It's so stupid. Yeah, I gotta say, I really do hate JavaScript ORMs. I've had a number of questions with the online personas of JavaScript ORMs and it's all stupid. It's all so stupid.
00:54:17 - Anthony Campolo
The only reason why I was able to get into Prisma so much is because Redwood built a whole framework around Prisma, right?
00:54:22 - Michael Chan
Yeah, yeah.
00:54:22 - Anthony Campolo
Every single issue people have with Prisma, the Redwood team spent two years having already fixed. So I understood why everyone hated it, but at the same time I was like, well yeah, it's because you're using it the wrong way. Why didn't you have the creator of GitHub hire a team of people and figure out how to use it for you? Huh?
00:54:41 - Michael Chan
Yeah. So tell me the value of Prisma for you, then?
00:54:49 - Anthony Campolo
It just let me work with a database at all without needing to know how the database worked, or ever write a single line of SQL. That was the value.
00:54:59 - Michael Chan
Yeah. And it would...
00:55:00 - Anthony Campolo
Just get that stuff into the database. And because I would have a UI that was built out in React components that would then speak to Prisma, but the Prisma was being scaffolded through a GraphQL API. So I wasn't writing any of the Prisma.
Well, that's not true. You write the Prisma model, but then after that, you don't write any of the other stuff to actually work with the back end. The resolvers get written for you automatically with Redwood.
So that was the thing, you wouldn't actually write any Prisma code because Redwood generates the Prisma code for you based off, right?
00:55:33 - Michael Chan
Based on the models.
00:55:35 - Anthony Campolo
You know your data models, you should be able to do the data modeling. That's different from writing SQL.
00:55:39 - Michael Chan
That is true. Yeah.
00:55:41 - Anthony Campolo
Which is hard. Don't get me wrong, but you can't get past that. I mean, maybe with LLMs you can say, "I want a blog for the user and a comment." It'll data model that for you all day, every day. So that's probably the case now.
00:55:56 - Michael Chan
That is true. I know I was talking with, when I was at React Conf, I was hanging out with Sam Selikoff and I captured a rant of his, which is about the has-many-through polymorphic relationships.
00:56:14 - Anthony Campolo
And I had to ask ChatGPT to explain the difference to me, and it actually was able to, because I saw you guys arguing about this on Twitter.
00:56:22 - Michael Chan
Nice. How did it clarify it for you?
00:56:27 - Anthony Campolo
Well, it clarified it. It required a whole blog post to explain, so it was not simple. I don't even remember, but I could probably pull up and see if it's in my ChatGPT history.
Let's see. Tell me about the other conferences you've been to. I've missed the whole conference season this year.
00:56:47 - Michael Chan
Oh yeah, I went to React Miami, went to React Conf, I went to Epic Web.
00:56:58 - Anthony Campolo
That was the Epic Web Dev framework conference that Kent put together.
00:57:05 - Michael Chan
Yeah, it was fun. He made a really good lineup of speakers. It was really fun.
00:57:15 - Anthony Campolo
That's great. I mean, I've been to conferences he's run. He did Remix Conf. So yeah, it made sense to me. Why don't I just make my own conference, you know?
00:57:25 - Michael Chan
Mhm.
00:57:27 - Anthony Campolo
Okay. Let me show you this. I got it right here. Share screen.
00:57:35 - Anthony Campolo
Boom boom boom boom. All right.
00:57:39 - Anthony Campolo
Database modeling, especially in the context of relational databases, the many-to-many and has-many-through are related but serve different purposes.
Let's see. A many-to-many relationship is a direct association, where multiple records in one table can be related to multiple records in another table. This requires a join table.
Whereas has-many-through is more explicit and versatile. It involves three models with an intermediary model. The join model serves as the connection between the two, so it involves a model, the join model, instead of a traditional database...
00:58:15 - Michael Chan
Table.
00:58:16 - Anthony Campolo
Join table. That makes sense to me. And then it writes me a little code, which is super useful because it's in Ruby, which I 100% know how to write and definitely have created many applications in.
00:58:32 - Michael Chan
Yeah, because the whole point is, you don't have any... let's see, what is a good example?
Yeah, like a teacher. So in that example, a professor doesn't have students. It has students through the courses that they offer. A professor only has courses. I think that's what it's... let's see.
00:59:00 - Anthony Campolo
Do you read Ruby? You used to write some Rails back in the day.
00:59:04 - Michael Chan
Yeah, I mean, this is just like, it shouldn't be too much different than Prisma, right?
00:59:12 - Anthony Campolo
This sucks. No, this looks nothing like Prisma.
00:59:15 - Michael Chan
No, but the concepts are there, right? So you have a student model and that model has many enrollments. So a student enrolls in or has enrollments. So that would be the table, right?
And then they have many courses through enrollments. It seems like a weird example, but...
00:59:44 - Anthony Campolo
Take that. Give me a simpler example. Authors and books.
00:59:58 - Michael Chan
Okay. I love that you can just pick up where you left off on these. It's so cool.
01:00:02 - Anthony Campolo
Yeah, absolutely. Okay, so is this easier? Okay, now this makes sense to me.
01:00:13 - Michael Chan
Because this author has authorships. These are so confusing. Do it like a doctor with patients through appointments.
01:00:33 - Anthony Campolo
Okay, I can't really read what I'm writing, but it's close enough. There we go.
01:00:43 - Michael Chan
All right. I guess we could have stuck with students, but yeah.
01:00:53 - Anthony Campolo
Yeah, I think I kind of get the gist.
01:00:55 - Anthony Campolo
I see a couple examples.
01:00:57 - Michael Chan
Yeah, so a doctor has many appointments, right? They have a bunch of slots possible that someone could be filling. And then they would see patients through those appointments.
01:01:11 - Anthony Campolo
Right.
01:01:12 - Anthony Campolo
Okay.
01:01:13 - Michael Chan
And so then a patient has an appointment and then they have a doctor through an appointment because that doctor could reasonably be reassigned. Like maybe the doctor's out sick, and so they put another doctor in to fill that spot. And so then appointment belongs to the doctor and patient. Yeah.
01:01:33 - Anthony Campolo
Cool. Look at that. Chan has just taught me some Ruby. That is literally the first Ruby code I've ever read in my life. I've never read Ruby code before.
01:01:45 - Michael Chan
It's so funny, though, because I feel like the Prisma model syntax is kind of based on trying to get to that level of simplicity. Sure.
01:01:54 - Anthony Campolo
Yeah, I just need a second to orient myself with a language in general. Oh, for sure. Looks like gobbledygook the first time I look at it, you know.
01:02:05 - Michael Chan
One thing I can never read, because I think the syntax is so close, or some of the syntax is so close to JavaScript that it kind of short circuits my ability to unlearn enough to read it, is ClojureScript or like Clojure, right?
01:02:22 - Anthony Campolo
I can imagine, because ClojureScript especially is meant to be like... I've never really messed with either of those. The closest thing I ever got to was Scheme. I did a little bit of Scheme.
01:02:32 - Michael Chan
Oh, yeah.
01:02:34 - Anthony Campolo
Sure.
01:02:35 - Michael Chan
Yeah. I feel like Scheme is kind of like the Ruby of Lisp languages, right? Where it's kind of like a spec language for Lisp.
01:02:42 - Anthony Campolo
Yeah.
01:02:43 - Anthony Campolo
Super minimal, super readable. But once you get into it, you're just throwing stuff all over the place. So what's up with PHP?
01:02:53 - Michael Chan
Dude, PHP is hot right now. I think people got wise to the fact that in JavaScript, literally everything is a service. You spin up an app and you are in a pipeline now.
01:03:10 - Anthony Campolo
So true.
01:03:11 - Michael Chan
Yeah, which is kind of a bummer. It's interesting. Cloudflare is doing a bunch of stuff that you could reasonably do a full-stack Cloudflare app now, which is kind of cool, but on technologies that feel like web technologies versus AWS.
01:03:28 - Anthony Campolo
I've certainly consolidated on Cloudflare. I run my websites on Cloudflare Pages, I got my domains on Cloudflare, I've got R2 for just some PDFs or images. I run my images through R2.
I wouldn't call it full stack. I don't use D1. I don't have a database for any reason yet, but it's there when I need it.
01:03:49 - Michael Chan
Yeah.
01:03:49 - Anthony Campolo
And I worked for a Cloudflare competitor for a whole year, Edgio. And the whole time I was working there, I was trying to run my site on Edgio and I was like, man, this is trash. Like, I'm working for the enemy. This is just not as good. Cloudflare is so much better.
It's a bummer. Good people there at Edgio, no hatred towards it, but Cloudflare built a better product. I'm sorry.
01:04:15 - Michael Chan
I mean, it's tough, right? Cloudflare definitely seems like, they're already a public company and they've got the momentum. They have the resources to just watch and see what happens and then kind of hit hard, strike fast. And like D1, there's a lot of startups around SQLite.
01:04:40 - Anthony Campolo
SQLite, like I did an interview actually when I was at Remix Conf. I interviewed Glauber and Igor, the one who did D1 at Cloudflare. I moderated a conversation between those two. So I've followed this SQLite edge trend diligently as it's been happening. It's very interesting.
01:05:05 - Michael Chan
It's so cool. And I think ultimately it all comes down to business and support and trust. I think there's absolutely enough market for multiple people to win.
But you end up having to differentiate yourself on non-technical things, right? At some point the product is technically good enough, and the thing that you differentiate yourself on is the service and the reliability and the fact that customers trust you and all that kind of stuff.
It's funny because it all kind of comes back down to marketing, right? That's the world we're in.
01:05:54 - Anthony Campolo
Yeah, man. Cool. Anything else you want to talk about? We can kind of start closing it out.
01:06:00 - Michael Chan
Yeah. I love the direction of the thing that you're building because there's a handful of products I know. Like Cassidy was working on something. I think they pivoted a little bit into a different direction.
01:06:14 - Anthony Campolo
I do remember she joined an AI company that was about repurposing content. So that's very similar. Yeah.
01:06:20 - Michael Chan
Yeah. And then I think Chris Sev made VideoTap and all that. It's really interesting to see how these content machines work from text.
I think the thing that I'm still very interested in trying to figure out is making that a two way conversation, right?
01:06:44 - Anthony Campolo
Like between the video and the text?
01:06:46 - Michael Chan
Yeah, for video specifically. Because the thing is I have tried, I have paid for...
01:06:53 - Anthony Campolo
What do you know about Blender?
01:06:57 - Michael Chan
I don't know much about Blender.
01:06:59 - Anthony Campolo
So I got a buddy. We're working on a project right now.
01:07:02 - Michael Chan
With 3D Blender?
01:07:04 - Anthony Campolo
I think so. Pretty sure it's the same Blender, but he's doing most of the back end right now. I can't talk about this too much because it's kind of a secret project we're doing.
But basically, imagine if you took a short story and then turned it into both an audiobook and a visualized image for each line of text. So it kind of creates a visual audiobook, essentially, for a short story.
He's generating videos and it's coming from text. So he already has some sort of connection here between the two that I don't quite 100% understand. So I need to get you two involved in the conversation.
His thing is not yet public, and I'm trying to get him to make it more public. It might be harder to do it on a stream, but at some point, you two should really chat about this. I think you would have a very interesting conversation.
01:07:56 - Michael Chan
Yeah, I think that'd be fun. I think that's the piece, because we're seeing a lot of that stuff happen in code. VS Code is a perfect example of this, or Copilot, right? I open up my editor, I have VS Code, I can kind of start that conversation in the midst of the work.
I think it'd be nice, that's the piece that I kind of want to connect a little bit more of. Like, okay, so I'm in DaVinci Resolve and I want to basically start a conversation with an AI model where it's like, hey, identify some clips for me. And then it just puts different color markers for like, oh hey, this would be a good clip.
01:08:45 - Anthony Campolo
Right. We're really close. I feel like I already have that. It's just not integrated with the tool. And that's what you're saying. I already have that, I just have to figure out how to feed it to the tool. That's basically what you're saying.
01:08:56 - Michael Chan
And I know that specifically, now we're in the weeds, but specifically DaVinci Resolve kind of interfaces via Lua. You can program it via Lua. I haven't done enough to know anything about that.
01:09:11 - Anthony Campolo
You know who knows how to program in Lua? ChatGPT.
01:09:14 - Michael Chan
ChatGPT knows how to program Lua. Yeah, so it's like, how do I pipe this as a marker into DaVinci Resolve?
01:09:27 - Anthony Campolo
I'm gonna make that my weekend project.
01:09:31 - Michael Chan
That'd be so cool. I would freaking love to see that. That would be amazing.
01:09:35 - Anthony Campolo
Lua DaVinci Resolve thing.
01:09:41 - Anthony Campolo
All right, cool. Yeah, we'll see where I go with that. Cool, man. I'm gonna run this episode through the tool, see what we get. Feel free to share this in your layoff log if you would like.
Yeah, this is super fun, man. Really glad to chat with you. I wish you best of luck. Let me know if there's any way I can help out in your job search or anything like that. I think I already gave you a testimonial online, so.
01:10:08 - Michael Chan
Yes. Thank you for that, I appreciate it.
01:10:11 - Anthony Campolo
That's 100% meant. You're definitely a good catch, though.
01:10:18 - Michael Chan
Well, thanks. It's been an eye opening adventure. And I hope that everything goes well with this and with your independence. I think I've always wanted to do that. So I'm curious to see how that ends up going for you.
01:10:31 - Anthony Campolo
The first step is marrying a wife with a job.
01:10:36 - Michael Chan
That makes a difference for sure.
01:10:38 - Anthony Campolo
Yeah. I'll make some money though, so it's going cool.
01:10:46 - Michael Chan
Well, dude, it's so good to see you. Always good to see you.
01:10:49 - Anthony Campolo
Yeah. And thank you, Mike, for being out there. And anyone else, if people are lurking and watching, thanks for joining. We'll catch you next time. Peace.
01:11:00 - Michael Chan
Peace.