Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:00
We all know that tools
0:02
like ChatTPT have really empowered developers
0:04
to tackle bigger problems. Are
0:07
using Tailwind CSS and need a login
0:09
page? Try asking chat what is the
0:11
HTML for a login page with a
0:14
login, username, password, and a button in
0:16
its own section in the center of a page. It
0:19
will literally give you the first pass version
0:21
of it. But how far can we
0:23
push this? Fred to be a lot may
0:26
have taken it farther than most. He
0:29
built a functioning SaaS product
0:31
with paying customers by using
0:33
only ChatTPT and Python. It's
0:36
fascinating to hear his story and see what he's built. This
0:39
is TalkPythonMe, episode 459, recorded February 19th, 2024. Welcome
0:58
to TalkPythonMe, a weekly podcast on
1:00
Python. This is your host, Michael
1:02
Kennedy. Follow me on Mastodon, where
1:05
I'm at mkennedy and follow the
1:07
podcast using at TalkPython, both on
1:09
bostodon.org. Keep up with
1:11
the show and listen to over seven years
1:13
of past episodes at talkpython.fm. We've
1:16
started streaming most of our episodes live
1:19
on YouTube. Subscribe to our YouTube channel
1:21
over at talkpython.fm slash YouTube to get
1:23
notified about upcoming shows and be part
1:25
of that episode. This
1:28
episode is sponsored by MailTrap, an
1:31
email delivery platform that developers love.
1:33
Try for free at mailtrap.io.
1:37
And it's brought to you by us over
1:39
at TalkPython Training. Did you know that
1:41
we have over 250 hours of Python courses? Yeah,
1:44
that's right. Check them out
1:46
at talkpython.fm slash courses. Fred,
1:50
welcome to TalkPythonMe. So great to be
1:52
here. Thank you so much for the
1:54
invitation. Nice to be here. Yeah,
1:56
it's lovely to have you. We're going to have
1:58
a lot of fun talking. about this
2:00
app that you've built using
2:03
highly powered by AI in
2:06
different ways. It's both powered by
2:08
AI, but also largely built with
2:10
AI. And I think it's going
2:12
to give people an interesting look
2:14
into what is possible these days.
2:17
What is possible and the journey of a middle-aged
2:19
coder or so maybe. That's really an interesting
2:22
thing to discuss. And maybe we could
2:24
just start a little bit with the
2:26
introduction by yourself and then talk a
2:28
bit about that. So before we dive into
2:30
talking about how you use chat
2:32
GPT to largely build this app
2:34
that is a fast product service
2:36
on the internet people pay subscribe
2:38
to, which you know is the
2:41
dream of many people is awesome
2:43
with AI. You know, just tell people a
2:45
bit about yourself and then we'll I want to talk about this, this
2:48
journey. It's a long story because I'm
2:50
turning 15 in June, 2024. So
2:54
if you listen to this before, June, 2024, I will be 49 after
2:56
I would be 50. So
3:00
yes, that will be your spring chicken.
3:03
I'm older than you, Fred. I
3:08
found someone older than me to talk to.
3:10
Oh, that's fine. You can still write code
3:12
into your 50s. Let me tell you the
3:14
keyboard store. It's amazing. And I
3:16
started when I was 48. Maybe we get back
3:18
to this later. So
3:20
originally, my professional
3:22
journey started as an interpreter, Russian,
3:25
English to French. So I
3:27
graduated as an interpreter. So
3:29
in languages. And
3:31
then I started being involved in music.
3:34
I was head of sponsorship for a
3:36
big music festival in Belgium. I had
3:38
rock venues like music venues for a
3:40
few years. And then
3:42
I started being involved in tech as head
3:44
of product head of paid acquisition
3:46
for a few startups. I had
3:49
my own startups. I existed one
3:51
startup in the FinTech space in
3:53
the early 2000s. I
3:55
had a circus for two years. That's
3:58
quite interesting. story. Yes,
4:01
family circuit with four big tents, eight
4:03
tons of equipment. So that was, that
4:06
was quite a story. Was this like
4:08
Cirque du Soleil? Or was it with
4:10
animals? Or what kind of? It was
4:13
more like, I would say, like Cirque
4:15
du Soleil, but at a smaller, smaller
4:17
scale, of course. Okay. But four tents
4:20
and circus artists and actors and musicians
4:22
and that was an original show, an
4:24
original story. I also produced rock bands.
4:27
Maybe I can give a shout out
4:29
to one of the bands that
4:31
I love that I contributed to,
4:33
the Boxer Rebellion. Maybe you heard
4:35
about them, the Boxer Rebellion. Yeah.
4:37
It's a British band based here
4:39
in London, but with a singer
4:41
from from Nashville, Tennessee, Nathan Nicholson.
4:44
So I was involved in music in
4:46
tech, I mean, in all of those
4:48
things. And I think the project that
4:50
we're going to talk about is kind
4:52
of a good mix between music, tech
4:54
and all my passions. I was also
4:56
radio DJ for you. So that's why.
4:58
That's the audio side, right? That
5:00
kind of brings you some together in the music,
5:02
I suppose, as well. Exactly. Amazing. You know, listening
5:04
to tell the story, first of all, what a
5:07
diverse set of experiences
5:09
that must have been really fun. It's
5:11
not a career. That's the problem. Unemployable.
5:15
Yeah, that's, but in terms of thinking
5:17
about products and coding, I know when I
5:19
experience different areas, I always see like, oh,
5:21
this is could be way better. And that
5:24
could be way better. And why is that
5:26
so hard? Surely we could create some software
5:28
to fix these things. You must have had
5:30
a lot of ideas about programs you would
5:33
like to see and stuff that you'd like
5:35
to work on. And multiple times, the solution
5:37
for me was to hire people to do
5:39
it. I had my own startups in the
5:42
past. And I always had a team of,
5:44
let's say, two to five developers working for
5:46
me when we were doing that. So
5:48
I kind of understood all the structure, the
5:51
architecture of the apps. But
5:54
I'd never really coded myself. So
5:56
I was always relying on other
5:58
people. The difference to The day is
6:00
that I spent most of my days coding,
6:02
which is quite different. Yeah, and you said
6:05
you started coding when you were 48. Yes.
6:09
And roughly almost two years ago.
6:11
Yes. That's awesome. You know,
6:13
I do hear from a lot of people or see
6:15
comments like, oh, I think I'm too old to learn
6:17
this or, oh, you have
6:19
to have done this when you were a
6:21
kid or maybe gotten a degree in college.
6:24
Otherwise, you're doomed. You know, you surely have
6:26
an alternative viewpoint on that, given your success.
6:28
I thought it would be
6:30
like that also for me because I
6:32
would say I'm quite a perfectionist. So
6:35
if I learn something, I want to
6:37
achieve something with what I learn. And
6:40
the problem, the issue with code for me
6:42
for a long time had been that
6:44
I could go through the
6:47
basic tutorials, the first lessons, you
6:49
know, watching some videos or reading
6:52
some tutorials. It was difficult
6:54
for me to really achieve something meaningful,
6:56
something that I could really share that
6:59
could become a product because
7:01
you always end up doing the
7:03
same little exercises and little tutorials.
7:06
And that doesn't end up anywhere. You learned
7:08
how to do a loop, but then that
7:10
doesn't really help you get any closer to
7:12
an app, right? To do a little to-do
7:14
list or a little calculator or, you know,
7:17
something very simple, nothing that that would be
7:19
worth sharing as a product and especially as
7:21
a paid product. So I always thought, okay,
7:23
if I want to build a SaaS, the
7:25
only solution for me is to rely on
7:28
a freelancer or on an agency
7:31
or on a team of people. I
7:33
was doing it until I discovered. That's
7:35
a big risk. And it's also not
7:38
that easy to hire a team to
7:40
build your product when you're still trying
7:42
to figure out what a product is
7:44
and all these things, right? Even if
7:47
you hire non-expensive developers, it
7:49
has still a cost. And if
7:51
you want to, you know, just if
7:53
you don't want to take too much risk, if you want
7:56
to test your product to see if you have product market fits,
7:58
I mean, you don't want to do want to
8:00
spend 5,000, 10,000, 15,000
8:03
on a product. It's difficult. And
8:05
the alternative that people are most
8:07
of the time advocating these days
8:09
is no code. So it's building
8:11
stuff with a, let's say, bubble,
8:14
which is pretty popular. Got retool.
8:16
They've been a sponsor of the
8:18
show before. Retool, obviously,
8:21
that's pretty nice, mostly for
8:23
internal apps. And also you
8:25
can just connect stuff through
8:27
Zapier, through Make, formerly Integromat.
8:30
You can achieve something, but you
8:33
don't have the control on the UI.
8:35
You don't really have the control exactly
8:37
on what's happening behind the scenes. And
8:39
you don't have the flexibility that you
8:41
have if you really code yourself. So
8:43
you can really get your hands dirty
8:45
and code on your own. So I
8:47
used also to be a strong advocate
8:50
of no code. So I was using,
8:52
I'm still using firstly Zapier and then
8:54
later on Make. But
8:56
once I discovered Python
8:58
in August, September, 2022,
9:01
then everything changed for me
9:03
because then I could really
9:06
start doing my own stuff.
9:08
And I started with a
9:10
backend stuff with a backend
9:13
scripts to create competitive intelligence
9:15
scripts, things like that. And
9:17
I slowly moved into frontend.
9:20
But first for a few
9:22
months, it was mostly local
9:25
scripts on my computer. That's really interesting.
9:27
The low code, no code stuff is
9:30
super powerful. I think it does make it
9:32
possible for people to build apps.
9:34
I have a friend who built a
9:37
platform a little bit on top of something
9:39
that's kind of a low code thing. And
9:41
it's what they're doing is really impressive. And
9:43
they've got lots of customers and it's going
9:46
really well. It's a vibrant business. It's always
9:48
your beholden to whatever that platform
9:51
does. The platform has downtime, you
9:53
have downtime. If they're changing
9:55
their feature set in a way that doesn't quite
9:57
line up with what you're trying to do. That's
10:00
too bad because, you know, that they've
10:02
changed their, their direction or whatever. And
10:04
it's, it's really powerful, but it's also
10:06
a little bit of a risk, right?
10:08
To be built on top of that.
10:10
A risk, yes. But for me, it
10:12
was even more, I would say, the
10:15
arbitrage was even more about flexibility. So
10:17
when you code something on
10:19
your own with Python, JavaScript, as
10:21
I'm doing now, it's faster in
10:23
many cases than trying to figure
10:25
out how to connect, let's say,
10:27
air table with something else, then
10:29
you've got to think about how the
10:31
data is structured in air table, how the
10:33
data has to be structured on the other
10:36
side, and then how to connect
10:38
them together. Sometimes it's
10:40
easier if you just have
10:42
a SQLite database or MySQL
10:44
database, and then if you
10:46
do your own stuff on
10:49
your own without trying to
10:51
connect existing SaaS
10:54
together. It was more about flexibility
10:56
for me. The main reason why
10:58
I switched almost completely from a
11:00
no code to a coding. That's really interesting.
11:02
I guess one more that would be worth
11:05
considering is price. Some of these low code,
11:07
no code platforms are really powerful, but when
11:09
you start to look at price for a
11:11
decent number of users using your app, a
11:13
lot of them are built for internal use
11:15
cases that are not really built for having
11:18
a bunch of multi-tenant style users and
11:20
so on. But also they can just
11:22
get real expensive real quick. Yes, because
11:25
they are based usually on the amount
11:27
of transactions or
11:29
scenarios or zaps that can
11:31
run. So if you want to
11:34
transfer one piece of data from
11:36
one software to another one, it's
11:38
one transaction. If you have, let's say,
11:41
10,000 transactions per month for a certain
11:43
price, then you can run out of
11:45
transactions pretty quickly. And very
11:48
quickly, you end up paying
11:51
25, 30, 40 dollars
11:53
for a pretty low amount of
11:55
transactions, API codes basically between the
11:58
different SaaS. And if you
12:00
glue them together, one
12:02
tool connects to another, which connects to another, then
12:04
you've got to pay for kind of the traffic
12:07
and the activity in all three. It's not just
12:09
like, well, I'm talking to my database. I'm now
12:11
talking to some other service that's got something
12:14
going on. And the fact is also that
12:16
there are a few tools that enable you
12:18
to create a UI user interface for your
12:20
product, but you're limited to the building blocks
12:22
usually that they offer, even if you can
12:25
tweak them with some code. And
12:27
it's a bit the same. I would say it's also
12:29
the same issue that I've experienced
12:31
on WordPress. The
12:33
problem is that if you use something
12:35
like bubble and you want to build
12:37
something with it, you bring to your
12:40
app or the mothership, the core of
12:42
the big app of bubble as a
12:44
whole, when you want to build something
12:46
on top of a platform like that.
12:48
It's a lot of things that you
12:50
don't really need for your specific apps,
12:52
but that has to be there because
12:54
the whole engine has to run. That's
12:57
usually what you also experience with
12:59
WordPress. For instance, when you have a
13:02
site on WordPress, maybe sometimes or even
13:04
most of the time you don't need
13:06
that big engine. You could
13:08
work with a static website with a
13:11
few HTML, CSS, JavaScript pages. I would
13:13
be much lighter. There would be less
13:15
code to activate to have your website
13:17
up and running. So in terms of
13:20
performance, if you can code your own
13:22
stuff, I think it's also a good
13:24
reason to choose coding
13:26
versus no code if you can do
13:28
it. Totally agree. Price, performance,
13:31
control, all those things. That
13:33
said, you do have to understand more
13:36
about the world. One thing
13:38
we were coordinating around is just
13:40
understanding web app architecture.
13:43
I don't know how you feel about it,
13:45
but I feel like a lot of the
13:47
guidance that is out there is too intense.
13:50
There's too many moving parts. Everyone
13:52
thinks you need to have some kind
13:54
of background worker service like Celery, and
13:57
you need a caching layer, and
13:59
you need this. and you need that and
14:01
it just starts to be like, whoa,
14:03
this is like running Netflix. You
14:05
know what I mean? Whereas a lot of
14:08
times what you need is a backend, a
14:10
frontend and some kind of data store and
14:12
that's it. And that data store, you mentioned
14:14
it before, the data store can be in
14:17
the early days, could be SQLite, which doesn't
14:19
require another server or another thing to maintain
14:21
and connect and secure and it can just
14:23
be a file that you back up. Exactly.
14:25
While you're proving out the idea, right? So
14:28
maybe you're coming from a place where you
14:30
weren't a DevOps expert. Like
14:33
how does transition go for
14:35
you? When I started developing
14:37
an app, for some reason,
14:39
I came across Flask as
14:41
a solution for Python. So
14:43
I started developing the app
14:45
on Flask. And what I
14:47
like about Flask is that
14:49
if you compare it, let's
14:52
say you use Flask and then for
14:54
the pages, you use HTML, CSS and
14:57
Vania JavaScript. What I like is that
14:59
you can deploy an app which
15:01
comes from a single folder and
15:03
you've got everything there, your main
15:06
Flask file and then all the, let's
15:08
say the sub files in Python with
15:10
all the business logic that you can
15:13
isolate in one file or another. It's
15:16
one project and then you deploy the
15:18
project to GitHub and then let's say
15:20
you connect GitHub to Railway. I'm using
15:23
Railway for my deployment. So you connect
15:25
GitHub to Railway and
15:27
then once you update
15:29
your code in PyCharm or
15:32
in Visual Studio, then you have the
15:35
automatic deployment to Railway. But it's one
15:37
project. If you want to decouple completely
15:39
the backend from the front end, let's
15:41
say you work with something like Next.js,
15:43
for instance, and then you want to
15:46
have a backend into something else, then
15:49
you've got to have multiple instances and
15:51
connect them together. It becomes
15:53
more complicated. But if you want
15:55
to create something simple, you can
15:57
keep it simple with one single
15:59
flap. web app and that's
16:01
what I've been doing so far. Most
16:04
of the iJingle maker that I
16:06
built, that I've been building since
16:08
September 23, is a Flask web
16:10
app. So it's one project, one
16:13
big project, it's one project. It's interesting
16:15
that you mentioned Celery a few moments
16:17
ago because I'm about to ship a
16:19
new app which is
16:21
coming in the next two weeks or
16:23
three weeks I think and that's the
16:26
first time after almost 18 months of
16:29
development that I've considered using
16:31
something like that because I needed it
16:33
for performance reasons to process something. Something
16:35
you want to start off in the
16:37
background and get back and just let
16:39
it be done later right? Yeah. And
16:42
I was not that easy. We had
16:44
a discussion with someone
16:46
who is amazing on the discord
16:48
of a railway two or three
16:50
days ago because
16:52
if you're deploying things on
16:54
railway you would usually use and
16:57
that's what they advise you to do
16:59
as on Iroku a proc file and
17:01
the proc file you've got the
17:04
start commands that will start your
17:06
project but on Iroku
17:08
which is a competitor of railway
17:10
you can start both the
17:13
web app and the worker
17:15
in the same file but you can't
17:17
do that on railway. You've got theoretically
17:19
two different projects which kind of defeats
17:21
the purpose. You kind of deploy them
17:23
both right but then then you get
17:25
to more coordination. Yeah but fortunately and
17:28
there is a discussion on the discord
17:30
between me and one of their guys
17:32
there they had a way
17:34
to create a custom JSON for
17:36
me which managed to start
17:38
both the web app and the worker
17:41
in the same in the same deployment
17:44
but I had to fight to be
17:46
honest with you for like four or
17:48
five hours to find a solution because
17:50
sometimes the problem and that's the issue
17:52
that I've seen a lot is that
17:55
traditional developers like professional developers not people
17:57
like me not random guys like me
17:59
usually they assume that the
18:01
people that they're supposed to explain
18:03
things to know much more than
18:06
what they do. And
18:08
so they just write a few
18:10
instructions, you know, like cryptic instructions
18:12
that nobody really understands. And they
18:15
would assume that everyone reading those
18:17
instructions would understand what they have
18:19
to do to, let's say, use
18:21
this worker service, for instance, but
18:24
that's not the case. I totally
18:26
agree. This
18:29
portion of TalkBython.me is brought to
18:31
you by Mailtrap, an email delivery
18:33
platform that developers love. An
18:36
email sending solution with industry-best
18:38
analytics, SMTP and email
18:41
API SDKs for major programming
18:43
languages, and 24-7 human
18:46
support. Try for free
18:48
at mailtrap.io. You
18:51
know, it's kind of the curse of knowledge. Like once
18:53
you know all of these things, it's
18:55
really hard to remember, oh, yeah, so and you
18:58
just, oh, just run that in Docker, and then
19:00
link it and set up a network over there.
19:02
Like, wait a minute. Yeah, I'm just trying to
19:04
run my
19:06
Python app, like you're bringing a whole new
19:08
thing in that you think makes it sound
19:10
easy. And it makes it sound real hard
19:12
to me. I totally agree. This is a
19:14
problem. So many moving pieces when you when
19:16
you start coding, I mean, obviously,
19:18
you know that because you've been in this
19:20
game for much longer than me. But
19:23
once you start coding, there are so many little
19:25
things that you have to know to make this
19:27
thing work. So it starts with
19:30
how to just configure GitHub and connect
19:32
it to your How
19:34
do you get if you have a
19:36
Git conflict, you might be like, well,
19:38
this is done. I can't do anything
19:40
else anymore. It's broken. Yeah, I mean,
19:42
it's really overwhelming when you're new, right?
19:44
There's a lot. And that's where AI
19:46
today helps you. Because in most cases,
19:48
if you know how to talk with
19:51
the AI, you will get answers
19:53
that are much easier to understand that
19:55
what you would have on Stack Overflow,
19:57
for instance, I agree. It's very interesting
19:59
how helpful it is. I think it's
20:01
a good time to about jump into
20:03
that. But before we do, tell people
20:05
about Railway a bit. How does this
20:07
work? I haven't used Railways before. It's
20:09
a platform where you can deploy your
20:11
apps, basically. It connects to your GitHub
20:13
account. It's
20:17
not only, I mean, you have
20:19
on Railway not only a possibility
20:21
to deploy your Flashcap or other
20:24
types of apps also, but they
20:26
also offer all the database aspects.
20:28
So you can spin
20:31
a Redis database. You
20:33
can have a MySQL database. I think
20:35
they also have Mongo. I mean, they
20:37
have most of the formats that
20:39
you can expect. And the great thing
20:41
is that everything is on
20:43
the same platform. Let's say that I've
20:46
got another project I'm involved with, with
20:48
a developer, with a real developer, I2Alex,
20:50
if you listen to this podcast. A
20:53
professional developer. For that
20:55
project, for instance, we have an
20:57
app on Eroku. We have a
21:00
database on MongoDB Atlas.
21:02
And we have the
21:05
files uploaded
21:08
to S3, to Amazon S3, for the
21:10
file storage. On Railway, you
21:12
can, at least it's what I do, you can have
21:15
at the same time, the deployment of
21:17
the app, which replaces Eroku. And
21:19
you can have the database also together. And
21:22
the cool thing is that they are, I
21:24
would say even physically at
21:26
the same location. So in terms of
21:28
performance, it's pretty easy to handle.
21:31
And very user friendly, I mean,
21:33
very, very easy to use from
21:35
what I saw even easier to
21:37
understand than Eroku. And
21:39
I tried also some things like Versal
21:42
or I use for some project also,
21:44
but that's more for static website Netlify.
21:46
But for this time, it's fantastic for
21:49
static. But yeah, static Netlify is just
21:51
amazing. And just the one where you
21:53
can just drag and drop a project,
21:56
for instance, for static website. So easy.
21:58
But for more, multi-tenant
22:00
dynamic web app like the iJingle
22:03
Maker railway was really cool. And
22:05
as you can see from the
22:07
presentation, it's very user friendly. It
22:11
definitely is. And the pricing is actually really
22:13
decent. They have a free trial and then
22:15
$5 a month. But that
22:17
gets you eight gigs of RAM and
22:19
eight CPUs per service. That is really
22:21
good. I started it on the OB
22:24
plan. And I think that today, just
22:26
to give you an idea, with
22:29
roughly 500 users coming
22:32
to the app per day and
22:34
a lot of them using the
22:36
product, I pay for
22:38
that roughly $15 a
22:40
month for both the
22:43
app deployment and the database,
22:45
which is in MySQL for our iJingle
22:48
Maker. That's pretty impressive. Good
22:51
one to know about this is cool. Yes, nice
22:53
one. They have good Python support. Yes, yes, very
22:55
good. And they have, as I said, like
22:58
most people do today, a
23:00
Discord server monitored also by volunteers. And
23:02
there was a guy the other day, I
23:04
didn't even know he was not part of
23:06
the official team of railway. And it really
23:08
helped me. He wrote some code for me
23:10
to make this thing work with the Celery.
23:13
So it was really, really amazing. And
23:15
it was on a Sunday in
23:18
the evening. So really nice. Yeah, that's
23:20
amazing. One thing I just want to
23:22
give a shout out to, I came
23:24
across recently, that's interesting is Coolify, which
23:26
is it's self hosted
23:28
Heroku Netlify Vercel alternative.
23:30
And you just get pushed to it.
23:33
I don't know if it's better than this, though, because
23:35
you got to have a decent server to run
23:38
it on. You got to run the Docker stuff
23:40
and, and whatnot to sort of do it. But
23:42
yeah, anyway, we get an interesting deployment. Yeah, we're
23:44
going to manage also, because the other day, I
23:46
think it was 10 days ago, there
23:49
was a DDoS attack, I think, again,
23:51
through a way for the European part
23:53
of their network.
23:55
But they were very quick jumping
23:58
on it and managing. all
24:00
of that and doing all the mitigation
24:02
against it. If you run your own
24:04
service, then you've got to take care
24:06
of all of that on your own
24:08
security and all of that. There's benefits,
24:10
but there's also drawbacks there. All
24:12
right, let's talk about, I think the right
24:15
way to start talking about this, how you're
24:17
using AI and the journey you went through.
24:19
I mean, we've talked a lot of the
24:21
foundations already, but let's talk about your app.
24:23
You mentioned a couple of times, AI Jingle
24:26
Maker. Tell people what it does.
24:28
It's a web app that you can find on
24:30
aijinglemaker.com. If you enter
24:32
the app, you can
24:35
create your own sweepers,
24:37
radio jingles, podcast intros,
24:39
audio promos, as if
24:41
you were playing with Lego bricks, I would
24:43
say. It's not
24:45
the usual though experience. If
24:48
you'll be using things like GarageBand or FL
24:51
Studio or Pro Tools
24:54
to edit your audio,
24:56
you can imagine those waves that you've got
24:58
to move around to create
25:01
your jingles or your sweepers. If
25:03
you're using, for instance, the open
25:05
source audacity software also on your
25:07
computer, you can do that. But
25:10
still, you've got to know how to
25:12
move these things around and how to
25:14
play with the volume, the fade in,
25:16
the fade out, the reverb, the chorus,
25:19
the flanger, all the effects. I
25:22
mean, it's not that easy for many people. I
25:25
thought that I could build something
25:27
that made it as easy as
25:29
pressing on a few buttons. That's
25:31
the idea of the product. The
25:35
way you use it when you
25:37
enter the product, you've got four
25:40
different parts. You've got the intro,
25:42
the background, the outro, and the
25:44
voiceover, which is on top of
25:47
the background. The voiceover, now
25:49
you've got three different options. You've
25:51
got the possibility to record your own
25:53
voice. So I rebuilt a voice recorder
25:56
on an online voice recorder where you
25:58
can quickly record your voice. voice, add
26:00
a few effects, and then boom, use
26:02
that as your voiceover. You can also
26:05
upload an existing recording that
26:07
you have on your computer. So if you've
26:09
got something that you recorded with your, with
26:11
FL Studio or something else, you can upload
26:13
it and use it as a voiceover. Or
26:15
you can use AI. So
26:17
I'm connected to a bunch of
26:19
text-to-speech APIs. So I didn't develop
26:22
the models myself. I'm not smart
26:24
enough to develop a foundational model,
26:26
but I'm connected to the APIs.
26:29
You can pick one of the voices.
26:32
You can write your text, generate
26:34
the voiceover. And once you have
26:36
the voiceover, you just select it.
26:38
And when you have the voiceover,
26:41
you choose a background behind it.
26:43
So let's say groovy music, house
26:45
music, rock music, romantic music, whatever.
26:48
You've got some pre-made sounds in
26:50
the app. You choose an intro,
26:52
an outro, and then you press on
26:54
generate jingle. And in five seconds, you've
26:56
got the jingle. That's basically the idea.
26:59
I'll put in the jingle so people know exactly
27:02
what this sounds like. I'll put it
27:04
in right now. It's
27:14
really cool. And it's something
27:16
that I've seen people hire voiceover
27:18
actors on like Fiverr and
27:21
stuff like that. They'll maybe pay 30 bucks
27:23
to have somebody do a couple of trials
27:25
and throw some music on top of
27:28
or something like that. Right. And I'm a voiceover
27:30
artist on Fiverr. I'm doing that also. So
27:33
I know exactly what it is. Let me
27:35
see if I can automate my job away.
27:37
It was not really the idea of automating
27:39
completely a job away. It was more like
27:42
the, how can you create something that self-service
27:44
and that can meet the needs of people,
27:46
as you say, who don't want to spend
27:48
50 bucks or 100 bucks for something, but
27:52
who want to have an easy way
27:54
to create basic sweepers,
27:56
jingles or some other things. And
27:59
the The first target
28:01
was mostly indie radio
28:03
stations or small podcasts.
28:06
But then I saw many brands
28:08
coming, like I wouldn't say, like
28:11
not the big brands, but small
28:13
brands coming like apparel brands or
28:15
coffee shops. Or I had the
28:18
other day a bar in Ibiza
28:21
signing up and paying for credits
28:23
to generate a promo for the
28:25
bar in Ibiza. So
28:28
yeah, it's not only radio stations
28:30
and podcasts. It's also anyone who
28:33
wants to create a
28:35
promo for their business. So that's also
28:37
one of the services. And
28:39
when I started, it was only short
28:41
three-person jingles, radio station IDs, stuff like
28:43
that. But then I added something which
28:46
is called the promo maker, which you
28:48
have in the jingle maker where you
28:50
can create something which is up to
28:52
30 seconds long. So more like a
28:54
radio ad. And
28:57
there you can also use AI. It's connected
28:59
to open AI, to be honest. But you
29:01
can also use AI to generate the text of
29:03
your promo. So just put the name of your
29:05
business, what you're selling, your
29:07
service, your product. Then it will suggest
29:09
the text. Then you choose
29:11
the voice, generate the AI voice, and
29:13
then you add the sounds and then
29:15
it's finished. So let's say in 20
29:17
seconds, you've got a note you add. So
29:19
that's the promise for the promo maker. It's
29:22
a cool app. It's really impressive to look
29:24
at this and think that you built this
29:27
with less than a year of
29:29
Python or really any coding experience, right?
29:32
Roughly that amount. To put things
29:34
really in perspective so that people
29:36
know what they can expect if
29:38
they start their coding journey.
29:41
So I started coding in
29:43
Python in September, October 2022. For
29:48
a few months, as I said, I was mostly
29:50
coding scripts on my computer that
29:53
helped me in my daily business because I
29:55
didn't tell you in the beginning, but most
29:57
of my activities, online marketing, it's a... working
30:00
for startups and bigger companies also.
30:02
So I need scripts, you know,
30:04
for competitive intelligence for SEO, or
30:07
for even content production, this type
30:09
of thing. So I created a
30:11
lot of scripts locally on my
30:13
computer before considering the front
30:15
end part. And that's when I discovered flask,
30:18
I was just before the summer of 2023.
30:20
And yes, the first version of the Jingle
30:26
Maker that I launched, it was just on
30:28
the homepage, you couldn't basically
30:31
tweak anything, there were just four different
30:33
jingles and just put the name of
30:36
your radio station, you press on generate
30:38
and generate it one thing the same
30:40
for everyone. And I started getting some
30:42
traction between May 2023 and
30:46
August. And then I said, Okay, I'm
30:48
going to really dive into this project
30:50
and develop something more sophisticated. I
30:53
started working on that on
30:56
a Monday in September, it was
30:58
released on the Friday, the v2.
31:00
And I gotta tell you, your website now looks
31:04
really nice. You've done a lot of good
31:06
design work on it as well in the
31:08
last couple of months. Yeah, it has evolved
31:10
because maybe you saw it for the first
31:12
time when we decided to do this podcast,
31:15
it was a white page, the
31:17
logo was the same, but it was it was different. Originally,
31:20
it was only in material design,
31:22
I was using material design via
31:25
the CDN from from Google. But
31:28
then I wanted to use Tailwind,
31:30
the new version that you see is
31:32
using Tailwind. So people might recognize the
31:34
Tailwind, Tailwind vibe. And I worked quite
31:36
a lot on this thing that okay,
31:38
we said it's audio, so people don't
31:40
see it. But if you go on
31:42
the website, you will see it there
31:44
is this rotating list
31:47
of things that you can
31:49
create with the with the product. It was inspired
31:51
by some code that I found that I had
31:53
to re tweak it for you know, make it
31:56
responsive and all of that. And
31:58
you out
32:00
to my son with 18, who's learning
32:02
Python a lot. He coded a few
32:05
things recently. He's coding something to
32:07
play darts at the moment, like to calculate
32:09
the scores in darts. And two
32:12
months ago, it said to me
32:14
that your sight is nice, but it
32:16
looks ugly. So could
32:18
you make something that looks better? I
32:21
said, yeah, yeah, but you know, I
32:23
kind of like it. I said, no, no,
32:25
no, no, no, that it's not the
32:28
way it should be. So do something better. I
32:30
know you can do it. So that's why
32:32
also we've got something which looks better
32:35
today. Thanks to my son,
32:37
Max. It's a huge improvement from where it
32:39
started. So nice work on that. Yeah. All
32:41
right, let's talk about some of the techniques
32:43
that you used here to first
32:46
of all, what LLM did you use to
32:48
go on this journey? When I started, I
32:50
wasn't even aware of GitHub co pilots. So
32:52
I started only with the chat
32:54
GPT. I was an
32:57
early premium user of chat GPT.
32:59
So I started paying the 20
33:01
bucks very, very early for for
33:03
GPT plus. So I started using
33:05
chat GPT. So basically switching between
33:08
the chat GPT UI and
33:10
the ID I, I started using a pie
33:12
charm. So that's the first one I use.
33:14
So I was creating some
33:17
code in chat GPT and then jumping
33:19
to pie charm test the code. And
33:21
then if there was a bug coming
33:23
back to chat GPT. So this back
33:25
and forth journey, you ask it at
33:27
the beginning, how do I make a flask app?
33:29
Or what did you ask it in the
33:31
beginning? Like, how do I make a flask
33:33
app? How do I make a flask app
33:36
that does audio? Like what did you I
33:38
knew that I wanted to use flask. So
33:40
the first thing that you would ask is
33:42
to ask chat GPT for a boilerplate of
33:44
a flask web app. And it will give
33:46
you pretty quickly the basic
33:49
building blocks. I don't know if
33:51
it would give you straight away
33:53
the architecture with a template inside
33:56
of the template folder, but no,
33:58
it gives you here. Hello
34:02
world. Yes. But then if you
34:04
know that you need HTML, then
34:06
you will ask a GPT to
34:08
tweak it to render
34:10
index with HTML from from the template
34:13
folder. And that there you see there
34:15
it starts and it gives you some
34:17
boilerplate for the HTML that you put
34:19
in the template folder. And then you
34:22
learn that you
34:24
need ideally to have
34:26
some JavaScript in a JavaScript file
34:28
and that you need some CSS
34:30
in a CSS file and that those
34:32
two files will be in the static
34:35
folder of a Flash Web App. So
34:37
now I've got let's say my routine,
34:39
I've got all of that ready. And
34:41
if I start a new app, I
34:44
don't even need, obviously, a GPT,
34:46
I just create my structure, I
34:48
put index with HTML script.js styles
34:51
of CSS. But then what
34:54
you can also ask GPT
34:56
to do, for instance, is if you've
34:59
got your HTML page, you can
35:01
say restyle this HTML page with
35:03
tailwind CSS using the CDN, for
35:05
instance, I will give you a
35:07
full restyling. And then you can
35:09
ask it, okay, I want on
35:11
this page four buttons, and
35:13
those four buttons should do
35:16
XYZ. And then you start
35:18
moving into the JavaScript part
35:20
of it for the interactions
35:22
on the page. The
35:25
interesting thing maybe, which would explain
35:27
also why I haven't really started
35:30
using next.js or views or things
35:32
like that is that by default,
35:34
for some reason, you've got to
35:37
ask OpenAI why maybe because of
35:39
some legacy importance of a Vania
35:42
JavaScript. But if you
35:44
ask chat GPT to start creating
35:46
some interactions on an HTML page,
35:48
it won't just tell you, okay,
35:50
you know, these days, people use
35:52
react or next.js or something like
35:54
that. So maybe you could or
35:56
you should consider that it
35:58
will go deep into the Vania JavaScript
36:01
and after developing
36:03
the Jingle Mega for a few months,
36:05
I showed it to my friend Alex,
36:07
who is this developer I was talking
36:10
about earlier, was graduated, I would say,
36:12
from Vania JavaScript to React and he
36:14
looked at my code and said, man,
36:17
that's crazy. It's all Vania JavaScript. There's
36:20
not a single line of React. So
36:22
everything in your app is lines and
36:24
lines and lines of JavaScript. That's a
36:26
benefit and a drawback. He
36:29
said that he would not even be
36:31
able to write it this way
36:33
from scratch today. That's not something
36:35
that he would really consider doing
36:37
because it's more verbal. There's more
36:39
stuff to write to achieve what
36:41
you want to achieve. But the
36:43
thing is that with charge EPT
36:45
or today with a GitHub compiler
36:47
embedded in the ID, even if
36:49
it's longer, that's not a problem
36:51
because you don't write a single
36:53
line of code. I think it's
36:55
important to point that out. Is
36:57
that in the Jingle Maker, there
37:00
is not one single line of code
37:02
that I wrote. Not one. That's insane.
37:04
There's no one. Not a single line
37:06
of code that I typed, you know,
37:08
from the first curly bracket to the
37:11
last curly bracket. Nothing. Everything is written
37:13
like that. Yesterday, for instance, I was
37:15
working on something completely different now for
37:17
a friend with also a client who
37:19
were working on a Gmail
37:21
add-on. So I don't know if you're familiar
37:23
with that, but you're using
37:26
Apps Script from Google and
37:28
then create a manifest and
37:30
blah, blah. And I didn't
37:33
know anything about Gmail add-ons until
37:35
yesterday in the morning. And
37:38
after now, five hours of work,
37:40
we've got a fully working product
37:43
in Gmail. That's amazing. That's great.
37:45
Two thousand twenty four. And it's
37:47
only the beginning. I really see
37:49
that evolving super fast. I
37:51
think that now the most important
37:54
thing is to be able to
37:56
talk to the machine, to explain
37:58
the structure, the architecture of. what
38:00
you expect and to be clear in
38:02
your head about the
38:04
code has to be developed for
38:06
the pages to interact for the
38:09
elements to interact together. And if
38:11
it's clear in your head, and if you can explain
38:14
it clearly to the LLM, it's just
38:16
magic. It is like magic. Yeah, it's
38:18
pretty wild. If
38:21
you're a regular listener of the podcast, you
38:23
surely heard about TalkPython's online courses. But have
38:25
you had a chance to try them out?
38:28
No matter the level you're looking for, we have a course
38:30
for you. Our Python for absolute
38:32
beginners is like an introduction to Python plus
38:34
that first year computer science course that you
38:36
never took. Our data driven
38:38
web app courses build a full
38:40
pypi.org clone along with you right
38:42
on the screen. And we
38:45
even have a few courses to dip your toe in with. See
38:47
what we have to offer at training.talkpython.fm or
38:50
just click the link in your podcast player. So
38:54
you can see on the side here, I have
38:56
these really weird recent chats I had like a
38:58
skilled baker Q&A and
39:00
survive a plane crash in the wilderness. And
39:03
so these things are actually related. And what
39:05
I was trying to do was I was
39:07
trying to understand how much prompt
39:09
engineering and sort of setting the stage
39:12
for the questions matters. So like this
39:14
one, I said, you are a very
39:16
skilled baker. You have run a successful
39:18
restaurant in the city for five years.
39:20
Now I will ask you questions. As
39:23
opposed to this one, you are a
39:25
very skilled outdoorsman and you have been on multiple
39:27
reality shows. Now I will ask you some questions.
39:29
And they were both the same question. If I
39:31
am in a plane crash and I need to
39:33
survive, I wanted to see how
39:36
much the baker would focus on food
39:38
and stuff versus the survivalist on others.
39:40
And I feel like that is a
39:43
real clear way to understand this
39:45
kind of stuff in just a real general
39:47
way. But I think there must be a
39:50
code aspect of that as well. Like
39:52
rather than just tell me how to
39:54
do this in Python, like you have
39:56
written this app in Python or you're
39:58
an expert on fast API. Now I
40:00
want to talk to you. You may get different
40:02
results. Uh, maybe better. It may be worse. I
40:04
don't know, but did you try any of this
40:06
techniques or was it just straight down the middle,
40:09
tell me how to do this with tailwinds? To
40:11
be fair with you, because I was a total
40:13
newbie in the beginning, I was making
40:15
sure to ask the AI to explain to me
40:17
almost as if I were, as if I were
40:19
a five year old, you know, because
40:23
I could have told the AI, you're
40:25
an expert, um, Python
40:27
developer and then, uh, just
40:30
give me the code, but then I don't have
40:32
all the explanations because then it
40:34
behaves like an expert Python
40:36
developer, and there are many
40:38
shortcuts that it will take and not
40:40
really give you all the details, uh,
40:42
documenting all the code. So I'm
40:45
still, um, yeah, more like
40:47
in, uh, explain to me in
40:49
layman's terms, you know, how to
40:51
do this, because then also I
40:53
understand the code. So it's
40:55
easier for me to debug it. I usually
40:57
take the analogy that when you said that,
40:59
uh, uh, sometimes you think it might be
41:01
too late to learn to code or to
41:03
learn to do something, let's
41:05
say that you want to learn to play
41:07
music, to play the piano at a certain
41:10
age, it becomes very difficult because you don't
41:12
have the reflex, the muscles agility that you,
41:14
that you can have when you are a
41:16
young kid to, to learn how to play
41:18
the piano. But still you could understand what's
41:20
on the score written on the page from
41:22
the music. So in coding for me, it's
41:25
kind of the same. I would, to be
41:27
honest with you, I would not be able
41:29
to write most of the code that is
41:31
in my app myself, but I
41:33
can read the score and I can
41:35
see the connections between the different building
41:38
blocks in the code. So, uh, I
41:40
can understand if there's a problem, you
41:42
know, a syntax issue because there's some,
41:44
you know, closing brackets that are not
41:46
properly closed. I can see it. I
41:50
wouldn't be able to write the code
41:52
properly in the first place myself. And
41:54
you could argue it's a problem, but
41:56
I say, you know, for me, uh,
41:59
the, the output. is what matters.
42:01
It's the final product which is what
42:03
matters. So as long as I
42:05
understand what's on the screen, for me, it's
42:07
okay. Yeah, well, let's loop it back to
42:09
the original way we started this. One
42:12
way you could do this is you could hire
42:14
people to build this for you, and then they
42:16
give you the code and you're in the same
42:18
position. Like here's a huge pile of code and
42:20
you probably understand it. I'm sure you understand it
42:22
less well than if you went through step by
42:24
step and 100% sure.
42:27
I was in that position a few times
42:29
where I was involved in some projects
42:31
and I was not involved in the
42:33
actual coding of the project. And then
42:35
I inherited the project.
42:37
I had the code
42:40
base, but I could just put it on
42:42
a shelf because I would not
42:44
be able to do anything with that. Whereas now I
42:47
understand every single section of what's
42:49
written in the app. So at
42:51
the moment, I'm repurposing some of
42:53
the payment logic because I would
42:55
switch from Stripe to Paddle in
42:57
the IJingle Maker. And yeah,
43:00
so I've got to rebuild the payment
43:02
models. I've got to rebuild the flash
43:04
crowd for the API endpoints for the
43:06
payment confirmations and all of that. So
43:09
I know where they are and I
43:11
know what they do. So I know
43:13
how to tweak them and I can
43:15
highlight exactly what I want. And then
43:17
now I'm using, I would say 75%
43:20
of the time, I'm using GitHub
43:22
Copilot straight in the IDE directly
43:24
because it's in context then. You
43:26
highlight the code and then if
43:29
the suggestion is nice, just insert
43:31
it to replace the code. So
43:34
yeah, once you've got something that
43:36
you understand, it goes faster and
43:38
faster. Yeah, and you're still early
43:40
in this project, right? This is... Yeah, super early.
43:42
Five, six months or something. Like a baby. Yes.
43:44
I imagine as you do more of this, you
43:46
might not choose to write a lot of code,
43:48
but I bet you'll start to be able to
43:50
write code, kind of like language
43:52
immersion. If you move to
43:55
Brazil, you would start to learn Portuguese.
43:57
Yes. Eventually, just because you're in that
43:59
environment. so much, you know, but sometimes
44:01
really, you know, with the suggestions, it's,
44:06
you wouldn't see why you would write
44:09
the code. For instance, I had
44:11
earlier today, I was creating a
44:13
scraper to check the technology used
44:15
by different websites by looking in
44:17
the source code for let's say,
44:19
WP for WordPress, or do for
44:21
odo Squarespace, we know this kind
44:23
of thing. Yeah, we just wrote
44:25
together with the AI the first
44:28
part, and then we had to replicate the
44:30
code in beautiful sub soup for
44:32
for the scraper for each of
44:34
them. There's absolutely no reason why
44:37
I would write each iteration. And
44:39
once you write two of them,
44:41
then you with co pilot, you
44:43
just go with your tab to
44:46
the next section, and
44:48
we understand that what you expect, because you've
44:50
got like three or four different technologies that
44:52
you want to track in your code that
44:55
you declared before, they will have to write
44:57
a block of six lines. Boom, that's the
44:59
block of six lines. There's no reason in
45:02
the world why I would write those six
45:04
lines. You know, amazing. That's great. That's great.
45:06
One more prompt engineering thing. And you talked
45:08
about and I think it is a problem.
45:10
So we asked
45:12
basically what's the boilerplate and it said, boom,
45:15
here's the boilerplate for flask and chat GPT.
45:17
Then I said, well, how do I use
45:19
a template and it said, boom, here's the
45:21
two pieces of code. You said sometimes this
45:23
can be really challenging. You said one of
45:25
the techniques used was to explain to me
45:27
like a five year old. Another thing that
45:29
works really well is I just said, tell
45:31
me this again, less think step by step. And
45:33
it gave me a 10
45:35
step process. Start one install flask, create
45:38
a project directory, create the project script,
45:40
import flask, and it was really much
45:42
more like this is what each step
45:45
you need to do. And things
45:48
like that are really neat. When you really
45:50
start learning, it's nice to do it to
45:52
do it step by step because you know,
45:54
some people they don't understand. And that's, that's
45:56
quite normal. I would say that you've got
45:58
to install those. libraries
46:00
before using them, that simple things
46:03
like that. So in the beginning,
46:05
it's nice to go step by
46:07
step. It's really powerful. And it's
46:09
something people can check out. There's
46:11
a cool video. That's your channel.
46:13
This one. This one I was
46:15
like, prompt engineering 101 by
46:17
Patrick LaVere. And yeah, he's like a 14
46:19
minute video talks to you, has a bunch
46:22
of advice from places like Anthropic and others.
46:24
And here is how you go and some
46:26
things you can try. It's also evolving. Thanks
46:29
also to the longer context windows
46:31
that we have today in the
46:33
LLMs. Because when I started doing
46:35
that in 2022, the
46:40
context window was maximum 4,000 tokens
46:43
or something like that. So you
46:45
had to really go by short
46:47
section. And it was very difficult
46:49
to debug long pieces of code,
46:51
long sections of code. Now the
46:53
token window is 128,000 on open
46:55
AI. And
46:58
it's even longer on Cloth or other LLMs.
47:00
Today, it's possible to basically
47:03
throw at some point 750
47:05
lines of code in a 1,000 lines of code in
47:07
the LLM and
47:11
get some refactoring, debugging.
47:14
That's also really amazing. When you need,
47:16
let's say you know that you created
47:18
something cool in one app, some business
47:21
logic, something interesting. But you know that
47:23
you want to just repurpose it in
47:25
a small way, like make little tweaks.
47:28
You just throw all the code into
47:30
the LLM. And you just explain the
47:32
little changes that you want. And it
47:34
will give you the adapted code fully
47:36
functional in one go, one shot, which
47:38
is also impressive. That is super impressive.
47:40
So it sounds like you use Google
47:42
Copilot a lot. Have you looked at
47:45
GPT engineer? No. I haven't really either.
47:47
But basically, it's supposed to be kind
47:49
of an iterative thing that
47:51
will generate all the multiple
47:53
files for you and then
47:56
try to understand how all those pieces
47:59
fit together. in work and so more
48:01
like an agent an agent logic. Yeah,
48:04
exactly. Exactly. So but pretty I
48:06
started working with the GPT from
48:08
open AI from from chat GPT,
48:10
I created a few of them.
48:12
It was a funny, funny one,
48:14
for instance, I'm working for an
48:16
accounting firm for some marketing and
48:18
and the boss of the of the
48:20
company sent me a document
48:22
of 350 pages explaining
48:24
the accounting module on module, which is
48:27
an ERP system two weeks ago, and
48:29
he said, Oh, you should read that
48:31
to be able to to understand it
48:33
and answer questions about the module. And
48:35
I just threw it into chat GPT,
48:38
uploaded the PDF and I created
48:40
a custom GPT. So now I
48:42
can add the custom GPT questions
48:44
about the accounting module. So that's
48:46
insane, instead of reading the and
48:49
also another nice use case that
48:51
I have, it's not nothing about
48:53
coding, but sometimes you're just
48:55
on YouTube and someone tells you,
48:57
this is the five big important
48:59
things you have to know in
49:01
2024, which would
49:03
change your life forever. So I'm tempted,
49:06
maybe I will watch this video because
49:08
it might be interesting. But
49:10
you say no, it's probably not that interesting.
49:12
It's probably a lot of fluff. So now
49:15
usually what I do is that I I've
49:17
got a website called I don't remember the
49:19
name, sorry, but one of the websites where
49:21
you can get the transcript
49:24
of a video. So
49:26
I go get the transcript, throw it into
49:28
chat GPT. And and then I asked, what
49:30
are the five important things I should know
49:32
that will change my life forever in 2024.
49:35
And then I've got them in five
49:37
seconds. I don't want to I don't I don't need to watch a
49:39
35 minutes video. And then maybe maybe decide to
49:41
watch it later. Yeah,
49:44
awesome. What an interesting story, Fred. I think
49:47
maybe we should wrap it up. But people
49:49
can check out a i jingle
49:51
maker calm and put that in the show notes.
49:53
There's two other things from you that
49:55
are noteworthy. One is you have
49:58
your AI coding club newsletter. Do you want to about
50:00
that? Yeah, that's a newsletter I started,
50:02
which is connected to some of the
50:05
videos I posted on YouTube, where I
50:07
will explain to people how to use
50:09
AI for coding purposes. I will start
50:11
sending the newsletter soon, actually, I started
50:14
registering people, but I haven't sent the
50:16
first edition yet, but I will start
50:18
very soon. I've got also
50:20
a new app that I set coming
50:22
up, probably within two weeks, it would
50:24
be called the AI Showmaker. It's a
50:27
way to create a podcast or a
50:29
radio show with building blocks. So it's the
50:31
same concept as the Jingle Maker, but for
50:33
longer form. That sounds really interesting. All right,
50:35
cool. People can check it out here. And
50:37
by the way, I've been thinking a lot
50:40
about email and newsletters and stuff. I
50:42
was doing a bunch with MailChimp for
50:44
many, many years, and it's just got
50:46
to be super, super expensive.
50:49
And I got frustrated with them. So
50:51
did a bunch of research on different
50:53
platforms, looked at buttondown.email
50:55
and actually chose a list monk,
50:58
which is self hosted and Docker
51:00
style thing. But one of the ones
51:02
that I came across at the end
51:04
is BeHive, which looks pretty interesting. Are
51:06
you happy with BeHive? It's more competing
51:09
with Substack. I think it was co
51:11
created by one of the guys who
51:13
co founded Morning Brew, the newsletter Morning
51:15
Brew. So he knows what he's talking
51:17
about. And it's really also really well
51:19
coded, really well executed. It's
51:21
a pleasure to use. And
51:24
you can use it for
51:26
free for up to 2500
51:28
subscribers. Yeah, that's
51:30
it. So yeah, the pricing
51:32
is way, way better than
51:34
things like MailChimp and stuff. So also
51:38
cheaper than
51:40
Substack. So they don't, I don't know
51:43
which cut they take from the subscription,
51:46
if you run a premium newsletter, but it's
51:48
much cheaper than a Substack. I think Substack
51:50
takes 10%
51:52
from like Patreon and other platforms
51:54
like that. Nice. All right. And
51:56
then one other thing is your
51:59
call me Fred. Yeah. YouTube channel. Yeah, I've
52:01
got some some videos there. Some of
52:03
videos I explaining how to use the
52:05
agenda maker the recent ones, but also
52:07
some of them are
52:09
about this journey of how
52:11
to code with AI.
52:13
There are some concrete examples also like
52:16
I coded recently,
52:18
a Chrome extension, bookmarking Chrome extension,
52:20
all the code, the explanations is
52:23
on on YouTube and, and the
52:25
code on GitHub. So I've got
52:27
different projects like that. And yeah,
52:30
I'm usually documenting what I do on on
52:32
YouTube. Yeah, nice. So people can check that
52:34
out. All right. Well, I think that about
52:37
does it for the time that
52:39
we got together, but they should come on and
52:41
sharing your story. I think it'll inspire a lot
52:44
of folks. Thank you. I hope that everything was
52:46
clear. I wasn't curious to
52:48
be too cryptic, like the developers I
52:50
was talking about. But yeah,
52:53
so it's, it's really, really exciting.
52:55
It's rejuvenating, as you could
52:57
say, even to open up a whole
52:59
world of possibilities, right? I wish I
53:02
would have started earlier, to be honest,
53:04
because when I see my son, he's
53:06
18. And what he, you know, what
53:08
he already does today with
53:11
Python, that's quite amazing. So when you're
53:13
18, imagine where you will be when
53:15
you will be 48 or 49,
53:19
it will be like really good. So
53:21
yeah, that's the beauty, that's the beauty
53:23
of it. So don't wait too long.
53:25
If you're listening to the
53:27
podcast start today or yesterday, even. Yeah,
53:30
it's amazing. Awesome. Well, totally agree. Thanks
53:32
so much for being here. And
53:34
see you later. Thank you so much. Bye bye.
53:36
Bye. This has been another
53:38
episode of Talk Python to me. Thank
53:41
you to our sponsors. Be sure to check out what
53:43
they're offering. It really helps support the show. Mailtrap,
53:47
an email delivery platform that
53:49
developers love. Try for
53:52
free at mailtrap.io. And
53:55
level up your Python, we have one
53:58
of the largest catalogs of Python video
54:00
courses over at TalkPython. Our content ranges
54:02
from true beginners to deeply advanced topics
54:04
like memory and async. And best of
54:06
all, there's not a subscription in sight.
54:09
Check it out for yourself at training.talkpython.fm.
54:12
Be sure to subscribe to the show, open your favorite
54:14
podcast app, and search for Python. We should be
54:17
right at the top. You can also
54:19
find the iTunes feed at slash iTunes,
54:21
the Google Play feed at slash Play,
54:23
and the Direct RSS feed at
54:25
slash RSS on talkpython.fm. We're
54:27
live streaming most of our recordings these days.
54:29
If you want to be part of the
54:32
show and have your comments featured on the
54:34
air, be sure to subscribe to our YouTube
54:36
channel at TalkPython.fm slash YouTube. This
54:38
is your host, Michael Kennedy. Thanks so much for
54:40
listening. I really appreciate it. Now get out there
54:42
and write some Python code.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More