
Teach Jenn OpenAI Whisper with Anthony Campolo
Anthony Campolo joins Teach Jenn Tech to demo Whisper.cpp for AI transcription, discussing broader implications of AI technology in content creation
Episode Description
Anthony Campolo teaches Jenn how to use OpenAI's Whisper model for free audio transcription and they troubleshoot her Astro website's database integration.
Episode Summary
In this episode of Teach Jenn Tech, Anthony Campolo returns to walk Jenn through using OpenAI's Whisper model for audio transcription. The conversation begins with a broad overview of AI, including a demonstration of ChatGPT's capabilities compared to Google search, a discussion of the AI safety and alignment problem, and practical advice about focusing on what AI can do rather than its limitations. Anthony then guides Jenn through running Whisper CPP on her machine, showing how the C implementation transcribes audio in under a minute compared to the Python version's five-minute processing time. They examine the output quality, noting that while Whisper misspells Jenn's name and misses a few terms, the technical content transcription is remarkably accurate compared to free alternatives. The episode shifts when Jenn shares her ongoing struggle building her personal website using Astro with a Prisma-connected PostgreSQL database. Anthony identifies a key architectural mismatch: her Astro template uses Content Collections, which are designed for markdown files, not database queries. He reaches out to Astro core team member Ben Holmes in real time, confirming the incompatibility, and they begin mapping out a plan involving future streams with both Astro and Prisma experts to solve the problem properly.
Chapters
00:00:00 - Introductions and Setting the Stage for AI
Anthony Campolo rejoins Teach Jenn Tech for his fifth appearance, recapping their previous episodes together. The two catch up briefly, with Jenn noting they're approaching the one-year anniversary of their first stream together, and Anthony encouraging her to reflect on how far she's come as a developer.
The conversation transitions into the day's main topic: OpenAI's Whisper transcription model. Anthony frames it within the larger AI landscape, starting with a live demonstration of ChatGPT. They compare how ChatGPT handles a definition request versus Google, showing that the chatbot understood the intent behind "What is AI?" while Google merely expanded the acronym. Anthony also explains the importance of iterating on ChatGPT responses rather than accepting the first output.
00:07:45 - AI Safety, Alignment, and the Limits of Prediction
Jenn asks whether AI will take people's jobs and eventually become dangerous, prompting Anthony to explain the AI safety and alignment problem. He describes the concept of the singularity, where a superintelligent system becomes fundamentally unpredictable because humans lack the cognitive capacity to model something smarter than themselves, drawing on the film "Her" as an example.
The discussion extends to the ethical dimensions of AI, including the challenge of encoding fair morals and avoiding bias. A viewer named Laura raises the point that AI could worsen existing systemic inequalities, and Anthony agrees, noting that models require constant human oversight to reduce biases. They briefly touch on facial recognition technology as an example of existing racist issues in tech before pivoting to the practical focus of the episode: Whisper.
00:13:35 - Running Whisper: Python Setup and Troubleshooting
Anthony emphasizes that they need to start running commands immediately because the Python transcription will take several minutes. He walks Jenn through the setup, explaining that Whisper needs audio in WAV format (hence FFmpeg) and that larger models produce more accurate but slower transcriptions. They attempt to run the Python version but hit a dependency error related to Python's SSL module.
Jenn pastes the error into ChatGPT for troubleshooting advice, and they work through multiple suggested fixes involving virtual environments and package reinstalls. After several attempts fail to resolve the Python issues, Anthony pivots to the Whisper CPP implementation, explaining that the C version is dramatically faster anyway and is the one Jenn will actually want to use long-term for transcribing her lengthy streams.
00:25:00 - Whisper CPP in Action and Evaluating Output Quality
They successfully run Whisper CPP on a one-minute audio clip from their very first stream together, and the transcription completes in under a minute. Anthony points out the output quality: it correctly capitalizes technical terms like "RedwoodJS" and "React," though it consistently misspells Jenn's name as "Gen." He notes that a simple find-and-replace fixes the recurring error.
Anthony explains the various output formats generated, including files for captioning software, plain text, and JSON. He highlights that editing across multiple formats is still a pain point, noting that better tooling needs to be built on top of these open-source models. Jenn kicks off a longer transcription of a solo stream to test the tool further, and Anthony demonstrates how feeding a transcript into ChatGPT can generate useful summaries, showcasing the content repurposing workflow these tools enable.
00:38:00 - Transcription Services, Tools, and the Open Source Advantage
The conversation broadens to compare Whisper against paid transcription services like Descript and Parrot AI. Anthony notes that Descript costs money and limits transcription hours, while most services don't disclose what models they use under the hood. He expresses a preference for open-source tools because they provide a known baseline of quality.
Jenn demonstrates Parrot AI's interface and its speaker identification features, showing how she assigns speakers to different parts of a transcript. Anthony reflects on three years of researching transcription tools and the frustration that even major podcasts still don't provide transcripts. He emphasizes that while Whisper isn't fully polished technology, it's exceptionally well-suited for someone like Jenn who needs to process large volumes of audio content without paying subscription fees.
00:44:09 - Website Struggles: Astro, Prisma, and Content Collections
The episode shifts to Jenn's ongoing website project. She walks Anthony through her PostgreSQL database schema in PG Admin, which includes tables for shows, channels, and episodes designed to organize her streaming content. Anthony suggests she should populate the database with sample data before worrying about display, and they begin entering test records.
Anthony then identifies the core architectural problem: Jenn's Astro template uses Content Collections, a feature specifically designed for markdown files, not database queries. He reaches out to Astro core team member Ben Holmes via Twitter in real time, who confirms that Content Collections only supports file-based content. This revelation explains why Jenn had been stuck, and Anthony reassures her that attempting something that turns out to be architecturally impossible is actually meaningful progress.
01:04:06 - Finding a Path Forward with Astro and Prisma
Anthony and Jenn strategize how to move forward, with Anthony suggesting they need the right experts involved. Ben Holmes shares a Prisma starter that uses MongoDB, but since Jenn is using a relational database, it doesn't directly apply. Viewer Chris suggests generating markdown files from database queries as a workaround, which Anthony finds promising.
They discover a blog post combining Prisma, PlanetScale, and Astro that closely matches Jenn's needs. Anthony maps out a plan: get Prisma developer advocate Sabin on a stream first to write the database queries, then bring Ben Holmes on to handle the Astro integration. The episode wraps with Anthony teasing a future RedwoodJS demonstration and the two tentatively planning a one-year anniversary stream, with Jenn preparing for an upcoming move to Phoenix.
Transcript
00:00:00 - Jenn Junod
To another episode of Teach Jenn Tech with my Internet big brother, Anthony. Hi.
00:00:05 - Anthony Campolo
Hello. Happy to be here. I shaved this time because I looked like a hobo on the Docker episode.
00:00:13 - Jenn Junod
Well, good, good. Good for you. What have you been up to lately? Who are you? Because I know you, but everybody else doesn't know you.
00:00:21 - Anthony Campolo
Yeah. So I am a developer advocate at Edgio, which is a deployment platform. I say it's like a combination of Netlify and Cloudflare. We have the power of Cloudflare, but the DX of Netlify is what I like to say. And yeah, I have been on this stream. I think this will be my fifth time, if you count that one time we tried to install a bunch of stuff, but didn't because there was the Vercel episode, the setup your CLI episode, the readme-driven development episode, and then the Docker episode. Now we got five in the can.
00:00:58 - Jenn Junod
Yeah. Yeah, that sounds about right. That does sound about. I feel like we need to plan for July 5th. Like, if you. Yeah, be like, hey, we streamed a year ago today. But I'm like. At the same time, I'm like, yeah,
00:01:15 - Anthony Campolo
we could do a party of our own stream.
00:01:18 - Jenn Junod
Oh, it just sounds so cringy to think about, like, what you'll.
00:01:24 - Anthony Campolo
You'll see how far you've come in a year. Like, way farther than most people.
00:01:29 - Jenn Junod
Oh, geez. Oh, that's because I have people like you and Jacob that go, yeah, you could do better.
00:01:38 - Anthony Campolo
It's good to have people who can help you, you know, accelerate.
00:01:41 - Jenn Junod
It is. It is. And y'all have, and I appreciate it. Okay, so what are we learning about today?
00:01:50 - Anthony Campolo
Yeah, I'm not sure how this came up, but we were talking on a very recent stream about transcriptions, and I had mentioned that I've been playing around with OpenAI's Whisper model, and this is like a tiny sliver of a much larger story that's happening right now with AI. So we can kind of zoom in at a couple different levels here. The main thing is that there's this company called OpenAI, which most people know of now because of ChatGPT, which is this chatbot that is smarter than any of your college professors. It's a very strange experience to talk to a robot that is so freakishly intelligent, it makes stuff up every now and then. And that's kind of what I was going to say.
00:02:29 - Jenn Junod
It might lie to you, it might lie to you, but it is pretty smart.
00:02:33 - Anthony Campolo
Never lied to you.
00:02:37 - Jenn Junod
Yeah, but you at least can blame them and get away with it. ChatGPT, not so much.
00:02:42 - Anthony Campolo
Well, I mean, so I look at it this way. ChatGPT guaranteed will lie to you somewhere between, I would say, like, 1 and 10% of the time, depending on what you're doing and what you're kind of asking it. Some people will lie to you 100% of the time, though.
00:02:55 - Jenn Junod
This is true. This is true. And for y'all that aren't aware or never used ChatGPT, I like to say the chat because I. Apparently it's a millennial thing and I'm just going to embrace it.
00:03:10 - Anthony Campolo
That's what's going to happen. Yeah, I add that to lots of things, but I call it we, me and Scott called Homie GPT.
00:03:16 - Jenn Junod
Homie GPT.
00:03:17 - Anthony Campolo
This is the homie. It does all our work for us.
00:03:20 - Jenn Junod
All right. So we can ask it. Ooh. What?
00:03:25 - Anthony Campolo
Make sure to switch to GPT4.
00:03:29 - Jenn Junod
Oh, yes. So if you want to go check this out. I'm actually paying for ChatGPT because I'm needy and I need responses right away, so.
00:03:40 - Anthony Campolo
And GPT4 gives significantly better answers. Like, it actually does make a difference.
00:03:46 - Jenn Junod
I. What I wanted to ask it, what is AI? It's giving me a very long answer. So I'm going to say explain in one sentence.
00:03:59 - Anthony Campolo
What I like to say is, write that again, but make it half as long. That's one thing I do when explaining. One sentence is good too, though. This is how you can tell you've been using this thing for a while. Because a lot of people don't understand that when you get a response from ChatGPT, you can ask it to make the response better. Some people just ask it and then get a response back. And like, this response kind of sucks. ChatGPT sucks. I'm never going to use this thing again. And it's like, yes, you gotta. You gotta work with it.
00:04:28 - Jenn Junod
It's just like a conversation. If Anthony is not going to tell me the answer, I have to ask seven different ways to be like, tell me the damn answer. Just kidding. But artificial intelligence, AI, is a field of computer science dedicated to creating machines that mimic human intelligence, such as problem solving, learning, and language understanding.
00:04:51 - Anthony Campolo
Yeah, and that's pretty good. And that's not like. And the important thing here is that if you were to look up, like, if you were to Google define AI, it would give you a dictionary definition, and that would not be this exact wording. This is not. It didn't go to a dictionary and look up a definition and then hand you the definition written in a dictionary. It actually wrote its own definition to define it.
00:05:15 - Jenn Junod
Yes. And the Google answer is AI is artificial intelligence. Yeah.
00:05:22 - Anthony Campolo
So this shows actually how ChatGPT understood you were asking for a definition of AI, not what it's an acronym for. And Google did not. So this shows right now how on the first response you got a more complete and comprehensive answer from ChatGPT than you did from Google. Now this one's going to be interesting because this might be too new.
00:05:43 - Jenn Junod
Yeah, it's too new.
00:05:45 - Anthony Campolo
It's too new. So this is the perennial problem with ChatGPT, that you can't ask it questions about things invented after September 2021.
00:05:54 - Jenn Junod
It's annoying, very frustrating.
00:05:55 - Anthony Campolo
But something you could do instead is you could take the blog post about Whisper AI, copy paste it and say summarize this article and then it would write you a summary of what Whisper AI is by being prompted with a blog article.
00:06:09 - Jenn Junod
You don't need to know if it's not too many characters.
00:06:15 - Anthony Campolo
Yes. It could take a lot. It could take, I think I'd tell you, at least a thousand words. So
00:06:21 - Jenn Junod
4,000 characters. I may or may not have messed with this a bit too much to
00:06:26 - Anthony Campolo
know that I, I summarize articles every single week for my newsletter using Chat GPT. If you read JavaScript jam.com there's always a story of the week that's usually 90% written by ChatGPT.
00:06:38 - Jenn Junod
I like it. I like it. I use ChatGPT a lot for ways to start things. And if you check out the video I did with Josh Goldberg a while back, we took a look on how to create talk Talk information, which I need to go work on later.
00:06:59 - Anthony Campolo
But yeah, there's all sorts of, lots of little things it can do. I mean, there's, I feel like people get really hung up on what you can't do with it and like really harp on its limitations. And like, it's important to know what those are. Once you know what those are, you avoid those or mitigate those and find the things it actually can do. Because the things it can do is actually quite striking if you kind of get into. You think about the sum total of every little task you do in your day to day, you know. So I think I say, like, pay attention to what AI can do more than what it can't do. After you learn what it can't do, that's really all you need to know. Just move on. Understand that the models will get better and things it can't do now, it may be able to do in the future, but you shouldn't worry about that. You should worry about what it can do today.
00:07:45 - Jenn Junod
But Anthony.
00:07:46 - Anthony Campolo
Yes?
00:07:47 - Jenn Junod
Won't AI take our jobs?
00:07:51 - Anthony Campolo
I mean, so many people, this is a pat phrase by now, but people say AI won't take your job. A person with AI might, though. So.
00:08:00 - Jenn Junod
Oh, isn't it going to, like, become and take over the world and make it really scary to live here?
00:08:09 - Anthony Campolo
This is a great question. Actually, this is what got me into AI back in 2015 is what's called the AI safety problem, which is will AI, because it's called the AI safety problem or the alignment problem. There's a couple different terms for it. Basically, will AI, once it's smarter than humans, decide to kill us all or create a utopia because it has to do one or the other. For some reason that has to do with math that they won't explain to you.
00:08:38 - Jenn Junod
And what up, Brian and Laura. Hello, Laura. Hello, Ryan. Only one or the other.
00:08:45 - Anthony Campolo
Not, you know, and I'm being, I'm being ironic there because the, there's this term called the singularity. And the idea of the singularity is that once you build something smarter than yourself, by definition you're unable to predict the future because you can't know what it's going to do if it's smarter than you because you don't actually have the ability to understand its mental model. So there's, what's this term of like, understanding that other people have like independent consciousness for. From you. There's this, there's this theory of mind. Like we, we can't have a theory of mind about a thing that is smarter than us because by definition it's beyond us. So by that definition we can't say whether it's going to kill us all or that it's going to build a utopia definitively one way or the other, or that might do something totally in the middle or it might just decide to leave. Like that's what happens in her, if you've ever seen that movie. So the, the people who worry about this worry because the fact that we cannot by definition predict what's going to happen, we can't say for sure that it won't kill us all.
00:09:53 - Anthony Campolo
So it might decide to kill us all. And we won't be able to prove that it won't. But it doesn't mean it guaranteed will kill us all. It just means it might. So that's why people are kind of super worried about it.
00:10:11 - Jenn Junod
Laura, you gave Me my first. I had to approve your message. That was fun. Yeah, yeah. And that is the downfall of AI is it could make a lot of systemic issues that we already have worse.
00:10:28 - Anthony Campolo
Yeah. And this is a good point from Laura is that part of the alignment problem isn't necessarily alliance, so it doesn't kill us all. It's align it with actual good morals and ethics and actually understand how to treat humans fairly. And it's hard to actually define that mathematically and like in a guaranteed way. So that's why these models have to constantly be watched and double checked by humans and corrected and slowly made less and less racist. So yeah, yeah.
00:11:01 - Jenn Junod
And yes, Laura, I know because we already have our. What is it called when it. The face detection. There we go. And those type of things. There are a lot of things in technology already that is not just AI, that already has racist issues. And so with Whisper. Explain Whisper.
00:11:27 - Anthony Campolo
Yeah, so Whisper is a transcription model. So a lot of the current issues we're talking about aren't really that pressing here because you don't have to worry about it hallucinating something, and you don't have to worry about using it to decide how long someone's prison sentence is going to be. Those are the things where all these societal issues start to come in. This is: you give it audio and it outputs text from that audio. So there are some issues in the sense that it's going to be better at English than other languages because it's trained overall on English data and certain types of voices. So I shouldn't say that that doesn't entirely come into play here. I'm saying that, right, different set of issues. These things are always going to come into play. But for what you're doing, you're someone who is recording audio with nice microphones for the most part and you speak English, and you are someone who will be able to benefit from this technology, thankfully. So that's an example where you are going to be kind of on the cutting edge here in terms of understanding what you can do with these models.
00:12:39 - Anthony Campolo
Now this isn't necessarily to say you can't do really nice transcription with the current tech, but you have to pay for it usually, like if you're using someone like Descript, like Descript's expensive. So if you want to be able to transcribe a lot of audio and have it be very accurate and very fast, you usually have to pay a bunch of money. Whereas I'm going to show you, I'm going to show you how to do this entirely with open source models.
00:13:05 - Jenn Junod
I'm looking forward to it. And this is also what got us to where we're at is for those who have been hanging out for a minute, know that I've been working on getting my website back up and running and automating some shit because I can't do it as a one person show. And so that's where the transcript came in. And also we may be working on this a little bit later in the stream, if we have time. We'll find out. Okay, so.
00:13:35 - Anthony Campolo
So we should not talk about anything else until we start running a command because this command I think is going to take at least five minutes, if not longer. So we should run this and then while it's running in the background, continue on with our conversation. Because part of what I'm showing you here is that there's going to be a way to do this in Python and a way to do this in C. And the way you do it in C is a little more complicated, but that's because it's going to be way faster. It's going to take like 10 seconds instead of 5 minutes to transcribe a minute of audio.
00:14:03 - Jenn Junod
Okay. I'm glad Laura is around because she's like the, the Python Queen.
00:14:08 - Anthony Campolo
Yeah, we're doing Python today. I learned how to install something with Python specifically to do this.
00:14:14 - Jenn Junod
Okay. Okay, so I will share my screen then.
00:14:18 - Anthony Campolo
Let me share this gist. Throw this up on the screen just very quickly.
00:14:26 - Jenn Junod
Yeah, I'm going to the one that is not. Because if I try to copy and paste it, it doesn't want to, but if I do it there it will. There we go. Great.
00:14:41 - Anthony Campolo
If you scroll down a little bit, we've already done some of these steps, so keep going down to where the commands start.
00:14:52 - Jenn Junod
We've done all of this except this bottom one.
00:14:56 - Anthony Campolo
Yeah, so you installed FFmpeg. That's a tool that's gonna allow us to convert if you. Because for the Whisper model, it needs to be in wave format. So you need something, a tool that can convert things from like MP3s to waves or whatever kind of file you have. So that's why you. I'm giving you FFmpeg here. And then with Python we installed the OpenAI Whisper. So let's go up to the very, the very first section and the third command here.
00:15:28 - Jenn Junod
This one?
00:15:29 - Anthony Campolo
Yeah. So with this, there's. And you see I have a comment written there. That's because there's a couple different sized models here. There's like the tiny base, small, medium, large and then large v2. Basically the larger the model is, the more accurate it is. But longer takes to transcribe. So I don't want to sacrifice any quality of transcription because it already is not going to be 100 accurate. So I want it to be as close to 100 accurate as possible. So I'm always going to go with the largest possible model they can give me because that's getting the most accurate. The problem is that means it would take me like four hours to transcribe an hour long podcast. Actually even longer than that, probably five or six or seven hours. It is frustrating from that respect. Now I gave you a one minute audio clip. Do you have that on your computer?
00:16:23 - Jenn Junod
Yes.
00:16:24 - Anthony Campolo
You're going to have to run that command in whatever directory has that file.
00:16:32 - Jenn Junod
Give me a second because I'm going to move the file.
00:16:35 - Anthony Campolo
Actually, yeah, I would just pop it right in your code folder if that's where you're currently your terminal is right now.
00:16:42 - Jenn Junod
That is. Yay.
00:16:45 - Anthony Campolo
Yeah, I can see this as code on your.
00:16:47 - Jenn Junod
But should I put it in code? Well, yeah, because it does show there. Okay, cool. Convert.
00:16:51 - Anthony Campolo
Actually, let's do this. Let's make a directory called Whisper in your code folder and then let's do everything in there.
00:17:00 - Jenn Junod
Okay. Because there's a Whisper CPP in here. I'll show you guys. You guys can see my folder structure. We'll do a new folder and call it AI Whisper. We're doing it that way since there's a Whisper one already in there.
00:17:21 - Anthony Campolo
Yeah. Cool.
00:17:23 - Jenn Junod
Copy this. After I go into that folder.
00:17:28 - Anthony Campolo
So not that command. So go into this folder. Do. Do go into this folder. But the command you copied is not the right. The right command. So scroll up. So I want. So this is. So that's all the. The whisper CCP CPPs. That's. So first I want to show the Python one.
00:17:46 - Jenn Junod
Oh, okay.
00:17:47 - Anthony Campolo
Yeah, exactly. Yeah. So grab that python command. So you've already done that. You already did brew FFmpeg and you already did the PIP install, I believe. So you can skip those ones. So you're grabbing. Exactly, yeah. And then just delete that stuff after the. The hashtag.
00:18:09 - Jenn Junod
I don't. So yeah, I didn't like it because I had all this stuff in there.
00:18:15 - Anthony Campolo
Yeah, yeah. So let's see. That should. Hopefully that'll work. No. Okay, so run the command right above it again and make sure you actually installed it. Okay. And now try the other one again. Just bump up. You just go up on your Keyboard in the terminal.
00:18:43 - Jenn Junod
Yeah, I'm like, I thought I was clicked in the terminal. I wasn't. Yeah, there we go.
00:18:51 - Anthony Campolo
Okay, so you have an issue with your Python.
00:18:57 - Jenn Junod
Python, come on, we can be friends.
00:19:01 - Anthony Campolo
So I would have no idea how to fix this. So I would copy paste that whole error into ChatGPT and ask it to fix it. Unless Laura knows what to do. Because it looks like you. It's something to do with your version of Python. It's saying this is example on purpose says URL lib3 version 2 only supports open SSL 1.1.1 currently SSL modules compiled with Libra SSL.
00:19:36 - Jenn Junod
Yeah, well, chat GPT. See if you can figure out how to fix this. Click the plus sign. Make sure you use four to fix this error. And what were you saying about the quotes and stuff? Because I can do a single quote and it figures it out.
00:19:54 - Anthony Campolo
Okay, then that's fine then just. It's, it's.
00:19:57 - Jenn Junod
I was like so confused by like, I can do this. And it's like, happy,
00:20:09 - Anthony Campolo
Open up here. Let's see this major Python environment has in. Yeah, it's. And this is. I, I know this is the issue is the question is how to fix it. Okay, that's one thing. All right, that's another one. Okay, let's try option one.
00:20:39 - Jenn Junod
Oh, yay. Well, hopefully it doesn't end up being, you know, a 45 minute stream of yay. It was quick. Okay, so we are going to do.
00:20:57 - Anthony Campolo
There was another step though.
00:21:00 - Jenn Junod
No, it said option two.
00:21:01 - Anthony Campolo
No, there's two steps there.
00:21:07 - Jenn Junod
It's not going to work. At least maybe this one. It will.
00:21:13 - Anthony Campolo
Before you run this. You can't run this right here. Hold on. Or actually maybe you can do it. See what happens there.
00:21:20 - Jenn Junod
It ran.
00:21:20 - Anthony Campolo
Then restart this terminal as well just to make sure that takes hold. How do you like hyper?
00:21:30 - Jenn Junod
I like it. I can actually see things. It's nice. Let's see cd, AI whisper. And we're going to do this one. Yep.
00:21:52 - Anthony Campolo
No, try option two. If it doesn't end up working, it's not the end of the world. If we can get the C1 to work. Because the only thing I wanted to show is that this would take five minutes. In general, that might be good. In general, the C1 is the one you're actually going to want to use. This is more of an example that I wanted to show, to show why not to do this. So if we can't get it to work, it's not the end of the world.
00:22:22 - Jenn Junod
But is it? I'm just gonna try.
00:22:25 - Anthony Campolo
Try that one. Yeah, sure, yeah. Two commands there, so you should copy each of them independently.
00:22:31 - Jenn Junod
Yeah, yeah. I don't have pip.
00:22:35 - Anthony Campolo
Yeah, and this is, I don't know, Python virtual environments and stuff like this. That's why the commands I had are like that, where they have Python 3 stuff in there. So you're still not Python conversant enough yet to get a virtual environment?
00:22:51 - Jenn Junod
Well, I had to stop on Python to stick with something and I did. Sticking with typescripts.
00:23:03 - Anthony Campolo
Let's see what happens with this.
00:23:06 - Jenn Junod
We'll find out.
00:23:07 - Anthony Campolo
Probably.
00:23:08 - Jenn Junod
Tell me. No pip.
00:23:09 - Anthony Campolo
Oh, yeah, this. So this is what getting a virtual environment set up. So now let's see if the command actually works.
00:23:17 - Jenn Junod
Well,
00:23:21 - Anthony Campolo
yeah, just try running that command again.
00:23:24 - Jenn Junod
I'll try installing.
00:23:27 - Anthony Campolo
You need to go all the way back to Python 3 on the line above.
00:23:30 - Jenn Junod
Ah, thank you. Okay, so let's go back to more time. This one. Hey, I didn't get an error.
00:23:54 - Anthony Campolo
Yeah, that's not correct though. That should have started transcribing, so.
00:24:01 - Jenn Junod
Okay, well, let's try this.
00:24:12 - Anthony Campolo
I think you're installing Python inside a Python virtual environment now. I'm not entirely sure. We'll see.
00:24:21 - Jenn Junod
Well, that's fun. And then we'll do this and see if it actually.
00:24:29 - Anthony Campolo
Don't forget those extra things on the end.
00:24:31 - Jenn Junod
Oh, damn it.
00:24:32 - Anthony Campolo
I don't think those actually matter though.
00:24:35 - Jenn Junod
Well, I don't like it.
00:24:36 - Anthony Campolo
It's the same error
00:24:40 - Jenn Junod
enter. Yeah. No. Okay.
00:24:43 - Anthony Campolo
Okay, so let's. Let's just do the Whisper one then. So take. So go back to your folders and open up. Yeah. In your finder. So grab that MP3 and then drag it into whisper CPP. Yep. And then open whisper CCP and then drag it into Samples specifically. And if you look at samples right now, there's a file called jfk. That's the example they get. But I wanted to have a cooler teach Gentex example we can transcribe.
00:25:24 - Jenn Junod
You didn't want to do. Is this the one? No, it's not the one that you did a funny intro.
00:25:32 - Anthony Campolo
No, it's not that. That probably would have been better, but this is. This is our first interaction on stream. It's cute. So now you want to get into the. That Whisper CPP directory specifically.
00:25:46 - Jenn Junod
Okay, so. Oh, Whisper. And then Samples. Right.
00:25:56 - Anthony Campolo
No, so I just wanted for that in the commands. So then go back to the gist.
00:26:02 - Jenn Junod
Okay, let's. I feel like we can put these side by side again. Yay.
00:26:07 - Anthony Campolo
So grab that whole FFmpeg. So we did all four of those steps should already be done, right? Did you do these already?
00:26:14 - Jenn Junod
Yeah.
00:26:15 - Anthony Campolo
Okay, great. So then do this one and what that's. Sorry. To do that command, you need to be in the samples directory. So go into samples now. Yeah, exactly. Then run that. Yep. And then pop back out. Just do cd period.
00:26:40 - Jenn Junod
Great.
00:26:40 - Anthony Campolo
And then run that big command, the next one in the gist. What this is going to do is this is going to output a whole bunch of different formats. Hopefully this works. Not we're screwed.
00:26:58 - Jenn Junod
Well, it'll think about it. Hey, Chris, we might work on some database stuff today too.
00:27:04 - Anthony Campolo
Open that up wider real quick.
00:27:08 - Jenn Junod
Oh, it's when I couldn't like say, oh, look at how adorable it was.
00:27:15 - Anthony Campolo
Yeah. And so. And you see how this is taking. That took like less than a minute. You know, if we'd done it with Python, it would have taken about five minutes. So that's, that's why I say like, if you're transcribing hours and hours of text, like you're talking about an hour versus 20 hours of time to do that. So you don't need to copy paste this. This. It dumped this.
00:27:35 - Jenn Junod
No, I'm files. Are you gonna ask it to remove the time codes? I'm just curious.
00:27:41 - Anthony Campolo
That's what I'm saying. Printed a bunch of it made a bunch of files for you already.
00:27:46 - Jenn Junod
Oh, that's cool. I still want to know if it can do it. Now I'm just curious if it can do it. Like if it's smart enough to do. Is.
00:28:00 - Anthony Campolo
Yeah, it's good for these data munching tasks.
00:28:03 - Jenn Junod
Look at that. That was fun.
00:28:06 - Anthony Campolo
If we actually look at what's output, we'll notice it's making one big mistake here, which is that it thinks Jen is G E N instead of J E N N. But what's nice is it does that consistently. You could do a find and replace to fix all of those at once. But then aside from that, we see some of these terms here. It knows what RedwoodJS is. It knows to capitalize Redwood and JS. It knows what React is. It knows to capitalize React. It got Vercel wrong, which is kind of interesting, but this is almost entirely accurate. And if you've ever used transcription, like free transcription services in the past, especially for technical content, usually it's much, much worse than this. So the first time I used this, I was pretty shocked by just how little modification it required. If you compare this to something like YouTube automatic captions, it's a night-and-day difference.
00:29:04 - Jenn Junod
So Teach Gen. I'm not surprised that I probably said
00:29:08 - Anthony Campolo
that I said that.
00:29:10 - Jenn Junod
Oh, you. Okay, well, you know, whoever.
00:29:12 - Anthony Campolo
That's why I asked. Is this a swear Friendly stream first?
00:29:16 - Jenn Junod
Oh, well, yeah. Yeah. Oh my gosh. I can't believe it's been. It's been 11 months today. 11 months. Oh my gosh. That's so fun. And I think I'm gonna hit over 100 episodes. I think that's sweet bananas. Okay, so if I'm just curious. Do, do, do you do.
00:29:46 - Anthony Campolo
I tried something fun because I ran. I ran this beforehand and transcribed the same thing. And then I asked ChatGPT to summarize it and it wrote this summary. If you want to put that on screen.
00:30:01 - Jenn Junod
Look at that.
00:30:03 - Anthony Campolo
So then, so this is where it's pretty cool. You start seeing some of the workflows you can start to create is that once you can take your video and dump a large scale transcription, even if there's kind of like some small mistakes in there, you can still generate summaries and you can take chunks of it and compress it down to smaller chunks. And so it gives you just the ability to create a much larger content farm and ability to put out lots of content based on a single video or podcast if you're just an individual by yourself. Because there's like some podcasts where there's like whole teams of people that are going through podcasts and like taking clips and like transcribing it and then writing little, creating little short videos or creating TikToks. And so there's like, there's so much stuff you can do with audio content or streaming content that just requires time. And this really can allow you to take huge chunks of this content and create lots and lots of different smaller pieces of content off of it.
00:31:07 - Jenn Junod
I am going to go test again, But it probably doesn't like spaces, so I'm not going to do spaces. I don't want to delete letters though. Another trucker. Okay, we're just gonna.
00:31:30 - Anthony Campolo
It's also worth pointing out though that in this, in the summary that I provided, since it's getting a fairly small amount of context, it's actually confused about what we were saying. It thinks that when I said you combine the two, it would have been teach gen shit, not Teach Jenn Tech. So it doesn't quite understand that reference. But that's partly because it's like trying to parse like us making like humor with each other and robots don't quite understand. Yeah, the jokes yet, but they can. I can get chat GBT to detect irony, which I find to be super fascinating. It's a. So, so I gave it a. A phrase where I said I made some comment on Twitter once. I was like, how dare you.
00:32:16 - Jenn Junod
Hold on.
00:32:16 - Anthony Campolo
I have. I have this written down exactly in a. In a gist. Some. Somewhere. So I said, how dare you discredit my unjustified slander? And so obviously that's a. That's a joke because slander by definition is something that should be discredited because it's slander. And so it says when someone says, how dare you discredit my unjustified slander? It's important to note that the statement can be taken seriously or sarcastically. In a serious context, person might genuinely feel offended that you question their false accusation. And in a sarcastic or ironic context, the person might be admitting that their accusation was baseless and acknowledging that you have disproven them. So that. That was. I was just reading ChatGPT basically responding to that. So I found that really fascinating that it actually is able to detect things like irony and kind of get into. Like, what do people mean by things they say
00:33:13 - Jenn Junod
I did. I think I did the wrong thing.
00:33:15 - Anthony Campolo
What are you trying to do right now?
00:33:17 - Jenn Junod
I didn't correct the wave form in it. I need to. Yes, yes, that is probably true. I need to change the file and I forgot to change the file. I guess. I guess there. Okay, get up and unity and I. Will you let me type right here? So if I already have it in a wav file, I don't need to do the first step, right?
00:33:54 - Anthony Campolo
Correct. Yeah, yeah, that. The FFMPEG stack step was specifically just for that. Make sure you got the exact same.
00:34:04 - Jenn Junod
Oh, no, it's. It is the exact same name. It's not the right folder, right?
00:34:11 - Anthony Campolo
Yeah. If it's not in the samples folder, then you gotta fix that.
00:34:14 - Jenn Junod
I will get there. What folder did I call?
00:34:17 - Anthony Campolo
Yeah, this is not the most DX suite kind of exists like you since we talked about this, just kind of randomly off the cuff. Like this is a blog post. I'm like 20% complete with. So there's a lot more stuff I was gonna do to make this kind of nicer and make it simpler, but for now these are just like the RAW commands. If you want to understand what's going on, start playing around with this yourself.
00:34:41 - Jenn Junod
Okay. So I. I should look how long this stream is. How long was the stream that I
00:34:48 - Anthony Campolo
picked up beat me.
00:34:52 - Jenn Junod
An hour and a half, roughly.
00:34:56 - Anthony Campolo
Yeah. So that could take. I'm curious My time. But. And it looks like you start with no one saying anything for five minutes. Five minutes. Okay, so it's gonna be playing.
00:35:06 - Jenn Junod
It was like the. The window. The window. That or you know how it does a countdown.
00:35:12 - Anthony Campolo
Yeah. What. So what. What do you. What did you feed it?
00:35:16 - Jenn Junod
One of my videos from like two weeks ago. Well, one of the audio from one of the videos from two weeks ago.
00:35:22 - Anthony Campolo
Which one?
00:35:26 - Jenn Junod
Sniffles Jen makes tech queries for my database. Queries for my.
00:35:33 - Anthony Campolo
It was by yourself?
00:35:35 - Jenn Junod
Yeah, it was on Twitch. But I don't know if I ever
00:35:37 - Anthony Campolo
Another thing worth pointing out: you will have noticed when I gave you the example, it's us as two people talking and that is represented nowhere in this output. So that's kind of an issue. And there's already in the gist I provided a whole bunch of other services and other open source libraries and stuff. We're not going to look at that. They're kind of trying to. There you are. Hello. Hello beautiful humans. It's always weird when you get.
00:36:00 - Jenn Junod
Ever say that?
00:36:02 - Anthony Campolo
Yeah. You'll. You'll see. You'll start to like visually see things you say all the time. When you start transcribing lots of your own text. It's a very surreal experience.
00:36:11 - Jenn Junod
But oh my God. So we're gonna do that first.
00:36:15 - Anthony Campolo
This can be very useful because it's just you talking stream of consciousness so you don't need to worry about being confused about who's saying what and things like that. Also, I never showed you how this was creating a whole bunch of different files.
00:36:30 - Jenn Junod
I looked at it.
00:36:32 - Anthony Campolo
Yeah. So we can talk about it briefly. I'm not an expert on this. If someone like Ben Myers ever is on your stream again, he can explain these way better than I could. There's specific files for things like captioning software or if you want to [unclear]. Yeah. Yes. That's where stuff like that is. And then it also gives it to you in a text file. Gives it to you in a JSON file. There's a whole bunch of different formats. I just have it right now set to give you all of them. Most of them are probably not going to be useful to you. It's just depending on what you are doing this for and what you want the text to eventually be. And then you can figure out which format is going to make the most sense for you. This gets back into this being new tech that is still getting all the kinks worked out. You can't edit all of them at once. Like this is such a huge issue. If you want to fix things in the transcript, which you're going to have to do, and you want it to still be in all these multiple file formats, you have to edit each of those individual files.
00:37:28 - Anthony Campolo
So people need to take these open source models and actually build services on top before it's really going to become like a super duper useful transcription tool. But if you're someone who has a bunch of audio, like raw audio that you need transcribed and it's just like you just want dumped out like what you're doing right here, this is the use case it currently is really, really well suited for and will give you really high quality results for no money whatsoever. So I'm glad you picked this specifically.
00:38:00 - Jenn Junod
Is it proof that I'm going to talk to myself? Oh, this is when GitHub was down, I started streaming and I needed my website and GitHub was down. I was like, oh, well, I guess we're gonna work on something else. Well, yeah, yeah, I don't. I mean, it's moving right along. It's been what, like four minutes?
00:38:29 - Anthony Campolo
Yeah. And so that's why I, for a while I used to do this just with Python. I did like 10 or so FSGM episodes and I used to just kick it off before I would go to sleep and then I would just go to bed, come back and then five hours later it'd be done. So, so this is why I wanted to show you Whisper CPP C in particular, because the Python version is really kind of a massive bottleneck. Unless you're transcribing very, very short clips.
00:38:59 - Jenn Junod
Can you make a GUI for it?
00:39:03 - Anthony Campolo
So let me go look at some of the ones that I have actually in here and see. So Buzz Buzz looked kind of nice.
00:39:11 - Jenn Junod
You can share your screen if you want.
00:39:14 - Anthony Campolo
No, let me just shoot this over to you. Just a link to a site. There's. There's nothing interesting to see here.
00:39:29 - Jenn Junod
Interesting.
00:39:36 - Anthony Campolo
And yeah, yeah, so I haven't, I haven't used any of these yet. So this is why I say this is a blog. Like, this is a blog post I'm like 20% done with. So I have a bunch of references here. I know that these are things that are using Whisper under the hood. I have not vetted any of these tools. But just if people want to learn more, these are the ones that I know about. If you know of others, please share them. I'm like very interested in learning more about anything that's currently trying to push this stuff forward.
00:40:03 - Jenn Junod
I Think Parrot also does that.
00:40:06 - Anthony Campolo
Okay, great.
00:40:07 - Jenn Junod
I don't think I want to go to the app. Let's do just Parrot AI.
00:40:14 - Anthony Campolo
And as far as I know, Descript now is using OpenAI stuff under the hood. But again, Descript's very expensive, and so, like, I'm not. I'm not a point where I can pay like 20, 30, 40amonth to do this because I'm not making any money off of my podcast. But I. But I want high quality transcriptions because that's important to me, you know?
00:40:38 - Jenn Junod
Yeah, I can't, y'. All. I'm blind as a bat since I rearranged my desks stuff.
00:40:49 - Anthony Campolo
So this is Parrot AI.
00:40:52 - Jenn Junod
Yeah. So with Parrot, I checked it out. I liked it. It's still also kind of weird. Like, I've had to delete stuff and re. Add it because web components. So if I'm looking at this,
00:41:11 - Anthony Campolo
are you on the free or paid version?
00:41:18 - Jenn Junod
Technically, they're the same at the moment.
00:41:23 - Anthony Campolo
This says there's a personal plan for $30 a month.
00:41:26 - Jenn Junod
Oh, do they have pricing on them now?
00:41:29 - Anthony Campolo
Yeah. Oh, and this is like, this is similar. So let's go. Let's go get a Descripts pricing.
00:41:36 - Jenn Junod
I don't know, maybe I got in on time. Don't. Don't tell them. Take it away from me.
00:41:42 - Anthony Campolo
Descript's actually 12 bucks a month for creator, 24 for pro. Yeah, see, like, creator 12 bucks a month, but it's 10 hours of audio a month. Like, that's. That's.
00:41:51 - Jenn Junod
I was like, I'd go through that in like a week.
00:41:53 - Anthony Campolo
I know that that's barely anything. Yeah.
00:41:57 - Jenn Junod
The only problem I've had is I keep saying, change all to speaker one and I'll not unclick that. And I'm like, oh, oops. So let's change this one to Jen. And speaker two is. Don't change all the speaker two. Speaker two is Kiss.
00:42:16 - Anthony Campolo
Yeah. And I should mention that, like, there's a dual. There's dozens of transcription services out there, and the. The links I gave those are ones that are using OpenAI whisper in particular. There's been many transcription services that already existed and may or may not have adopted these tools under the hood. It's really hard to say for a lot of them because, like, as far as Parrot goes, like, I can't really find any information on what's actually happening in the model.
00:42:44 - Jenn Junod
So apparently I am on the free version now.
00:42:47 - Anthony Campolo
There you go. Yeah. So the vast majority of the transcription services you're going to pay for Won't really tell you what they're using under the hood. You kind of just have to use them and find out whether they're good or not.
00:42:55 - Jenn Junod
Yeah.
00:42:55 - Anthony Campolo
So I find that kind of frustrating and this is why I like that now there's an open source tool that we can use and if something's built on that, I know there's a baseline of transcription quality I'm going to get from it. So I'd be more inclined to want to pay money for a service that is building on top of that. That's kind of where I'm at right now. So. Yeah, it's this whole, this whole thing is something that I've been like researching for like three years now. And it's like so frustrating. There's like just not really many great tools that, that do this because it's such a huge problem. So many people have transcribing podcasts, like some of the biggest podcasts in the world don't provide transcripts. And that's bad.
00:43:38 - Jenn Junod
It's annoying and hard to do.
00:43:40 - Anthony Campolo
Yeah.
00:43:40 - Jenn Junod
And okay, so
00:43:44 - Anthony Campolo
it's already a half hour in. That's pretty good.
00:43:48 - Jenn Junod
Apparently I was talking about Jacob in his Twitter space.
00:43:53 - Anthony Campolo
Yeah, but you're talking about all sorts of things.
00:43:56 - Jenn Junod
I am. I'm talking to myself, basically. It's fun. Okay, so I feel like this is pretty cool. And we got a solid, like figured this out. We can let this go on in the background.
00:44:09 - Anthony Campolo
Yeah. And now. And now anytime you want to run some transcriptions, you now have the ability to do that for free. You don't gotta necessarily go out to a service. How much utility you're actually gonna get out of this will kind of vary depending on what you need these transcriptions for. I don't think this stuff is fully baked technology by any stretch of the imagination. And if you're someone who is not trying to go really deep in like running these models on your own computer, you could probably look towards just paying some money and having them do it for you. But for me, as someone who has this issue, I want to know about what the cutting edge open source stuff can do and how to use it. So I found this very useful for me to learn personally. But your, your utility will vary for others.
00:44:52 - Jenn Junod
Yeah, I say make friends with smart
00:44:54 - Anthony Campolo
people
00:44:57 - Jenn Junod
because they'll just tell you when this stuff happens. Like for example, instead of following all of these tech influencers, I just like follow people that are my friends that follow them, that retweet important information.
00:45:15 - Anthony Campolo
Dude, you, you got a powerful network by now. And I told you this was gonna happen when you first created this stream. And now we're a year in, and you can see the. The fruits of your labor.
00:45:26 - Jenn Junod
And I'm very fortunate for that powerhouse. I am very fortunate for that. And thank you. I have such cool people. Oh, by the way, I don't think I've told you this. You should look at this. Hold on, hold on. Let's go to Twitch and go to Jacob Street.
00:45:45 - Anthony Campolo
Never show my Twitch home screen on stream.
00:45:48 - Jenn Junod
I'm not.
00:45:49 - Anthony Campolo
Oh, yours is fine.
00:45:51 - Jenn Junod
I was like, I don't. I don't even pay attention to them.
00:45:56 - Anthony Campolo
Yeah, there's some stuff.
00:45:58 - Jenn Junod
What do you watch?
00:46:00 - Anthony Campolo
Oh, don't worry about it.
00:46:03 - Jenn Junod
Like, I don't want to know. Okay. Okay. Look at this. Look at this. Hold on. Look at us. Wow. And that's Chris's wife, Sarah. She plays with us now. And. Yeah, but look, I got.
00:46:22 - Anthony Campolo
I, like, dressed up as my character,
00:46:23 - Jenn Junod
and it's really fun. And she is.
00:46:25 - Anthony Campolo
So that's you. I was like, which one are you? Okay.
00:46:28 - Jenn Junod
I am so mean. It's very exciting. It's really funny. You should watch it sometime. I'm gonna share this with all of you. Not that you really were ever gonna watch it, but if you want to, it's really cool because I like the opposite of me as my character. It's so fun. Okay. That aside. Okay, we should go. Look. My website, things that I got stuck on. I think I still have it here.
00:47:04 - Anthony Campolo
Yeah, I did not go back and watch the stream, so we'll kind of have to talk out what exactly is happening.
00:47:09 - Jenn Junod
Yeah. What exactly? Oh, yeah, Chris. Like, I got even meaner. I got even meaner. I'm still like, Chris watched last week's and was like, dude, you're the opposite. I'm like, I know.
00:47:26 - Anthony Campolo
Which. Which Chris are we referring to?
00:47:28 - Jenn Junod
You haven't met this Chris yet. This Chris is database Chris, which I met at Denver Startup Week. It was a lot of fun.
00:47:37 - Anthony Campolo
Or she is he. She.
00:47:39 - Jenn Junod
Chris does not have Twitter. Chris, why don't you have Twitter? I feel like it's. You should have Twitter, but I. I have no justification other than everyone should have Twitter now. There's no.
00:47:55 - Anthony Campolo
Really Twitter. Twitter is what you make of it. You know, it's. And that we talked about this on. On my very first episode, actually. I think that if you're intentional about Twitter, you can meet some cool people, but, like, you don't need, like, a Twitter following unless you're optimizing for that for specific reasons, you know, like, Your role.
00:48:18 - Jenn Junod
There's link. It was fun. It was a very fun stream. Taught me a ton about like relational and non relational.
00:48:28 - Anthony Campolo
Oh, this is the person I told you to ask whether MongoDB is web scale.
00:48:34 - Jenn Junod
Oh, yeah. Well, now you two have kind of like introduced yourself. This is Anthony, my Internet big brother, who also kind of likes to troll my streams and my guests.
00:48:44 - Anthony Campolo
Yeah, I do.
00:48:46 - Jenn Junod
There you go. And Chris is like one of my go to database people because he knows how to break it down, but also in like a. A really good way of understanding it with real life things. And I think that's been difficult for other people because databases can be difficult to understand. Like.
00:49:08 - Anthony Campolo
Yeah, they're highly theoretical, but also highly practical because so much of what we do on the Internet ultimately lands in a database at the end of the day.
00:49:17 - Jenn Junod
Mm.
00:49:19 - Anthony Campolo
Things you don't want in a database or in a lot of databases.
00:49:24 - Jenn Junod
Okay, cool. So this should be up to date, but let me show you guys what I was up to in my last stream. This one will. And we did talk about code first versus database first. I did my databases first so I would understand them. Not that it actually needed to be built first, but I mean, it's like,
00:49:48 - Anthony Campolo
do you build your API before you build your front end? It's all. It's all the same. At the end of the day, you arrive at the same thing,
00:49:58 - Jenn Junod
it will reconnect. Thank you for reconnecting. Did I put you in. Yeah, I did put you in default and go to my tables. Okay, cool. Okay, so I created four tables and they're the format that creates. Chris and I talked about of like, so that way, you know, the channel can. And the show can go into.
00:50:31 - Anthony Campolo
Can you just click on the channel so I can see like, what is in there? Like, can you like visualize it in terms of like the data that's actually in it? Can I see it? Like, it's an Excel spreadsheet. That's the point of PG Admin, right?
00:50:46 - Jenn Junod
No.
00:50:47 - Anthony Campolo
Is there data in here already? No. Okay, then there. That's okay.
00:50:51 - Jenn Junod
But it only has. Well, it does ID and name.
00:50:56 - Anthony Campolo
And then that'll be the first thing I would say. Like, if we're. Regardless of what we're doing, you should have your data. Some data, at least a couple pieces.
00:51:05 - Jenn Junod
Right. And I can. Let me open a new. New tab.
00:51:25 - Anthony Campolo
Yes. I'm broken in your zish rc, by the way.
00:51:31 - Jenn Junod
Why. Why do you say that?
00:51:32 - Anthony Campolo
You look at the very first line.
00:51:35 - Jenn Junod
Oh, well, that's new.
00:51:38 - Anthony Campolo
Yeah, that was because you ran that Zishrc command earlier.
00:51:43 - Jenn Junod
Yeah, I'm like, that's.
00:51:44 - Anthony Campolo
That was a. That came out was questionable. So that doesn't surprise me.
00:51:49 - Jenn Junod
Okay, so I can add data in here because I do have it connected to Prisma. Yay.
00:51:57 - Anthony Campolo
Prisma Studio does is broken though.
00:52:01 - Jenn Junod
Okay, so if we wanted to add some data. Let me go back and look at this.
00:52:09 - Anthony Campolo
Like I would at least have an episode in there, you know.
00:52:13 - Jenn Junod
Okay. Add a record. We have episode one. Name. Hold on, let me not do it this way. This car changes. No.
00:52:32 - Anthony Campolo
Yeah, so there's. There's a couple questions here, which is that like there's you. How are you even going to get all this data into this database in the first place?
00:52:42 - Jenn Junod
Well, that's what I was trying to do. Well, go here, go here. Okay, so I have data in some
00:52:53 - Anthony Campolo
sort of structured format. Unless you want to write a whole bunch of SQL.
00:53:00 - Jenn Junod
No, no, hold on. Yeah, so yeah. Okay, let me just go put an episode in, please. Stand by.
00:53:10 - Anthony Campolo
Yeah, I'm still not entirely sure what. What your. Your issue even as such. Just shut up and let you.
00:53:16 - Jenn Junod
I was gonna show you, but you distracted me. But we will do this. We will do that. The channel. This is ID1. This is Teach Jenn Tech. And then save changes.
00:53:37 - Anthony Campolo
Okay.
00:53:38 - Jenn Junod
And then we're going to do. Oh no, just kidding. That wasn't right. This is a bad thing about like when you're working on it for so long and then you haven't touched it in a while. Show add record is one. And then. Okay, give me a second. I have to remember how I set this up. I'm just going to work backwards. Add a record. It's going to be episode one. What is the name of the episode? It is. AAJC web device as it has a hashtag of Anthony
00:54:55 - Anthony Campolo
episode. But this is okay.
00:54:59 - Jenn Junod
And it pulls the information from show. So like see how we were filling this out? It needs to know show id. So the show is. If I filled that one out. Add a record. It's one.
00:55:18 - Anthony Campolo
Honestly, if you didn't work for a database company, I would tell you not to use a database at all to build this website. But this is. This is fine because this is going to be a useful thing for you to have to do.
00:55:29 - Jenn Junod
I know because I would.
00:55:32 - Anthony Campolo
So just. And just. What I mean by that is that what I would do in this example for the. For your website is I would just have a bunch of markdown files. Every time you have a new episode, you create a new markdown file with all the information. Information and a link to the YouTube. And that's all I would do.
00:55:46 - Jenn Junod
Do you know that I have 70 episodes on the podcast and over almost a hundred on Teach Jenn Tech. That is a lot of data to try to keep track of.
00:55:56 - Anthony Campolo
No, I'm saying you wouldn't keep track of it. I'm saying every time you have a new episode, you make a new markdown page, and then you just do that every time you make a new episode. So if you want to do all of that in one go, there's ways you could do that. But the point is, what I'm saying is that I would want to think of this in terms of pages, not in terms of rows in a database. Now that. Not to say one is wrong or one is right. Like there's a good case to be made for.
00:56:22 - Jenn Junod
For both.
00:56:23 - Anthony Campolo
I'm just saying. Yeah, that's how I would do it.
00:56:26 - Jenn Junod
So anyway, okay, so I don't remember exactly how my database is structured. That's fine. I can figure that out again.
00:56:32 - Anthony Campolo
So what's the issue?
00:56:34 - Jenn Junod
That is not what I was stuck on. I did know this when I was streaming earlier, but VS Code. Okay, so I have my Prisma schema. Oh, hey. This actually makes more sense looking at it this way. But I got my schema set up the way that. Let me actually show you the page itself and run dev. So. Last time I was working on this, I was able to use the template to get the six blog posts, like, set up. Like, this is the template. Cool. Yay. And I got the top of it set up. I was very excited. We are making progress. And so that's the Teach Jenn Tech version. This is the full default version with blog. And I was so proud because.
00:57:43 - Anthony Campolo
And I have seen these. These websites. Yes.
00:57:46 - Jenn Junod
Yeah. And I was so proud. I'm like, yes, I got this figured out. I am on the right track. So to follow blog, what we just looked at is the blog list. This is the blog list.
00:58:05 - Anthony Campolo
Yeah.
00:58:05 - Jenn Junod
Okay, well, let me look at blog content. Okay. It's in content, it's using. All right, I'll figure this out later. And then we got a blog summary card. And I'm just like.
00:58:25 - Anthony Campolo
So your. Your question right now is, what are ASTRO content collections? That's the question you need to ask right now.
00:58:32 - Jenn Junod
Okay.
00:58:34 - Anthony Campolo
That is what is happening right now. And this is something where only an ASTRO core team member can truly help you with this. Because this is an Astro specific convention. ASTRO created their own thing to manage content. This is not something that was built for databases. This is something that was built for pulling in content from markdown files. So this is why my approach would work very well with Astro and I have an ASTRO website myself that I already do this with. What you need to do is you need to get Ben Holmes and Sabin on a stream together to explain how the hell you would do this, because as far as I know, I don't know if anyone's actually used Astro Content Collections to pull in stuff from a different database. It's a very interesting project. The fact that you're hitting this issue is quite fascinating and both of them will be very interested to hear this. So I'll say that first off, I don't know if I'll be able to make a lot of good progress with you right now on this because there's a knowledge gap here, which is that you have a template that's using something called Astro Content Collections and you don't even know what that is.
00:59:38 - Anthony Campolo
So figure out how to get that to work with a ORM is actually quite a challenging thing to do. So you want to get the right people in the room to actually ask the questions of what you even need to be thinking about to get this to work in the first place. So that's what I would kind of recommend. And I can make those introductions if you don't know those people. Those are two good friends of mine, so not very hard to get them in a conversation.
01:00:04 - Jenn Junod
I'm tweeting them right now and saying we're talking about them and I'm specifically saying that you're saying that they need to be on the show.
01:00:11 - Anthony Campolo
Yes, say that. I would also actually. Let me. Let me shoot Ben a question right now. Holmes dev, Has anyone wired up as show content collection with Prisma? He'll know exactly what I mean by that.
01:00:41 - Jenn Junod
I did Prisma with my other. I think I did. I've done. I feel like I did at some point.
01:00:53 - Anthony Campolo
Like you did what?
01:00:56 - Jenn Junod
I don't know. Now I have a lot of websites. I have to think about this. Let's go. Let's go stalk my GitHub.
01:01:01 - Anthony Campolo
Let's first.
01:01:02 - Jenn Junod
Let's.
01:01:03 - Anthony Campolo
Let's do this first so people understand what I'm talking about here. Go to Google Astro content Collections, because I'm using that term. I'm sure most people probably don't even know what that is. So let's talk about that first because that's how your site is set up. It's using this content collections. This is a way to manage an author content in any Astro project and is to Organize your documents, validate your front matter. So the fact that it's validating front matter at all should clue you into why this is made for markdown and provide automatic TypeScript type safety for all your content. So in my website, what this does is it would be able to say, hey, your meta description and your OG tags is too short or too long. That's the type of thing it can do. It can type. It's so it's like, so go back to TypeScript. TypeScript can type, check this, can type, check a markdown file, but you're trying to use a database, not a markdown file. So that's a whole different thing.
01:02:05 - Jenn Junod
So it would skip this content collection to be able to work with Prisma and go to the database.
01:02:11 - Anthony Campolo
Yeah, you could query the database directly and just display it on your page, but you'll be bypassing what your template has already set up because your template is now using content collections right now. So you could kind of, you could trash all that. Just have a raw ASTRO project and start making database queries and then figure out what to do when you get that data back. That's something you can do. I don't know if that's advisable or not. And this is why. These are kind of questions that need to be asked to both Astro and Prisma team members kind of in concert with one another.
01:02:43 - Jenn Junod
I feel like you'll need to be able to be on the show too, to like translate what I'm trying to do. Be like I'm here to translate Jen. Because it doesn't always make sense.
01:02:53 - Anthony Campolo
It's a super interesting question. Ben Holmes is like, how would you expect that to work? Which basically means I have no idea what you're talking about.
01:03:05 - Jenn Junod
Please tell him I tweeted that they're gonna be on the show. Well, that at least makes me feel better that
01:03:14 - Anthony Campolo
Okay, I'm displaying this quote I just grabbed from Ben. So we only support file-based collections [unclear]. So content collections are not made to work with databases, which is why you weren't able to figure it out. So you should feel good about that, that you're trying to do something impossible. So you shouldn't have expected to be able to figure it out.
01:03:38 - Jenn Junod
But I don't get why it doesn't work. Like, why wouldn't it work? Why?
01:03:41 - Anthony Campolo
Like, it's because this is an Astro specific convention that was created specifically to work with markdown files. That doesn't mean you can't Use Prism. But that means the template you selected is not designed well to do what you want to do with it.
01:04:06 - Jenn Junod
That's all I got.
01:04:10 - Anthony Campolo
Well, let me ask him now. Do you know of any Astro Prisma examples at all? That'll be the next question. Because if so, if this is what you want to do, which, as I say, you are for a database company, it makes sense for you to build a ridiculous project just for the sake of your work, so you can learn things. I do it all the time, learn the vast majority of things I've learned by building projects I probably shouldn't have. So don't be discouraged by that. But what you need is you need a starter that already has Astro and Prisma connected in a way that's kind of ergonomic and that isn't using content collections, Which is good. This is, this is. These are important things for you, for you to know and understand. So we are making progress right now. This doesn't feel like progress. This feels like we just went backwards, but we're making progress here. Trust me.
01:05:02 - Jenn Junod
I know I always say his name wrong, but I just tagged Ilion in the tweet as well, because this is his theme and I love this theme. I don't want to get rid of the theme. I like the theme. I'm very attached to this theme.
01:05:20 - Anthony Campolo
Let me respond to this. You didn't put a whole lot of context in there.
01:05:26 - Jenn Junod
Yes, you. Please, please fill them in. Chris said if you really want a good bad idea, you could write something to pull from your database, have it generate a markdown file.
01:05:37 - Anthony Campolo
Yeah, that's exactly what I'm thinking, is the type of starter I'm looking for.
01:05:44 - Jenn Junod
Well, this is a great moment to ask, because I was thinking that it would query everything and put it into a markdown file with the queries. And then could I, could I put, like, where would I put the transcripts? Because can the transcripts go into the database? And if they're in the database, will they actually output correctly with like, you know, the paragraphs and stuff?
01:06:15 - Anthony Campolo
Well, so once you've got something in a database that you're going to be querying and displaying, you should think about as just like strings of text at the, at the end of the day, because that's what you're going to be shoving into markdown files or into HTML, so you're going to lose a lot of the structure once you start doing that. But because you have Prisma, you can kind of write your query the way you need to so you can get the data you want. This is actually, this is a, this is where GraphQL would actually be really useful. This is partly why Gatsby kind of had this problem solved and did it without needing a database at all really. But, but again, this is just like most people who, who create websites like this, they don't have a database with all their stuff in it. They have like, they think about things from the pages level. So this is just, it's partly, it's like a different kind of mental model that you need to think about. Like what is, what are your database queries? Like what is going to be the query you're going to write in Prisma that's going to get the data you need?
01:07:22 - Anthony Campolo
And then how do you display that on the page? Page? So there's, there's a lot of ways to do that. And what I would do if I were you, I would start. So if I were Far Jen right now, this is, this is what I would do. I would first actually get all my data in a database so that I understand what the data is and what I'm actually working with.
01:07:43 - Jenn Junod
I mean, I can do that. I was stuck earlier and that's why I was like, oh, I need to figure this out first. So yeah, that's definitely something I can do.
01:07:51 - Anthony Campolo
So that's what I want to do. Because once all the data is in the database, then I can start working, working with and figure out how I actually want to display it on my page. Because until it's actually in the database, or at least just an example, like a dummy example, as long as it's structured correctly in the database. Because then I would want to query the database and I would want to just grab a JSON blob of each episode and throw that on the page. Then I would take that JSON blob I would turn into a component that looks the way I want it to look. And then I would iterate over that array to display each component in the way I want to look.
01:08:29 - Jenn Junod
I need to go back and look at this in my database that I did set up. But the way it's set up is I have the show table, which just has: which show are you doing this on? Teach Jenn Tech or shit you don't want to talk about. Then we have a channel table, which is: is this going to YouTube, Twitch? Like where is this from? Where do I watch the video on demand? Basically, also like Spotify, Apple Podcasts, blah blah blah. And then the episode would be taking the information from the show and then what is the name of the episode? So if this is Teach Jenn Tech, I would have. It would grab the show Teach Jenn Tech for show ID, whatever this ID is. And then the name of it would be building a React web app with deploying on Vite and Vercel. And then we would take that information and put it with a channel so we know where it's going with the channel. So that is the database I set up. I just didn't. This is my pretty coloring of it. Didn't know how to explain that without looking at it on my web diagram.
01:09:52 - Anthony Campolo
Okay, so Ben just gave me a link to an Astro starter that uses Prisma is a huge issue though, which is that's using MongoDB, which is not a relational database. So your whole database deal becomes irrelevant as soon as you use a. So this was Chris's episode SQL versus non SQL, right? Yeah. So you're working with a SQL database right now. She got relations and stuff. So the starter he just gave me doesn't actually get us entirely to where we want to go, but we could just rip out the schema entirely and replace it with your schema and that might kind of work after some effort.
01:10:34 - Jenn Junod
I feel like you should just like put them in a group chat and be like, look, let's do this. Really cool collab on doing this because Jen needs to learn how to use Postgres and really work with Astro and Prisma.
01:10:50 - Anthony Campolo
I mean, I've wanted Astro to have nice full stack examples. If we used redwood, actually make everything a lot simpler if I was there. But that's only because I know how redwood would fit into this whole equation. Most people would say that would make it more complicated, but I was like, I barely.
01:11:09 - Jenn Junod
No,
01:11:12 - Anthony Campolo
I'll. I'm just giving you a solution here. You can take it or leave it.
01:11:16 - Jenn Junod
I mean, the solution would be like, I really could be like, hey, does somebody want to build my website for me? I'd really appreciate it. That could be really cool. And then it would magically be done. But that's not gonna help and I don't want to learn redwood on top of all of this. Although I will say it finally dawned on me that redwood came out of San Francisco.
01:11:39 - Anthony Campolo
Kind of. It was built by a dude from South Africa and Berlin, actually. But really? Yeah.
01:11:45 - Jenn Junod
But isn't it like mainly you? Then why is it called redwood? Because I was thinking because that's correct.
01:11:51 - Anthony Campolo
That's because. So there's. There's two people. There's Tom, there's Peter, Tom's the figurehead. He's the guy who lived in Marin and has these redwood trees, like, in his backyard. He built it with Peter. Peter wrote most of the code. Peter is the South African who lived in Berlin. They worked together on an app called chatterbug, which was a language learning platform that was using Ruby on Rails as a backend GraphQL API to a React front end. And they realized that this was so painful that they needed to build an entire framework to make it a nicer experience. So then they spent five years building redwood and they named it Redwood because the first name, Chainsaw, was too violent. The second name, Hammer, was already taken, and the third name had to fit with the explanation Tom already wrote for Hammer.
01:12:45 - Jenn Junod
Okay, okay. I'm still going saying that San Francisco
01:12:51 - Anthony Campolo
Ben is saying that there's a remix example you should use and translate remix to Astro. I don't know if that's a good idea for you to do because you don't know how to use remix yet. So that's something you just tell him
01:13:06 - Jenn Junod
I really, really want him to do. Can you please just tell him I really want him to come on my stream with whiteboards? Like, I need more whiteboards in my life.
01:13:17 - Anthony Campolo
He just said, I assume you're on stream right now. I saw the SOS on Twitter. We had to tell them we're not going to figure this out right now, but that she wants you on the stream.
01:13:31 - Jenn Junod
Yep. That's a good way of saying it. That is a good way of saying it. Yeah. Yeah, it would be fun. But hey, I figured out how to make Whisper do its thing and it's done. Oh. It tells you the total time. Is the encode time or the decode time. It's full time it takes to do it.
01:14:10 - Anthony Campolo
Okay, so save is asking where the database needs here. So I'm going to say you have a database with episodes of a show. It's a relational database.
01:14:26 - Jenn Junod
I'm going to take a screenshot of my pretty thing and just be like, look, it's not going to make any sense. Very excited about this.
01:14:41 - Anthony Campolo
Ooh, here we go. Prisma and plant scale and as show. This is. This is what you need. This is the blog post. This is one of those things where there's probably only one person out there in the world who's actually created content for this specific problem you have. But this looks like the person.
01:14:59 - Jenn Junod
Yay. What up O? What time is it there? I feel like it's probably like the middle of the night. And I haven't looked at that yet I am very concentrated on resizing stuff on my mirror board. Okay, Sure. That'll work. So I'll need to write an article eventually on how to do it with Ivan. Yay.
01:16:04 - Anthony Campolo
No, this is. This is actually. That's gonna be great quality content. Because Astro is blowing up right now. You should be on the Astro train and creating this type of content for Ivan. So this is like. This is. This is great stuff.
01:16:18 - Jenn Junod
Oh, it's already like I'm focusing because I'm like, why Prisma talks about Ivan, but Ivan doesn't talk about Prisma. And I'm like, what? We need more Prisma in our life. Prisma is.
01:16:29 - Anthony Campolo
Everyone needs more Prisma in their life until drizzle takes over. Okay. I just responded to Saen and Ben. Yeah. I'm not sure if Saban probably won't be able to help too much because the issue more so is once we have the Prisma queries written. Well, I guess that. Do you. Would you know how to write a Prisma query that would return the episodes?
01:17:10 - Jenn Junod
Like, I mean, that's going to be easy enough to Google and figure out like how to pull the information to query the information.
01:17:20 - Anthony Campolo
Yeah. Because that's. That's what Saban could help with. And then actually displaying it on the Astro stuff. That's where Ben would come in. And Ben use Prisma. So we probably don't necessarily even need Saban on the stream.
01:17:33 - Jenn Junod
Yeah, but we now have said it. And Saban already said he'd be on the stream someday, so.
01:17:38 - Anthony Campolo
Yeah, you have saving on regardless. I'm just saying for this specific problem, you might not necessarily need him. Yeah, great. He says dope. I'm here to help a few hit a snack. Oh, I know you are saving because he's saving the world.
01:17:54 - Jenn Junod
He is.
01:17:55 - Anthony Campolo
That's his email. Saving the world.
01:17:57 - Jenn Junod
Good. Yes, yes. So many dope humans. But yeah. So I have homework to do. That's fun.
01:18:10 - Anthony Campolo
You do.
01:18:12 - Jenn Junod
Damn it.
01:18:14 - Anthony Campolo
So it's homework to do.
01:18:16 - Jenn Junod
There is. I will get my website finished eventually. Eventually.
01:18:21 - Anthony Campolo
And then once you have, you'll have that huge maintenance burden of the website. That's worth it though. You. You need to have your own website. Anyone who's actually like a devrel kind of deserves it to themselves to go through the process of building their own website.
01:18:38 - Jenn Junod
Well, not just that. I need somewhere to put all my content. Like and blogs and show notes. I just decided just. And transcripts and I just decided to make it the most complicated thing ever.
01:18:56 - Anthony Campolo
Yeah, that's how you add a Database into the mix.
01:19:01 - Jenn Junod
Well, I want to make sure that I understand the databases, and I want it to work the way I want it to work. And it may not, but I'm going to really understand why.
01:19:11 - Anthony Campolo
Yeah. I think this is a. This is a great exercise. Yeah. Even though, like I said, I would not build the site like this, it makes sense for you, too, for all those reasons.
01:19:25 - Jenn Junod
Well, that works. Yes. Gotta have all the bases covered. Yes. Well, hopefully we get to have a stream soon where Anthony comes on to translate with Saban and Ben. We're just gonna have a party.
01:19:47 - Anthony Campolo
Yeah. Let me know if you get either of them on. I don't think you need to get them both on at the same time.
01:19:53 - Jenn Junod
That would be really funny.
01:19:54 - Anthony Campolo
Yeah. Ideally, you want to get saved on first so you could write the queries, Then you'd want to get Ben on, so you can then just take those queries and then get them into the Astro project. That's how I would probably do it, because otherwise, Ben's gonna have. If you get Ben off first, Ben's got to figure out how to write the Astro queries with you or how to write the Prisma queries with you, and then there'll be nothing for Saban to do.
01:20:17 - Jenn Junod
All right. All right, well. And that's fine.
01:20:22 - Anthony Campolo
Or you could just have me build it in redwood, and then we wouldn't need either of them.
01:20:30 - Jenn Junod
I like Astro.
01:20:32 - Anthony Campolo
No, you still be using Astro. Astro will be querying a Redwood API.
01:20:36 - Jenn Junod
Oh.
01:20:41 - Anthony Campolo
But actually, yeah, let's. Let's not do that. But the next time I. Come on, I will just show you redwood in the abstract and show you how to connect that to Ivan, and then you'll have a redwood Ivan example.
01:20:54 - Jenn Junod
How about we do that on July 5th?
01:20:57 - Anthony Campolo
Yeah, that's great.
01:20:58 - Jenn Junod
I actually do have to check my schedule. I'm not sure I move that week, so we'll find out.
01:21:03 - Anthony Campolo
But it's a Wednesday, so I will be doing JavaScript jam, but.
01:21:07 - Jenn Junod
Okay. All right. And I'm going to be in a new time zone. Oh, that's going to be confusing.
01:21:14 - Anthony Campolo
You gonna be in Pacific?
01:21:17 - Jenn Junod
Yeah. All sorts of confused. All right, y'all, I'm gonna raid you over to Chris Griffin because he's a dope soul, and, dude, Phoenix time is weird. Phoenix time is really weird. I agree.
01:21:35 - Anthony Campolo
Phoenix.
01:21:37 - Jenn Junod
Yeah. It's gonna be nice and toasty.
01:21:39 - Anthony Campolo
Need to hang out with Lucia. I think she's in Phoenix.
01:21:42 - Jenn Junod
She is. I'm so excited. Yes. And bye. Thanks for coming to hang out.
01:21:49 - Anthony Campolo
Bye.