Podchaser Logo
Home
I Built A Python SaaS with AI

I Built A Python SaaS with AI

Released Saturday, 27th April 2024
Good episode? Give it some love!
I Built A Python SaaS with AI

I Built A Python SaaS with AI

I Built A Python SaaS with AI

I Built A Python SaaS with AI

Saturday, 27th April 2024
Good episode? Give it some love!
Rate Episode

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.

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features