Home
Categories
EXPLORE
True Crime
Comedy
Business
Society & Culture
History
Sports
Health & Fitness
About Us
Contact Us
Copyright
© 2024 PodJoint
00:00 / 00:00
Sign in

or

Don't have an account?
Sign up
Forgot password
https://is1-ssl.mzstatic.com/image/thumb/Podcasts116/v4/b4/ec/e0/b4ece073-38c4-9856-48f0-1c3b53b6e5cd/mza_7307790436765661670.jpg/600x600bb.jpg
The Cloud Seminar
Nilesh from Cloud Genius®
12 episodes
1 day ago
Summary Confidently ship production cloud services like a genius ✨
Show more...
Technology
RSS
All content for The Cloud Seminar is the property of Nilesh from Cloud Genius® and is served directly from their servers with no modification, redirects, or rehosting. The podcast is not affiliated with or endorsed by Podjoint in any way.
Summary Confidently ship production cloud services like a genius ✨
Show more...
Technology
Episodes (12/12)
The Cloud Seminar
AMA Open 🎤 & Governor shows up ☺️

Hit the ► button below

AMA Open 🎤 & Governor Swaraj
@governorswaraj shows up in the Twitter Space discussion ☺️

Show more...
2 years ago

The Cloud Seminar
Docker-based WordPress with MySQL behind a TLS-protected reverse proxy #0010

Summary

In this hands-on live session, I demonstrate how to run WordPress with MySQL behind a TLS-protected reserve proxy on a machine in the cloud.

Error resolution

I ran into an error in the live stream. This gist contains the fix for the issue.

version 3 fixed after livestream
version 3 fixed after livestream . GitHub Gist: instantly share code, notes, and snippets.
Gist262588213843476

AI-Generated Transcript

Show more...
2 years ago

The Cloud Seminar
Docker-based services behind a reverse proxy with TLS certs hands on #0009

Summary:

In this hands-on live session, I demonstrate how to use docker to run TLS-protected services behind a reverse proxy in a machine in the cloud.

AI-Generated Transcript

Show more...
2 years ago

The Cloud Seminar
1x1 w Akshay Narisetti + Q/A 🎤

Summary:

Akshay is a problem solver, a curious, passionate tinkerer, explorer and builder of solutions of problems that catches his attention.

I keenly observe the younger generation and @AkshayNarisetti caught my attention.

So here we go talking 1x1 on a Twitter space followed by open questions/answers from the audience.

🩸 Raw. Uncut. Bloody dynamite

Ex-IAS @LVNilesh (Maharashtra cadre) left job because of corruption. Unveiling the truth behind elite cadre & tech world.

Unfiltered, unapologetic TRUTH that'll set Twitter on FIRE! 🔥

Save the date 👉 https://t.co/dclshJIbAU

— Akshay Narisetti (@AkshayNarisetti) May 20, 2023

AI-Generated Transcript

Show more...
2 years ago

The Cloud Seminar
Understanding TLS certs LetsEncrypt hands-on #0007

Summary:

In this session, I describe the end-to-end trust chain behind a certificate used to enable Transport Layer Security TLS between any two endpoints.

Next, I demonstrate the creation and use of a real TLS cert using the LetsEncrypt open and automated TLS generation technique and test to verify everything.

AI-Generated Transcript

Show more...
2 years ago

The Cloud Seminar
F.I.R.E. 🔥 Q&A with Nilesh #0006

Twitter user @itsbhavuk recently discovered that I successfully transitioned my career several times.

💡
IAS Topper turned Microsoft Product Builder turned Entrepreneur, Founder, Cloud Genius®

Hit the ► button below

559 tuned in live on my first Twitter space. 😱

Folks still listening 🎧 to my nonsense.

I will put this recording on my Spotify.

Enjoy everybody! https://t.co/nx6GTcYqtw

— LV Nilesh (IAS हवा AIR-3) 1990 (@LVNilesh) May 17, 2023

AI-Generated Transcript of the Twitter Space Recording

WEBVTT

00:00.000 --> 00:25.800
We will leave the

00:25.800 --> 00:26.960
Today's

00:56.960 --> 01:12.840
Hello, guys. You are welcome to ask for a speaker if you want to speak. This is a Q&A

01:12.840 --> 01:17.840
and I'll begin shortly, like in three minutes from now. We started a little bit early to

01:17.840 --> 01:24.560
give enough time for people to join in. I'm going to request Akshay to help me co-host

01:24.560 --> 01:34.120
this. So I'm going to invite Akshay now as a co-host. Akshay KTWT. Okay, that's the name.

01:34.120 --> 01:45.160
So invite Akshay K. Invited as a co-host. Let us see who else is here. I hope you can

01:45.160 --> 01:56.760
hear me. If you cannot hear me, just let me know. I think you can hear me. Who else? So

01:56.760 --> 02:05.720
okay, good. Priya says she can hear me. Nice. If I am sounding too faint, tell me to speak

02:05.720 --> 02:11.800
up. This is my first Twitter space. I just tested one like a few minutes ago.

02:11.800 --> 02:16.800
Okay, great. Great. Everything is great.

02:16.800 --> 02:26.440
Okay, clean sound. That's good. Good to know. Sound sometimes, you know, especially in a

02:26.440 --> 02:35.120
global network like this can be challenging sometimes. You know, Elon runs a million people

02:35.120 --> 02:43.880
of Twitter space and sometimes he has problems. Because technology, right? When you need something,

02:43.880 --> 02:51.400
it will not work. What's the law that goes by this essence? Like when you want something

02:51.400 --> 02:58.040
to work, it doesn't work. What is that law? There's a law behind it. Do you know? Does

02:58.040 --> 03:06.200
anyone know? When you want something, it will not work exactly the way you want. So like

03:06.200 --> 03:12.000
if you take a piece of bread and you put butter on top and you accidentally drop it, which

03:12.000 --> 03:19.200
side will fall on the ground? Is it the butter side or the non-buttery side? That's the question.

03:19.200 --> 03:24.520
You know the answer is the buttery side will go to the ground. And that's a fact.

03:24.520 --> 03:31.480
Yes, exactly. Because of weight. Yes, maybe not. But the real answer to my

03:31.480 --> 03:38.560
question was what is the law behind it? What is the name of that law? It's called Murphy's

03:38.560 --> 03:47.600
law. Murphy. M-U-R-P-H-Y. You can search for it. Murphy's law. It's almost like a meme,

03:47.600 --> 03:52.440
but it's very real. That's how it works. So when Bill Gates goes and demonstrates Windows

03:52.440 --> 03:59.320
something something XP, I think on the stage with millions of people watching. And what

03:59.320 --> 04:06.640
happens is the very first thing. You know what happened? Do you? Anybody? You can tweet

04:06.640 --> 04:12.160
out and put this thing called Nest. So there is a thing called Nest in here somewhere.

04:12.160 --> 04:16.600
I've seen it. The thing that happened with Bill Gates when he was presenting Windows

04:16.600 --> 04:27.560
XP was blue screen of death. I'm sure you must have seen those videos on somewhere.

04:27.560 --> 04:31.800
So it is nine o'clock. I mean, nine o'clock for my time. Your time is probably different.

04:31.800 --> 04:40.940
But we need to start. So let me introduce myself. My name is Nilesh and I'm doing this

04:40.940 --> 04:46.360
Twitter space first time. Any space. I'm running it first time. The question somebody

04:46.360 --> 04:55.400
asked the other day was. How do we think about retirement? You know, what is retirement?

04:55.400 --> 04:59.840
What does it mean to you? What does it mean to me? Everybody has a different definition.

04:59.840 --> 05:04.600
And so I think we should begin discussing this with a simple idea about defining what

05:04.600 --> 05:11.400
requirement is. And I'll do that with a story. A story that goes like this. And by the way,

05:11.400 --> 05:15.040
I should like set some, you know, some, some concepts here, which is, you know, if you

05:15.040 --> 05:19.600
want to ask a question, you know, come up on stage and ask. I think our, you know, friendly

05:19.600 --> 05:24.960
co-hosts we have here, Akshay. He'll let you in. And Akshay will, you know, honor you

05:24.960 --> 05:28.960
in terms of, you know, if you have one, raise your hand and ask a question, you know, he'll

05:28.960 --> 05:32.840
keep track of who's asking the question first. And he'll let him speak. And you can interrupt

05:32.840 --> 05:38.800
me anytime you feel like, you know, there is no issue. I never prepare my speech or

05:38.800 --> 05:44.480
my talks. And I just talk without any written material. I speak straight what I am thinking

05:44.480 --> 05:50.040
about and I just talk. That's how I work. So what I was telling you about is defining

05:50.040 --> 05:57.080
what retirement is. So let's begin with that by telling you a story, a story that is actually

05:57.080 --> 06:02.840
probably real because I have seen similar stories in real life. The story is from a

06:02.840 --> 06:11.080
fisherman lives in Mexico on the beach. He has a small hut and he gets up in the morning,

06:11.080 --> 06:17.960
goes out fishing, catches some fish, brings home and gives it to his wife. His wife cooks

06:17.960 --> 06:25.480
it and they eat lunch. And then this fisherman sleeps, takes an afternoon nap, siesta. He

06:25.480 --> 06:30.800
gets up in the evening, you know, he goes out, you know, party with his friends, come

06:30.800 --> 06:37.880
back home, you know, enjoy time with family, sleeps. Gets up in the morning, does the same

06:37.880 --> 06:43.080
thing. So one person comes in and says, you know what, you're a poor man. You live in

06:43.080 --> 06:48.800
the small hut, you catch fish and you bring home fish and then you sleep every day in

06:48.800 --> 06:54.400
the afternoon and then you're not doing much. You should do something more. So he says like,

06:54.400 --> 06:59.440
like what, what should I do? And so then, then the gentleman who was like from, from

06:59.440 --> 07:03.480
the U S they're called gringos, by the way, the gringos means people from America who

07:03.480 --> 07:08.800
go to Mexico, like white people go to Mexico, they're called gringos. So this gringo, which

07:08.800 --> 07:12.320
is basically an American going to Mexico, telling the Mexican, Hey, you should do something

07:12.320 --> 07:17.280
better in your life. So that Mexican says like what? And she says, you know, maybe you

07:17.280 --> 07:22.640
should buy a bigger boat and go fishing and you know, catch bigger fish and more fish

07:22.640 --> 07:27.240
and bring that home. And then, and then what, what should I do with it? Oh, you should sell

07:27.240 --> 07:32.280
it in the market to make, to do what? To make more money so you can get more money. And

07:32.280 --> 07:37.480
then, then what? Then you, you invest that money into buying bigger boats and even bigger

07:37.480 --> 07:42.280
boats and maybe a fish trawler and a giant machine equipment with you to catch tons and

07:42.280 --> 07:47.360
tons of fish out there in the ocean, bring it all home, put it on some marketplace, make

07:47.360 --> 07:52.260
tons and tons of millions of dollars. And so he says, then what? Well, then you can

07:52.260 --> 07:59.000
enjoy on, on the beach, like sit in the sun afternoon, you know, and enjoy, see a star,

07:59.000 --> 08:02.320
you know, have, have dinner, whatever you want, do whatever you like. So he says, I

08:02.320 --> 08:08.480
already do all of that. What do you mean? I already enjoy my life. I already doing it.

08:08.480 --> 08:14.080
I already live what I want. And that's the story behind what I think is how we should

08:14.080 --> 08:19.880
think about retirement. Retirement is purely a personal thing. Like it has something to

08:19.880 --> 08:25.320
do with what you have in mind about you. So that was just a story part. By the way, these

08:25.320 --> 08:29.920
stories are real. I have seen them in India. I've seen them in the U S I've seen them in

08:29.920 --> 08:35.880
multiple other places that have been, and it is really what you do with yourself. It

08:35.880 --> 08:41.280
is about you. It has nothing to do with anybody else. So no comparisons needed that you don't

08:41.280 --> 08:47.520
have to compare with what other people do. You know, in, I'll speak something in Hindi

08:47.520 --> 08:51.640
so that people will understand. You know, some people have different contexts. I'll

08:51.640 --> 09:01.240
translate that into English also, but translating that into him in English, you don't worry

09:01.240 --> 09:06.680
about what other people are doing. Don't chase them because it is about you is what you should

09:06.680 --> 09:16.480
chase. What you should go after is actually what I call 10 year older me. So Nilesh plus

09:16.480 --> 09:25.000
10, that's what I chase. And I go after that. And I know I will never catch up, never ever

09:25.000 --> 09:29.760
catch up because that's what I'm heading because whenever, when I reach 10 years older than

09:29.760 --> 09:35.560
what I'm currently at that then Nilesh plus 10 is I had 10, 10 years again ahead of me.

09:35.560 --> 09:40.040
I will never get there. I know I will never get there, but that's what I'm chasing. I'm

09:40.040 --> 09:47.600
not chasing Vijay. I'm not chasing Akshay. I'm not chasing anybody else. I don't care.

09:47.600 --> 09:53.320
Like absolutely do not care. I know I have friends who are doing better than me. Some

09:53.320 --> 09:57.520
of them unfortunately are not doing as better. And I think I should, so Akshay please add

09:57.520 --> 10:03.240
Bhavuk as cohost if you can, otherwise I will add him. So hold on. If you can do it, otherwise

10:03.240 --> 10:10.840
I'll do it in five minutes. So Bhavuk just showed up. So add him as a cohost please.

10:10.840 --> 10:17.440
So what I was talking about is this comparison thing. This retirement idea is about people

10:17.440 --> 10:23.400
tend to compare. How am I doing? This person got a million dollars. I did not. Why? What

10:23.400 --> 10:29.680
am I doing wrong? Why does my life suck? No, it doesn't suck. You're comparing it with

10:29.680 --> 10:37.480
the wrong thing. Taking back to simple high school, college level, he scored more marks,

10:37.480 --> 10:44.800
more graduation, whatever you call them, grades. He scored a 4.0, 10.0 and I did not. This

10:44.800 --> 10:51.760
is dumb nonsense. Don't do that. Don't even study for the exam, for the sake of the exam,

10:51.760 --> 10:56.520
because that's the wrong thing to do. Study for what you like. And exams are like, okay,

10:56.520 --> 11:01.840
a hurdle that you pass, but that's not the goal. The goal is you want to do something

11:01.840 --> 11:06.880
that you want and you will do it. And for that you have to study, you will study. For

11:06.880 --> 11:11.080
that you have to maybe dig a hole, you dig a hole or do whatever else needed to make

11:11.080 --> 11:16.800
things happen. That's what you should focus on for yourself, for the future you and your

11:16.800 --> 11:22.600
family and your friends. And then slowly expand the influence that you have on what you want

11:22.600 --> 11:28.080
to accomplish in life, ignoring everything else on the planet. I think that's how the

11:28.080 --> 11:36.080
framework of thinking about what retirement is or should be, is how I believe. Now having

11:36.080 --> 11:41.000
said that, I think I would like to keep this interactive, which is, I don't want to give

11:41.000 --> 11:47.320
you a boring talk and I talk, by the way, I talk for eight to 10 hours at a stretch.

11:47.320 --> 11:51.960
No problems. I've done that many times. I do it routinely by the way. I keep talking

11:51.960 --> 11:58.440
on any topic you bring up and I'll give you a sermon, a speech, a lecture without making

11:58.440 --> 12:03.520
you fall asleep. That is my goal. I do that for a profession. That's what I've been doing

12:03.520 --> 12:09.900
for 15 years. So I don't want to do that to you, by the way. So I'll keep it interactive.

12:09.900 --> 12:14.040
What does that mean? I'll let you ask questions and I'll keep it interactive. The title of

12:14.040 --> 12:19.800
this talk is basically Q&A with Nilesh. So keep those coming because that will drive

12:19.800 --> 12:25.520
my communication with you. I don't want it to be one-to-many communication. I want it

12:25.520 --> 12:31.000
to be many-to-many communication. If we have experts here, people better than me, and I

12:31.000 --> 12:36.400
invite them on stage and just bring your questions, even if you don't think you're better than

12:36.400 --> 12:42.640
me because comparison is bad and I just compared, I'm sorry. I should not compare myself or

12:42.640 --> 12:49.080
anybody, but please bring your questions and we'll keep it interactive. So open the floor,

12:49.080 --> 12:55.520
let people come in, ask questions, raise your hand and go ahead. And you can just open your

12:55.520 --> 13:00.360
microphone and interrupt me. No problems. So go ahead. In fact, yeah, go ahead. Shoot

13:00.360 --> 13:08.200
your question. Akshay, I see your hand. Yeah. Thank you. Thank you, Nilesh. It's my pleasure

13:08.200 --> 13:14.360
to hear the view. So my question is that as we, many of us know about your starting journey,

13:14.360 --> 13:20.880
that you have been an IAS officer and so, but yeah, we read your LinkedIn profile also,

13:20.880 --> 13:26.400
but many of us doesn't know like how you feel and how like in your thinking or thoughts

13:26.400 --> 13:30.800
experience. So would you like to share that experience, how you started and how you, during

13:30.800 --> 13:38.000
that IAS journey and after that you changed and you came in the tech sector? Okay. So

13:38.000 --> 13:45.400
I'll tell you in 1988, I graduated my bachelor's degree and I wrote the GATE exam. I used to

13:45.400 --> 13:51.920
live in a state called Madhya Pradesh, which is, I call it the backwaters of India, jungle

13:51.920 --> 14:00.680
area. Like it's like basically sorry. I know I'm from there. So they don't know, they don't

14:00.680 --> 14:06.640
know any better. So I wanted to explore. I wanted to explore what else is out there.

14:06.640 --> 14:15.400
So I chose to write this exam called GATE and in that GATE exam I scored like 99.97 percentile.

14:15.400 --> 14:23.600
And you know what? I was heavily disappointed, like absolutely disaster. Why 99.97? What

14:23.600 --> 14:28.960
happened to 99.99? And I was idiot, a dumb person who doesn't know, who didn't know.

14:28.960 --> 14:34.560
I didn't know what percentile is at that time. And then I studied and then I figured out

14:34.560 --> 14:38.760
and then I laughed at myself because mathematically it was impossible to score anything more than

14:38.760 --> 14:44.360
that 99.97. There are not many number of people who participated in the exam. So the percentile

14:44.360 --> 14:50.240
score could not have been any better. That was what I found out later after the fact.

14:50.240 --> 14:53.440
So I did that GATE and then I chose, okay, where should I go? Because I could now go

14:53.440 --> 14:59.000
anywhere I want. So I chose IASC Bangalore, computer science. I studied there for one

14:59.000 --> 15:05.180
and a half years. And there I got a job in Citibank in New York, as a direct placement

15:05.180 --> 15:11.480
here in New York and a couple of the jobs in Bangalore and other places. And I was almost

15:11.480 --> 15:18.240
about to join that Citibank thing. And then somebody said, Nilesh, you are very smart.

15:18.240 --> 15:25.520
Show me your exam. Show me your IUPSE exam. I'll translate that into English. You think

15:25.520 --> 15:31.920
you're smart? Try this exam, this stupid nonsense exam, whatever that thing is called, UPSC

15:31.920 --> 15:37.800
something. And so I said, bring it on. And I took the exam. And not only that, I took

15:37.800 --> 15:44.120
a bunch of other exams like IES exam. I don't even remember the names, but a bunch of other

15:44.120 --> 15:48.840
competitive exams. I took all of them and scored second in India, third in India, random

15:48.840 --> 15:56.000
scores like that. And then what happens? These press reporters show up at your home. They

15:56.000 --> 16:01.800
take pictures and put you on the Times of India front page. And your head goes to the

16:01.800 --> 16:07.040
highest mountain, maybe to the clouds. Like I was doing clouds at that time. There was

16:07.040 --> 16:12.680
no cloud computing at that time. But they elevated me. So when they put you on a pedestal,

16:12.680 --> 16:18.440
your head gets corrupted, like absolute corrupted head, because you don't think rationally anymore.

16:18.440 --> 16:24.800
Because people are elevating you on a high pedestal. So you basically are intoxicated,

16:24.800 --> 16:30.320
drunk, and you cannot think rationally. And that's what happened to me. And I joined the

16:30.320 --> 16:36.480
IAS, the exam, I passed the exam. So I showed up at the academy and I enjoyed. By the way,

16:36.480 --> 16:42.120
I should say that I absolutely thoroughly enjoyed my 10 years with them. But what happens

16:42.120 --> 16:48.400
in the process is that you gain a lot of experience of dealing with real life, real people, who

16:48.400 --> 16:55.160
are real poor people in India, and real corrupt people in India, real politicians in India.

16:55.160 --> 17:00.960
I got to deal with that. And I found out what that thing is, a couple of lessons that I

17:00.960 --> 17:06.840
learned at the age of 25, after like two or three years, two years in the service. I was

17:06.840 --> 17:11.800
in the district called Bhandara in Maharashtra. And that's where I learned a lesson. The lesson

17:11.800 --> 17:27.160
was a self realization that people don't respect you. People respect the chair you sit on.

17:27.160 --> 17:33.320
You should try to improve yourself that people will go after you as a person, not for the

17:33.320 --> 17:39.760
chair you sit on, not for the position you sit on. And that's when I realized that I

17:39.760 --> 17:47.160
am doing something wrong. It is simply because when I drive, sorry, my chauffeur, my driver

17:47.160 --> 17:52.480
will drive me, people will salute the car that I'm in. Not because they want to salute

17:52.480 --> 17:59.160
me, but because they are saluting the car. They're saluting my chair, not me. I would

17:59.160 --> 18:04.360
like to have the importance in me. It should originate from me from within, not from the

18:04.360 --> 18:11.000
position I hold. And that is when I realized that I'm doing something wrong. But I took

18:11.000 --> 18:16.160
some time to realize that. I actually worked through eight and eight or nine years until

18:16.160 --> 18:21.640
I read Mantralay, which is Secretariat in Bombay. Mantralay is in the cap, the capital

18:21.640 --> 18:26.800
of the state. And I reached the position of energy department secretary and negotiated

18:26.800 --> 18:33.840
with the Enron company in Thabo about project and all that you may have heard of. And then

18:33.840 --> 18:42.120
I found out that this is something that I am not actually enjoying anymore because comparison.

18:42.120 --> 18:47.160
I tend to compare myself with other people in the Tata administrative service with the

18:47.160 --> 18:53.040
attorneys coming from London to interact with me, negotiate with me about Enron project.

18:53.040 --> 18:58.200
And my salary in India at that time was 8,000 rupees, which is like less than $50 or something,

18:58.200 --> 19:03.800
maybe $70 or something like that. So pretty darn low salary, but don't worry. I have a

19:03.800 --> 19:10.320
home assigned to me and a driver and a car and furniture and everything given to me by

19:10.320 --> 19:15.360
the government. Salary was low and that's okay. I used to live. I used to live. Goodbye.

19:15.360 --> 19:22.360
But living on the 34th floor in Nariman point overlooking the ocean in Bombay, beautiful

19:22.360 --> 19:32.400
spot. You may have seen it. I look down and I see that there is a swimming pool down there.

19:32.400 --> 19:36.640
My son at that time was like four, four years old. He used to also say, you know what, dad,

19:36.640 --> 19:41.720
I want to go to the swimming pool. So I said, okay, let's go. And I go to that door entrance

19:41.720 --> 19:46.040
and there is a membership fee. It was not a government thing. It was a private swimming

19:46.040 --> 19:52.200
pool or some community there, some club there. And at the door they asked me to, are you

19:52.200 --> 20:01.080
a member? I said, no. What's the membership fee? 35,000 rupees. My salary was 8,000 rupees.

20:01.080 --> 20:04.880
And that's where I struck something that I am doing something wrong, not just to me,

20:04.880 --> 20:13.760
but to my family. I need to find something else. So what, what did I do? I looked up

20:13.760 --> 20:19.800
times of India at the advertisements for all the job postings and I applied to 50 different

20:19.800 --> 20:29.440
places. 50. How many responses did I get? Zero. Except one company wrote me a letter

20:29.440 --> 20:36.240
saying you are overqualified. And I said, no, this is fundamentally wrong, something

20:36.240 --> 20:43.920
wrong. And then I figured out that the real value an IS officer brings to the table is

20:43.920 --> 20:49.920
nuisance value. People don't want to associate with them because in the high ranking government

20:49.920 --> 20:55.280
officer, you don't know who he knows, what he can do or things of that nature. So you

20:55.280 --> 21:00.880
want to avoid them. Why bring on trouble into our company? Because we don't know what we

21:00.880 --> 21:06.960
don't know. That's the challenge. So people avoid such things like such, such associations

21:06.960 --> 21:14.560
with high ranking government officials. So now what? How will I do something different?

21:14.560 --> 21:20.160
And then I ran into this guy called Sam Pithroda. You may have heard of him. He led the revolution

21:20.160 --> 21:25.880
of Indian telecom, starting what is called, what used to be, I don't know if you guys

21:25.880 --> 21:31.760
know this thing, but there's a thing called PCOs, STD PCO, public call office, phone booth

21:31.760 --> 21:39.040
where you pay some rupees and you can make a call, phone call. That used to be a thing.

21:39.040 --> 21:45.840
It doesn't exist anymore. There is no such thing. Those PCOs were created by Rajiv Gandhi

21:45.840 --> 21:51.760
and this guy, Sam Pithroda. And so they started, they wanted to have that in the state of Maharashtra.

21:51.760 --> 21:57.400
So this Pithroda guy comes in to meet the chief minister in Bombay and he's a technical

21:57.400 --> 22:04.480
person. And so all these officers struggled to find a person who can talk to Sam Pithroda

22:04.480 --> 22:08.040
and they found me and said, you know what, you should go and meet with him. I said, fine.

22:08.040 --> 22:13.080
So I show up and I was in the car with Sam and we were driving to the chief minister's

22:13.080 --> 22:19.320
office in somewhere. I don't remember where it is now, but on the way I'm just casually

22:19.320 --> 22:24.480
chatting with him. And he asked me, Hey, what do you do? And I said, this and that, what

22:24.480 --> 22:32.000
did you study? And I told him. And so then he says, weren't you stupid to join the IAS?

22:32.000 --> 22:38.640
And I said, you know what, whatever I did up till now was exactly what I wanted, but

22:38.640 --> 22:45.760
in hindsight, maybe I would have done something different. Hindsight is always good. You know,

22:45.760 --> 22:48.800
it's 2020. You already know about what you have done, but you don't know what's going

22:48.800 --> 22:54.600
to be in the future. So then he says, you know what, I have an idea. Why don't you study?

22:54.600 --> 22:59.920
I have a friend from university of Michigan who's visiting us here in Nariman point. He's

22:59.920 --> 23:04.720
living at the Oberoi, staying at the Oberoi hotel. Would you like to meet him? I said,

23:04.720 --> 23:10.640
who's that guy? And so he says, he's professor Prahalad. CK Prahalad is a well known professor.

23:10.640 --> 23:15.760
He unfortunately died seven years ago. So the CK Prahalad is well known for his book

23:15.760 --> 23:23.920
and famous works on consulting on, and the word he coined was, you know, core competence

23:23.920 --> 23:28.200
of a corporation. The word core competence was coined by him. He was a business school

23:28.200 --> 23:33.880
professor at university of Michigan. So he was there and I had breakfast with him and

23:33.880 --> 23:38.920
he says, you know what, why don't you come and join my class? And I told him, I already

23:38.920 --> 23:45.120
have two degrees. Are you kidding me? You want me to study again? And he says, yes,

23:45.120 --> 23:51.120
I want you to go back home and come meet me tomorrow and think overnight as to what you

23:51.120 --> 23:57.720
should be doing. So I came back home. I called my parents. What do you think? My parents

23:57.720 --> 24:03.680
said, you know what, you don't like this job. You quit because we know you can find something

24:03.680 --> 24:10.200
else. So you do whatever you like. And it is very strange for any Indian parent to tell

24:10.200 --> 24:16.040
their IAS officer child to quit. I never heard of such a thing. Nobody believes me when I

24:16.040 --> 24:21.960
say that. But my parents said, go ahead, do what you want. And so I came back, talked

24:21.960 --> 24:29.400
to my wife and told her and she says, yes, let's do it. And I went back next morning,

24:29.400 --> 24:38.360
met the professor again and said, I will apply. And I wrote GMAT, wrote my essays and I applied

24:38.360 --> 24:46.560
to University of Michigan and I did not get selected. Yes, I did not get admission because

24:46.560 --> 24:52.480
they could not relate to what I was trying. Then I had to apply for an exception to get

24:52.480 --> 24:58.800
an interview with the admissions office at the university to go in person and tell them

24:58.800 --> 25:04.600
what I want to do. So they said, yes, you can come for an interview. Then I flew in

25:04.600 --> 25:12.640
from India just to interview with University of Michigan Ann Arbor admissions office, MBA

25:12.640 --> 25:18.680
office. The visa office was confused. I said, why do you want to go for an interview for

25:18.680 --> 25:25.160
an MBA? Nobody goes like that. And I said, you know what, here is a letter. I did not

25:25.160 --> 25:32.520
get selected. I want to go meet them and I will come back. And they granted me a visa.

25:32.520 --> 25:37.840
I took the longest possible flight with like four or five hops, A to B to C to D, something

25:37.840 --> 25:45.280
like multiple hops to find the cheapest possible ticket. And I reach Ann Arbor at the door

25:45.280 --> 25:50.920
at the entrance of the school. This lady comes up and says, Mr. Loon, are you here? And I

25:50.920 --> 25:58.080
said, who? What? That's not me. Mr. Loon. That's supposed to be my last name pronunciation.

25:58.080 --> 26:03.080
And so I ignored her. But my time is coming up. And then I get up and say, you know what,

26:03.080 --> 26:07.760
I'm here and I'm here for the interview. And then say, I've been asking, looking for you.

26:07.760 --> 26:13.680
Where are you? And so then she pulls me up, brings me inside. We interact with this lady

26:13.680 --> 26:20.480
called Amy there. I still remember her. And at the end of 30 minutes, she says, congratulations.

26:20.480 --> 26:27.200
Go blue. And I had no idea what go blue means. Go blue means, you know, it's the blue color

26:27.200 --> 26:32.440
of the University of Michigan. And it means congratulations. You're, you're admitted.

26:32.440 --> 26:39.440
That's what it means. And so she gave me the admission on the spot. I came back to India,

26:39.440 --> 26:44.840
sold everything, whatever I had. I had like not, not, not many things because all of this

26:44.840 --> 26:49.360
furniture and stuff was given to me by the government. So I did not have any much, but

26:49.360 --> 26:53.840
whatever I had, I sold it off. Rest, I moved it to my parents home, packed a few suitcases,

26:53.840 --> 27:00.080
me, my wife, and my son. At that time, he was four. We took another flight, came here

27:00.080 --> 27:10.400
in August 22, 1999. And I joined the MBA school, University of Michigan. $200,000 loan was

27:10.400 --> 27:17.000
needed and nobody would give me because when you are in the U S and you don't have what

27:17.000 --> 27:23.120
is called history of credit or credit history, nobody would give you a loan at all. And then

27:23.120 --> 27:27.920
I said, you know, University of Michigan, I need money. I cannot continue the education

27:27.920 --> 27:34.280
unless somebody gives me a loan, help me out. So the financial aid office says, meet us

27:34.280 --> 27:40.880
in seven days. And I went back there after seven days and university agreed to co-sign

27:40.880 --> 27:48.680
my, my loan for $200,000 with city bank. Yes. That's the reason why I actually succeeded

27:48.680 --> 27:53.720
in getting a loan. Otherwise I would have gone back, could not succeed because money

27:53.720 --> 27:58.680
is impossible. Like 200,000 is way too much money. I rather, it was way too much money

27:58.680 --> 28:04.880
at that time. But I finally got success through University of Michigan co-signature because

28:04.880 --> 28:11.480
I don't have any credit. I did not have any credit at that time. I start my MBA. MBA is

28:11.480 --> 28:15.560
a two year program. It has like four months summer internship in between summer opportunity

28:15.560 --> 28:21.880
in between. I made it six months in between by taking out two extra months out of college

28:21.880 --> 28:27.240
and said, I will go and work because when I try to apply to any company in the U S nobody

28:27.240 --> 28:33.680
would hire me. They absolutely zero job offers on campus in Michigan. There are like eight

28:33.680 --> 28:40.640
to eight to 900 companies come on campus to recruit. And there are only 400 students.

28:40.640 --> 28:49.600
Everybody gets a job. Absolutely everybody. I did not. Yes. I did not get a job, no job.

28:49.600 --> 28:56.240
And I have a wife and son with me still don't have a job. Then what do I do? Then I said,

28:56.240 --> 29:01.920
you know, I need to do something different. And I fly to California Bay area and I did

29:01.920 --> 29:10.080
not have a computer. Did not have a car. I had my shoes with me. I had a printer in the

29:10.080 --> 29:16.840
college where I printed my resume. I walked door to door taking a bus about 20 to 25 companies.

29:16.840 --> 29:22.480
I go in person applied meet face to face at the receptionist. These days you cannot even

29:22.480 --> 29:27.480
do that. You cannot just walk into a company say, Hey, here is my resume. I used to do

29:27.480 --> 29:32.680
that. You know, it was possible in 2000. Today you cannot do it. They just don't open you

29:32.680 --> 29:40.440
the door. So that's how I found out by interacting face to face with a company called Ariba.

29:40.440 --> 29:46.240
And I worked for them for free two months, free internship. Just like I hear in India,

29:46.240 --> 29:51.600
people are doing paid internship these days, which is they pay money to get an internship.

29:51.600 --> 29:56.840
I know that's a sad state of affairs, but yeah, unfortunately that's kind of similar

29:56.840 --> 30:03.720
to what I did, except I did not pay, but I got credit for college as against my work

30:03.720 --> 30:08.480
for two months. So they gave me some credit, not money. That was good enough. I took it

30:08.480 --> 30:14.160
and I put that on my resume and put all my 10 years of experience in the IAS as one line

30:14.160 --> 30:19.280
helping the Indian people. That's it. One line. Nobody understands what that means.

30:19.280 --> 30:25.280
And I don't even want to highlight it. And I put everything about Ariba in two paragraphs

30:25.280 --> 30:31.560
in my resume. And I found a second internship with Sun Microsystems. And yes, that's where

30:31.560 --> 30:40.080
I slept on the garage floor in the admin's garage admin for the VP at Sun. Yes. I know

30:40.080 --> 30:47.120
how to sleep in the garage on the floor. Yes. The same guy who was in India, a top ranking

30:47.120 --> 30:54.960
officer is now sleeping in the garage in California while the wife and son are in a $500 per month

30:54.960 --> 31:03.000
small, tiny school housing, university housing. They did not fly to California. I was only

31:03.000 --> 31:09.960
one alone in California alone. And this time I'm making money with Sun. I take that and

31:09.960 --> 31:15.200
get another internship with Siebel Systems. This time I make quite good money and real

31:15.200 --> 31:22.380
good money. And I take that money, finish my three internships back to back six months

31:22.380 --> 31:27.320
and write that on my resume and go back to Michigan, finish my MBA with the money that

31:27.320 --> 31:36.800
I have. I bought a used car, Nissan Maxima 1994 model, old model. It was a good car,

31:36.800 --> 31:45.720
like really good. I rode that drove that car for like so many years until I think 2012

31:45.720 --> 31:52.640
when I gave it away because that's when I bought my Tesla. It has been 10 years, probably

31:52.640 --> 31:58.120
more than 10 years. But I rode, drove that car for so long, you would not believe, but

31:58.120 --> 32:02.520
I still have pictures of that car. It is a beaten up used car that I got as a student

32:02.520 --> 32:11.160
and I drove it even at Microsoft. Does that sound strange to you? Probably, but that's

32:11.160 --> 32:18.040
how you do. You don't spend more than what you should unless you earn more. That's about

32:18.040 --> 32:23.000
retirement. So that's a common theme right there. You don't overspend. You don't show

32:23.000 --> 32:29.680
off that you are working at Microsoft. You can buy a fancy car, but you don't because

32:29.680 --> 32:35.680
you want to save. That's what I did. That's one of the secrets, by the way. That's the

32:35.680 --> 32:44.240
secret number one. Don't overspend. Don't show off. If you show off, you're basically

32:44.240 --> 32:51.660
hurting yourself. You may feel good temporarily, but you're hurting yourself. That's the concept.

32:51.660 --> 32:56.920
You need to think about that. I always tell people, everybody that there's a question

32:56.920 --> 33:02.960
here and request something. Somebody requesting what? Kavya. She's asking to speak. Hey guys,

33:02.960 --> 33:10.160
what are you doing, man? These co-hosts, where are they? Actually, sometimes it happens.

33:10.160 --> 33:15.920
Capacity is limited sometimes, so because of that. Yeah, please, please manage. I'm sorry

33:15.920 --> 33:22.440
if somebody wants to speak and unable to get accepted. I'm sorry for that. Okay, I'm managing.

33:22.440 --> 33:30.360
Thank you. Thank you. What I was talking about is don't overspend. Yes, having worked at

33:30.360 --> 33:37.560
Microsoft, I was able to create a new idea, which is called... You can see the implementation

33:37.560 --> 33:42.920
of that idea in Microsoft Teams, in Link, in Office Communicator. In other office products

33:42.920 --> 33:49.880
these days, it is called presence detection. That idea I built in 2004 in my home, and

33:49.880 --> 33:56.000
I created a prototype using Linux that I was able to talk about. I said, you know what?

33:56.000 --> 34:01.440
Bill Gates used to run demo days in Microsoft those days. Anybody can just bring a new idea

34:01.440 --> 34:04.920
to him, show it to him. I said, you know what? I have built this new idea. Why don't you

34:04.920 --> 34:13.120
come to my home? But that doesn't happen. Bill doesn't go. What did I do? I basically

34:13.120 --> 34:20.400
asked Bill that I will bring my setup to you. You see it. I showed it to him in a live physical

34:20.400 --> 34:26.880
in-person demo to him, and he liked it. He said, you know what? You should build it.

34:26.880 --> 34:32.560
And then suddenly all these big guns at Microsoft start looking at me. Who is this guy? Created

34:32.560 --> 34:40.820
something out of Linux, brings it to Microsoft. What is he up to? And then I got attention.

34:40.820 --> 34:47.640
When you get attention, you get what is called the ability to create something new, and that's

34:47.640 --> 34:54.960
how I started building something which is eventually called, you know, the unified communications

34:54.960 --> 35:00.680
line of products these days. So Teams is an example. I patented the idea. It is patented

35:00.680 --> 35:05.700
by me, assigned to Microsoft. The idea is called detection of physical presence and

35:05.700 --> 35:11.960
management of information, and you can read about that later. But that's how you get some

35:11.960 --> 35:17.240
clout in the company to create something new, to build something out of nothing. And that

35:17.240 --> 35:22.760
grows over time. So that's what I did at Microsoft. I also did a bunch of other things, you know,

35:22.760 --> 35:28.920
that you may or may not know. And so having worked that in the long process, you also

35:28.920 --> 35:36.640
want to continue to call this country where I live as your home, which means you need

35:36.640 --> 35:41.840
to get a green card. And getting a green card for Indians and people born in China is very,

35:41.840 --> 35:48.080
very difficult, like really difficult, really hard, because of country specific quota. And

35:48.080 --> 35:53.200
there are two, there are just too many Indians and too many Chinese on the planet. So on

35:53.200 --> 36:00.400
a per quota basis, it is very limited. So then I had to apply and negotiate with Microsoft

36:00.400 --> 36:05.660
for what is what I call, you know, people with exceptional abilities to get them prior

36:05.660 --> 36:12.000
faster treatment and they did the faster processing for me. Some of you in this who are listening

36:12.000 --> 36:18.280
to me actually have that special capability. You should make use of those and get fast

36:18.280 --> 36:26.560
track to your what is it called immigration, you know, green card, basically short for

36:26.560 --> 36:32.160
green card, get your green card by using your talents and asking your employer sponsors

36:32.160 --> 36:37.320
to sponsor you for faster track. This is called people with exceptional abilities. And there

36:37.320 --> 36:41.440
are a variety of things you can discuss and think, you know, read up on and make use of

36:41.440 --> 36:46.640
and apply that. And then once you get a green card, you get the ability to do whatever the

36:46.640 --> 36:54.520
F you want simply. And that's what I did. I said goodbye, Microsoft. Yeah, that's very

36:54.520 --> 37:01.840
strange again. But that is me. Because I don't listen to people. I mean, I never I even today

37:01.840 --> 37:09.680
I don't listen to anybody. I do what I like. And that's how it goes. So I quit. And then

37:09.680 --> 37:14.240
at least I now have some money, some money to live and survive for a few, few, few years

37:14.240 --> 37:20.680
maybe. So then I said, you know what, I need to do something. And I find out that there

37:20.680 --> 37:28.560
is this US military base in our area, which is called JBLM in Tacoma, south of Seattle.

37:28.560 --> 37:38.800
And there, US military lays off 10,000 soldiers every year, every year. Soldiers lay off.

37:38.800 --> 37:43.160
And the soldiers are basically high school students, grade 12, Barbie bus, take them

37:43.160 --> 37:48.920
to Afghanistan, deploy them for 10 years, bring them back home. And now these are 30

37:48.920 --> 37:58.100
year old kids with a 12 year old 12 year old brain. So high schools brain 30 years of age.

37:58.100 --> 38:04.880
And now you lay them off. What happens? They become homeless soldiers. A lot of them you

38:04.880 --> 38:12.200
see in the US homeless are actually soldiers from US military or who are laid off and cannot

38:12.200 --> 38:18.240
fend for themselves, cannot fetch food, cannot build a house, cannot do nothing. That's a

38:18.240 --> 38:24.760
major problem. So what the US government does is to help them out, retrain them. They set

38:24.760 --> 38:29.800
aside budgets and they announced that they have a budget to train soldiers in our area.

38:29.800 --> 38:37.200
And I said, hmm, let me see. So I said, you know what, I will bid and I'm placed my bid.

38:37.200 --> 38:42.520
I go meet the people at the JBLM. And they said, you know what, do you know who you're

38:42.520 --> 38:51.000
competing with? And I said, no, I don't tell me you are competing with Microsoft and AWS.

38:51.000 --> 38:58.160
And I said, hmm, nice. But let me tell you, I can do something that these guys cannot.

38:58.160 --> 39:02.680
These big companies cannot. They just cannot do what I do. He said, what, what can you

39:02.680 --> 39:09.360
do? And I told them that I can guarantee employment to each and every person that takes my program

39:09.360 --> 39:16.200
within three months or don't pay me anything at all whatsoever. No big company will do

39:16.200 --> 39:26.960
that ever. I can. And I give that guarantee. So he said, are you nuts? Then I told him,

39:26.960 --> 39:32.200
what do you think I am? Are you kidding me? No, I'm not. Will you give this to me in writing?

39:32.200 --> 39:40.040
I said, yes. And I wrote it down. I said, don't pay me any money. Even one of them will

39:40.040 --> 39:47.600
not get a job within three months. But I have some conditions. The conditions are, you will

39:47.600 --> 39:54.240
not interfere in my program. You will not interact, not even come into the classroom.

39:54.240 --> 39:59.800
You will do nothing whatsoever. I'll do whatever I want with them. You will not interfere.

39:59.800 --> 40:06.520
They will not say a word, not listen. All you do is what you get the result. That's

40:06.520 --> 40:12.240
all you care for. That's what I'll give you. You will not interfere. Do you agree?

40:12.240 --> 40:17.600
But how did you get that conviction, Nilesh? What do you mean? I mean, how did you feel

40:17.600 --> 40:22.160
that you will be able to influence these people to the point that they are employable? I mean,

40:22.160 --> 40:27.320
where did you, I mean, maybe it is just your intuition or in conviction about yourself,

40:27.320 --> 40:33.560
but maybe there are some factors which you accounted for. So the thing is driven by gut,

40:33.560 --> 40:38.920
specifically by gut. I know I can pull it off because I have people I know, you can

40:38.920 --> 40:42.640
see on my LinkedIn, I have big shots in my LinkedIn, the big people, all the big names

40:42.640 --> 40:50.480
in our area, tech, big shots. So I know I can pull it off. But to convince them what

40:50.480 --> 40:56.720
you need to really focus on on the other side is what do they want? They want home for people.

40:56.720 --> 41:03.160
They want soldiers to get a proper life. They want success for them. They don't care about

41:03.160 --> 41:07.760
the process you follow as long as you get the result for them. What they really care

41:07.760 --> 41:11.880
for is their money that they are spending and whether they can report to their bosses

41:11.880 --> 41:18.200
how many soldiers got a job. That's what they care for. And how was the money being deployed

41:18.200 --> 41:22.680
and how was it used? That's what they care for. They care for the soldiers basically

41:22.680 --> 41:29.200
leading a good path. So I'm giving them exactly what they want. And now after signing that

41:29.200 --> 41:35.880
contract, I come back home panicked like heavily panicking now, because I don't know what I

41:35.880 --> 41:42.160
signed up for. But I'm panicking. And here's what I do. I reach out to my LinkedIn profile,

41:42.160 --> 41:49.880
big people, and I tell them something that I know they cannot say no to. Because when

41:49.880 --> 41:56.000
you go to a CEO and tell him, I want you to help soldiers, what do you think he can say?

41:56.000 --> 42:04.380
The only answer he can give is yes. Because the other answer, no, makes him look stupid.

42:04.380 --> 42:08.640
The only answer he can say is yes, I will help you, Niresh. That's the only way out

42:08.640 --> 42:15.720
for him. And I know that. So I exploit it one on one. All the big names. I said, you

42:15.720 --> 42:20.160
know what? You will come with me, not on a group session, but a one on one session. You

42:20.160 --> 42:26.680
come alone with me to the base where I go. I take you with me to the military base. You

42:26.680 --> 42:32.440
go meet them one on one. Not in a group hiring session. Not like that. I don't want that

42:32.440 --> 42:37.240
happen. So they are okay with that idea. They want to talk to people. They want to feel

42:37.240 --> 42:41.880
good. They collect brownie points. They come back home. But what happens in reality? What

42:41.880 --> 42:47.440
happens when a CEO comes? They don't come alone. They come with their HR, their PR,

42:47.440 --> 42:54.040
and God knows what other staff, which is awesome for the soldiers. So in our area, this thing

42:54.040 --> 43:02.400
called King County, there is a CTO, CTO of King County. I don't even know him, but I

43:02.400 --> 43:09.760
tweet at him. Soldiers need you to attend my program. Would you join? What do you think

43:09.760 --> 43:17.920
the answer would be to a public officer? Sign me up. Sign me up was his response. So I called

43:17.920 --> 43:23.720
his office, signed him up. He shows up. He doesn't come alone. He come with his PR staff,

43:23.720 --> 43:32.880
his HR people and a television crew. Next day, I am on the television. Nobody knows

43:32.880 --> 43:39.880
my name of the company. I am a one person company. I was. I almost even today, I am

43:39.880 --> 43:47.680
a one person company. I have people in India on a as needed basis, but that's it. Those

43:47.680 --> 43:56.560
people, you know, sorry, the CTO with his TV crew led me to more introductions with

43:56.560 --> 44:03.440
big shots. And what I did is now helping our soldiers write resumes. I wrote their resumes

44:03.440 --> 44:10.960
myself, trained them individually to go talk to this person, go talk to that person, introduce

44:10.960 --> 44:20.000
them, make meetings happen one on one for 23 soldiers. And each and every one of them

44:20.000 --> 44:27.720
got a job. And I got paid handsomely. My charge is expensive, by the way, if you if you know

44:27.720 --> 44:33.680
that or not, I don't know. But it's really, really steep price. And I got paid. So that

44:33.680 --> 44:42.760
was my first thing. Wow. But it's actually it's very cheap because imagine being able

44:42.760 --> 44:48.720
to teach someone to earn for themselves for next 10 or 20 years. That's a crazy amount

44:48.720 --> 44:53.940
of money. Yes. Right. And for government, it's a very small amount of pay to pay instead

44:53.940 --> 44:59.520
of paying pension and trying to take care of people and the headache and all of this.

44:59.520 --> 45:04.600
So it's actually a very good ROI for the government. And that's probably because you can guarantee

45:04.600 --> 45:09.960
that. I think that's the key point. Yes. Like it's a very good direct deal. It's not a probabilistic

45:09.960 --> 45:15.280
thing. It's a, you know, deterministic outcome. Yes, yes, it was. It was very good. It was

45:15.280 --> 45:19.320
something that they could not say no to it because they had nothing. The coolest thing

45:19.320 --> 45:28.840
nothing to lose. You know, the coolest thing you said, I had a gut feeling. I can't tell

45:28.840 --> 45:37.000
you how uncommon that is. Like a lot of what we hear on social media and other places,

45:37.000 --> 45:42.360
right. All the narratives people tell a lot of those narratives are around, you know,

45:42.360 --> 45:48.080
this is the logical thinking I did. This is how we tested the product and 100 other things,

45:48.080 --> 45:52.480
right. And what people don't talk about it is, hey, you know, you need to poke around

45:52.480 --> 45:57.320
a few things and something will work out. But you need to experiment. And that's what

45:57.320 --> 46:03.480
you did. You followed your gut and experimented with the idea. And nobody says that, yeah,

46:03.480 --> 46:08.640
it was a gut feeling. I had an intuition that I should probably do this. So thanks for saying

46:08.640 --> 46:15.160
that, Nileshji. I think gut is the only thing that works. Everything else is future and

46:15.160 --> 46:21.320
future is unknown, which is basically, nobody knows. Nobody knows jack shit, to be precise

46:21.320 --> 46:28.980
of what will happen in the future. Anybody who claims is a liar. Yeah, and everybody

46:28.980 --> 46:33.920
talks about all of this in a very logical manner. So people tend to justify their choices

46:33.920 --> 46:38.440
half the time. It's like, hey, why did you go down this path? You know, I felt like that

46:38.440 --> 46:42.520
is the right answer. But what people say is, no, because I had thought one, two, three,

46:42.520 --> 46:46.760
four and five. No, this was you're trying to justify your choice. Rationalization happens

46:46.760 --> 46:54.080
after the fact. Exactly. It's a justification, right? Like after you have already had that

46:54.080 --> 46:58.840
intuition and you trust that some intuition somehow. And after that, you go into this

46:58.840 --> 47:02.960
justification mode, because you're supposed to be a logical person. You know, the word

47:02.960 --> 47:08.160
is supposed to be logical. But people are not logical. I am not. I am a nut job. Yes,

47:08.160 --> 47:15.080
same, same, same. I am the hardest nut job you can ever imagine in your life. I'm saying

47:15.080 --> 47:26.560
that out loud in public. You've probably seen that in my tweets. I tweet like a nut.

47:26.560 --> 47:31.440
By the way, Nivesh, just an FYI here. There are some people requesting and there are some

47:31.440 --> 47:35.360
of the speakers who want to like ask questions and they're raising their hands. Please, please,

47:35.360 --> 47:41.720
go ahead. Go ahead. Absolutely. Let people speak. Yeah, go ahead. Yeah, sure, sure, sure.

47:41.720 --> 47:47.520
So I believe it was Devarshi first, then it was Vijay, then it was Kavya. Devarshi, you

47:47.520 --> 47:54.480
want to go? Yeah, sure. Thank you, Nivesh sir. So my question is like, have you found

47:54.480 --> 48:00.440
any similarities between the skills required in civil service and tech?

48:00.440 --> 48:13.280
Hey, I'm so sorry. I could not hear you properly, Devarshi. Yeah, am I audible now? Yes. Yeah.

48:13.280 --> 48:19.520
So I was asking, have you found any similarities between the skills required in civil services

48:19.520 --> 48:26.360
and those needed in the tech industry? Yes. The thing that you need is the ability to

48:26.360 --> 48:32.880
think clearly. I think that is the most important thing. It applies to every situation in life.

48:32.880 --> 48:39.040
Thinking skills, thinking rationally. That is, I think the fundamental thing, it applies

48:39.040 --> 48:44.360
to common sense, applies to, you know, a situation where you're trying to sell something and

48:44.360 --> 48:51.080
you don't know what to create. And then what do you do? You create something that you like

48:51.080 --> 48:56.920
for yourself and you find out by showing it to people, would they be interested in it?

48:56.920 --> 49:00.720
If they're interested, they might buy it. If they're not interested, they might send

49:00.720 --> 49:06.320
you signals as to what they don't want to have or what they would like to have. So we

49:06.320 --> 49:13.360
have to very carefully listen and understand what they're telling you. That weak signal

49:13.360 --> 49:19.400
is there, but most people miss it because there is so much noise around us. So much

49:19.400 --> 49:29.120
noise. It's heavy. And detecting the signal in a very noisy situation is very, very, you

49:29.120 --> 49:35.320
know, you need to refine your sensors and that signal is available to you. But that

49:35.320 --> 49:42.640
skill of detecting signals is a hard one that applies everywhere. And most people ignore

49:42.640 --> 49:48.680
those signals. I think that's a skill to have. It's not about technology. Even in the tech

49:48.680 --> 49:55.960
domain, it is not about writing code. It is about understanding what customers want. It

49:55.960 --> 50:03.400
is about building exactly what they need and more. It has nothing to do with JavaScript,

50:03.400 --> 50:10.240
to be precise, or Ruby, for example, whatever. These languages don't matter. What matters

50:10.240 --> 50:18.280
is the customer and whether you're doing something for them. It's when you help others that you

50:18.280 --> 50:25.640
make money as a side effect. I hope that answers your question, Devarshi.

50:25.640 --> 50:28.440
Yes, sir.

50:28.440 --> 50:33.120
And also that finally settles the debate. Which programming limit should we choose?

50:33.120 --> 50:39.640
But also another one. What are your speaker? If there we have question answered, could

50:39.640 --> 50:43.240
you please go back to the listener section so that we could invite more speakers in because

50:43.240 --> 50:49.760
there is a limit here. That would be great. Next up is Vijay. Vijay, how are you doing?

50:49.760 --> 50:50.760
Great to meet you.

50:50.760 --> 50:51.760
Likewise.

50:51.760 --> 50:52.760
You can ask a question.

50:52.760 --> 51:00.680
Yeah. Nilesh sir, very inspiring and amazing story. I think you have a spectacular journey

51:00.680 --> 51:06.680
and it's amazing to have you here. And thank you for giving us an opportunity to chat with

51:06.680 --> 51:07.680
you.

51:07.680 --> 51:11.800
You're welcome, sir. Thank you. Thank you, Vijay.

51:11.800 --> 51:17.480
Yeah. I just, I want to say something about what Amul and you were saying about gut feeling

51:17.480 --> 51:24.680
and all. I mostly agree, but I'm not 100% sure if everybody needs to think like that.

51:24.680 --> 51:27.880
I think it depends from person to person. Like you probably went ahead with your gut

51:27.880 --> 51:35.040
feeling, maybe because of your previous qualifications or success. You were confident that you can

51:35.040 --> 51:42.920
make things work. Like if you could crack all these exams and get these amazing achievements,

51:42.920 --> 51:46.800
then you could do that and replicate that success later. But not everybody is that confident.

51:46.800 --> 51:51.920
Not everybody has that kind of backing to say that, okay, I have done this thing so

51:51.920 --> 51:55.360
I could do that. So in that case, I'm not saying don't go with gut feeling, but for

51:55.360 --> 52:00.480
some people, having that little calculations about what I should do here and what are the

52:00.480 --> 52:04.200
repercussions might be appropriate, right? Like for example, if somebody's planning to

52:04.200 --> 52:10.440
come to U.S. and if they don't have any spectacular success story behind, like there is no guarantee,

52:10.440 --> 52:18.520
especially nowadays, right? Like immigration, job prospects are very difficult. So in my

52:18.520 --> 52:22.560
opinion, there's a lot of bliss associated with that. I would absolutely, absolutely

52:22.560 --> 52:28.160
agree with that idea. You know what? I would give you an example, a story. So what, to

52:28.160 --> 52:32.840
summarize Vijay's point, do you always go by gut feeling? Do you know that you will

52:32.840 --> 52:40.360
win? Nobody knows jack shit. I did not know, but it just happened. However, everybody should

52:40.360 --> 52:47.200
not feel and think like that. The rational approach is like this, is like a VC. What

52:47.200 --> 52:54.520
does a VC do? They say they have like, you know, $10 million or $100 million to invest.

52:54.520 --> 53:01.200
They will not invest all of that money in one particular startup. They will find a hundred

53:01.200 --> 53:09.200
startups and give them $1 million each to spread the risk. And like one or two of them

53:09.200 --> 53:17.000
will become unicorns and every other 98 companies, startups will die. VCs don't care. They're

53:17.000 --> 53:24.360
spreading their risk. They're spreading their portfolio among various startups and balancing

53:24.360 --> 53:30.080
the risk. I think that is a approach I would recommend for most people unless they are

53:30.080 --> 53:45.560
in a nut job. Simply, yeah. So, you know, what we call gut feeling, I believe is intelligence

53:45.560 --> 53:50.920
plus experience working in milliseconds. So probably your intelligence and your experience

53:50.920 --> 53:55.000
when it's, you know, working at full throttle and the result you get in milliseconds that

53:55.000 --> 53:59.200
you can call a gut feeling in some cases. What do you think about it?

53:59.200 --> 54:04.400
I don't know, man. The millisecond part, I don't even know what that is true or not,

54:04.400 --> 54:09.400
but the responses are not that fast. It is slow. It can be painfully slow sometimes,

54:09.400 --> 54:16.160
but managing portfolio is better than managing one thing. Because as Amul will say, Amul,

54:16.160 --> 54:21.760
I think I saw his notes and on some of the tweets, he says, he describes about this concept

54:21.760 --> 54:28.000
of risk and about what I call, what is the word you used Amul? The risk idea, the Talib

54:28.000 --> 54:34.280
idea. Talib idea is rule zero is risk management, avoid ruin.

54:34.280 --> 54:38.880
Yeah, avoid ruin. So that is the key thing here. You know, you want to avoid ruin, which

54:38.880 --> 54:46.560
means you want to continue to live for tomorrow and keep taking newer bets. If you take one

54:46.560 --> 54:53.700
big giant bet and you die, well then, then you're dead. You want to survive, avoid ruin.

54:53.700 --> 54:57.360
And that is an important thing. You know, probably the thing that...

54:57.360 --> 55:02.680
Isn't that based on your past experience? Like avoid ruin because you'll be dead is

55:02.680 --> 55:06.400
something that, you know, don't do this, otherwise you'll be dead.

55:06.400 --> 55:10.360
That's why, you know, it's a good thing to have what is called a plan B. It's generally

55:10.360 --> 55:18.120
a good thing. And yes, sometimes in certain cases, and these are very, very few, but there

55:18.120 --> 55:25.640
are cases in which you actually guarantee yourself a win or a death if you remove all

55:25.640 --> 55:33.160
other choices. The plan B needs to be exterminated. That's what happens when you quit the IAS.

55:33.160 --> 55:37.680
When you quit the government service, you cannot go back. There's no going back. The

55:37.680 --> 55:45.440
only way is forward. It's like some king somewhere, they conquer, you know, they take a boat full

55:45.440 --> 55:49.800
of ships, ships full of soldiers and they reach the other country. And the first thing

55:49.800 --> 55:56.660
the king orders, burn all these ships. And the soldiers start to panic. Why would I burn

55:56.660 --> 56:01.040
my ships? How will I run away if I need to? Well, that's the whole point. You want to

56:01.040 --> 56:06.080
burn your own ships so that you cannot run away. And then the only option remains is

56:06.080 --> 56:13.520
fight to die or to win. And then you win. And that has been, you know, some look up

56:13.520 --> 56:18.000
on Google and you will find a story like that. There's actually a real story of some king.

56:18.000 --> 56:23.040
I don't even know his name. But that's a valid strategy. This is a nut.

56:23.040 --> 56:31.800
I'll put a point here. Okay. So forget about how this works and all of that. And here's

56:31.800 --> 56:36.640
my hypothesis. Maybe I am wrong on this one. A lot of people think that you have to come

56:36.640 --> 56:45.480
up with ideas analytically, which is, I think, not a great idea in general. And which is

56:45.480 --> 56:50.520
where I'm really supportive of your idea of the gut thing. That let your gut and intuition

56:50.520 --> 56:57.920
guide you to come up with creative ideas. The second step though, is to think of it,

56:57.920 --> 57:02.880
think of yourself as a trader. So traders have four kinds of outcomes. They win big,

57:02.880 --> 57:07.560
they win small, they lose small, they lose big. There are only four types of outcomes

57:07.560 --> 57:15.440
which are possible. Your job is to avoid losing big. Don't lose big. All other three options

57:15.440 --> 57:21.080
win big, win small, lose small, you can play the game for a very long period of time. So

57:21.080 --> 57:27.120
your job is to actually play low, such kind of bets where these three outcomes are there.

57:27.120 --> 57:35.160
Any bet which has lose big outcome is basically what Taleb says that it is avoid ruin or,

57:35.160 --> 57:41.640
you know, risk management piece. But the ideas come from the creative side of you, which

57:41.640 --> 57:48.040
is the gut. And one more thing I want to talk about, which probably gets sidelined when

57:48.040 --> 57:54.080
somebody outlier plays those bets. And you are an outlier, let's be honest. AIR3 IS,

57:54.080 --> 57:59.880
I haven't met anybody who has been under AIR50 in IS. And I have been in the game for 20

57:59.880 --> 58:04.480
years now. So I have not met anybody. So you are rare in that sense. What happens, and

58:04.480 --> 58:10.480
I think Vijay has a very good point there. When you leave, somebody like you leaves IS,

58:10.480 --> 58:14.280
although you think you will not be employable, but inside you know that I will be able to

58:14.280 --> 58:20.920
do something with my life. So that default confidence, right? That is why everybody might

58:20.920 --> 58:24.640
think that, you know what, this person took a big risk, but look at where they have come

58:24.640 --> 58:31.320
from, right? Like if you have been top 0.001% of India, you can do something with your

58:31.320 --> 58:35.800
life. Even if you are losing IS, you will still do something and make enough money out

58:35.800 --> 58:41.880
there or survive. And that is which is where you were actually not at the point of ruin

58:41.880 --> 58:46.640
if you really think about it. The point of ruin is for somebody who can't, who doesn't

58:46.640 --> 58:53.320
believe or doesn't have a track record of doing something in life. So even if that's

58:53.320 --> 58:58.680
my hypothesis, that even if you think that in some way, you know, I took that decision

58:58.680 --> 59:03.040
and it was, you know, totally no-go and all of that, or even, you know, training those

59:03.040 --> 59:08.320
23 people, the worst you would have lost is time, right? I mean, you wouldn't have lost

59:08.320 --> 59:13.200
everything in your life if that happened, right? Like those 23 people. So my hypothesis

59:13.200 --> 59:18.880
is gut feeling is very useful for coming up with creativity. Once you acknowledge that

59:18.880 --> 59:25.560
intuition, then put it into that framework of whether it is a lose big bet or is it,

59:25.560 --> 59:29.920
you know, another kind of a bet, which is safe enough, then play it accordingly. Don't

59:29.920 --> 59:36.040
try to ruin yourself. And as long as you played for a long enough period of time in aggregation,

59:36.040 --> 59:40.040
something in probability will turn out, but don't try to be that person who's saying

59:40.040 --> 59:44.440
that, you know what? No, I was very analytical and I came up with this idea. No, your gut

59:44.440 --> 59:51.120
came up with the idea and you trusted your intuition. The funny thing is those who trust

59:51.120 --> 59:55.920
their intuition think of themselves as artists. And I have been on both sides of it. Like

59:55.920 --> 59:59.280
one side of my life, I was totally analytical. I used to think I'm not creative. I'm not,

59:59.280 --> 01:00:04.440
I don't trust my gut. I don't trust my intuition. And you know what? My creativity dipped like

01:00:04.440 --> 01:00:08.120
anything. And on the other hand, like think of you right now, right? Like the way you

01:00:08.120 --> 01:00:13.200
talk about yourself or, or, or how you do stuff, you actually think of yourself as an

01:00:13.200 --> 01:00:18.120
artist, that term you use nut job, right? That's basically an artistic term. You think

01:00:18.120 --> 01:00:23.160
of yourself as an artist. There's some serendipity in your thinking. And that is a beautiful

01:00:23.160 --> 01:00:29.560
thing to tell your body, to tell your mind or to tell your gut mind that, you know what?

01:00:29.560 --> 01:00:35.160
You are an artist. You don't need to be logical. Go think of ideas on your own. Sorry, I went

01:00:35.160 --> 01:00:41.120
into a rant, but I felt this was a very interesting, you know, point or hypothesis to think about.

01:00:41.120 --> 01:00:46.280
I could be wrong, obviously. So you know what your hypothesis is exactly what I, the reason

01:00:46.280 --> 01:00:50.680
why I love what you say, what you write, what you tweet. I have read all your tweets, by

01:00:50.680 --> 01:00:53.600
the way. They're awesome.

01:00:53.600 --> 01:01:03.280
Just a minute if I, Niresh here. Amul, I don't want to be disrespectful, but there are some

01:01:03.280 --> 01:01:09.360
person here who are raising their hand for quite a while. And we'd like to go to them.

01:01:09.360 --> 01:01:17.600
Hey folks, yeah, I'm leaving. I have a meeting at one o'clock, but great chatting with you

01:01:17.600 --> 01:01:22.800
again. Like Nilesh Sir, hopefully we'll do this again. Main fire, fire ka mudda, shahe

01:01:22.800 --> 01:01:23.800
toh rahe piche hai rege.

01:01:23.800 --> 01:01:29.520
I know that happens every time I speak. That's why I should keep focused on your questions

01:01:29.520 --> 01:01:32.520
as opposed to my bullshit.

01:01:32.520 --> 01:01:36.280
It's not bullshit. It's not bullshit. Like a lot of valuable information. But anyways,

01:01:36.280 --> 01:01:37.280
I

01:01:37.280 --> 01:01:41.320
No, no, no, Nilesh. I think, you know, you should, you should speak what you feel like

01:01:41.320 --> 01:01:45.520
because that's when we get the best ideas out of you. Otherwise, toh kya hai yahan pe

01:01:45.520 --> 01:01:49.640
aap log ye influencers dukaan laga ke baithte hain hai. Twitter space karte hain ki aaho

01:01:49.640 --> 01:01:53.880
tumko sumnayenge, ye sewaal pucho ge uska jawab degenge. Woh dukaane toh chali rahi hain.

01:01:53.880 --> 01:01:58.360
But jis uninhibited tariqe se aap bolte ho na, wo sunnaya hai humko. Warnahe hum kyu

01:01:58.360 --> 01:02:02.560
aayenge hum yaha pe. Hum kyu aayenge ki matlab ye dukaan laga ke baith jaate hain hain, hosting

01:02:02.560 --> 01:02:06.280
karte hain ki, achha tum aake sewaal ka jawab do, tum aake sewaal pucho, tum aake sewaal

01:02:06.280 --> 01:02:11.840
pucho. Ye nahi karna hai na. Ye hi toh sunnaya hain aap se jo aap aise bina be lagaam bolte

01:02:11.840 --> 01:02:16.120
ho na yeh sunnaya. Kyuki yeh koi nahi bolta hai. Aur aap nahi sunnayenge toh kap sunnayenge.

01:02:16.120 --> 01:02:20.520
Thank you. Thank you. By the way, Vijay and Amul, we should do more spaces. Thank you.

01:02:20.520 --> 01:02:24.800
Definitely aur Vijay ke saath karenge, Vijay ke saath itna maza hai karne mein. Kyuki

01:02:24.800 --> 01:02:29.640
bahut nuanced hoti inki thi. Yes. Thank you. Thank you. Yeah, and fire and financial independence

01:02:29.640 --> 01:02:34.400
is my favorite topic. So I'm definitely interested in chatting on this again. And sorry, I'm

01:02:34.400 --> 01:02:38.800
going to take few more seconds. But I've noticed that main jabhi koi career related tweet karta

01:02:38.800 --> 01:02:42.240
hoon, toh thode bahut likes aate hain. Ek maine finance related ki thi, toh bahut hi kum

01:02:42.240 --> 01:02:48.280
likes hai. So I'm just curious ki is the tech industry like not thinking about finance?

01:02:48.280 --> 01:02:53.240
In my opinion, that would be a mistake. So aapki saara alpha jo hai na, wo Ankur Variku leke

01:02:53.240 --> 01:02:56.720
chala gaya hai aur Akshat Sharma, Akshat Varma, ae sab leke chale gaya hai. Toh in sab kitni

01:02:56.720 --> 01:03:02.680
badi badi dukhane hain YouTube pe aur courses vejta hai hai ki aapka saara ka saara finance

01:03:02.680 --> 01:03:07.040
ka kitna bhi samajdari wala baat bologue. Un sab ko jaaki Ankur Variku ke naam pe cryptocurrency

01:03:07.040 --> 01:03:11.720
me paise daal nahi hain. Unko Ankur Variku ke naam pe jaake bevkufi karne hai ki theke

01:03:11.720 --> 01:03:17.320
FD me, FD nahi rakhunga mai. Mai toh sirf equity me daalunga. Toh iskar end se aapki finance

01:03:17.320 --> 01:03:21.600
tweets ka koi alpha nahi aane wala hai. Theke, yeh zyaan rakhna. Aap tech ka daalogaya toh

01:03:21.600 --> 01:03:22.600
alpha aega.

01:03:22.600 --> 01:03:26.160
Alright, alright. Chalo anyways, I've taken way more than a few seconds. So again, bye

01:03:26.160 --> 01:03:30.960
all and looking forward to chatting with you all again. Nilesh ji, pirse ek bar fire ka

01:03:30.960 --> 01:03:37.360
ek space karenge. Yes, yes, yes. Alright, have a great day. Take care. We have a question

01:03:37.360 --> 01:03:43.120
left sir. You have to do one more space. Yes, yes, we'll do it again. But let's, I have

01:03:43.120 --> 01:03:52.120
enough time. I have enough time if you want. I'm never in a rush. Never. I do have time

01:03:52.120 --> 01:03:59.440
sir. If you are staying then I'll ask you a question. I will say as long as you need.

01:03:59.440 --> 01:04:04.000
So we have, so I'm not sure like who is speaking because I think my Twitter card is kind of

01:04:04.000 --> 01:04:05.000
my...

01:04:05.000 --> 01:04:06.000
This is Nilesh.

01:04:06.000 --> 01:04:07.000
Okay, okay.

01:04:07.000 --> 01:04:10.000
Kisi ko bhi aane do itna formal mat karo. Itna formal mat karo.

01:04:10.000 --> 01:04:16.360
Shama has a question. Seriously? Shama is raising the hand. So Shama, you can ask your question

01:04:16.360 --> 01:04:18.840
or do you want to share something?

01:04:18.840 --> 01:04:20.880
Thank you. Namaste everyone.

01:04:20.880 --> 01:04:21.880
Hi.

01:04:21.880 --> 01:04:28.240
So first of all, thank you Nilesh for the storytelling at the beginning. I liked that

01:04:28.240 --> 01:04:34.520
a lot. And also I wanted to say congratulations because at each stage of your life you held

01:04:34.520 --> 01:04:41.680
on and you didn't fear questioning your situation and aiming for the best for you and your family.

01:04:41.680 --> 01:04:47.000
And this is not something that all people do because sometimes people fear to face their

01:04:47.000 --> 01:04:51.480
reality and to do something about it. So congratulations.

01:04:51.480 --> 01:04:53.440
Thank you.

01:04:53.440 --> 01:04:58.400
And I have two questions actually based on what you said. The first one is just asking

01:04:58.400 --> 01:05:04.920
about your vision because at certain point you said, do what you like. But I personally

01:05:04.920 --> 01:05:10.880
genuinely believe that pain and struggle is part of the process, which means that sometimes

01:05:10.880 --> 01:05:19.320
reaching your goal may include some steps that you may not like. But the idea here is

01:05:19.320 --> 01:05:24.400
to commit to it and to be disciplined in any way to reach your goal. So what do you think

01:05:24.400 --> 01:05:26.000
about that specific point?

01:05:26.000 --> 01:05:30.920
Yes. Thank you by the way. Thank you Shama. I appreciate what you said. I will tell you

01:05:30.920 --> 01:05:38.120
what I think about pain and happiness and sadness. And I'll tell you about what I think

01:05:38.120 --> 01:05:44.280
about that. So imagine you have a coin, like a coin with a head and a tail and you flip

01:05:44.280 --> 01:05:51.480
that coin on one side you have happiness on the other side is sadness and they will randomly

01:05:51.480 --> 01:05:56.480
appear depending on how you flip and you keep flipping and you sometimes get happy and sometimes

01:05:56.480 --> 01:06:04.760
get sad and they are both good. They're both part of the same game. The real opposite of

01:06:04.760 --> 01:06:13.960
happiness is not sadness. The real opposite of these two is the absence of the coin.

01:06:13.960 --> 01:06:14.960
The void.

01:06:14.960 --> 01:06:19.240
The void. When people don't even care who you are, they love you, they hate you, both

01:06:19.240 --> 01:06:26.680
are good. But, you know, indifference is bad. That's the opposite of happiness and sadness

01:06:26.680 --> 01:06:32.320
is the absence of coin. That's how I think about it. So if you just have only happiness

01:06:32.320 --> 01:06:40.000
in your life, it will become boring. Absolute boring. You don't want in that stage, you

01:06:40.000 --> 01:06:44.880
want to go up and down, up and down, sometimes down, down, up and up, up, up, down to make

01:06:44.880 --> 01:06:50.400
any variations of that. That is what life is. Not just up and up and up. That's not

01:06:50.400 --> 01:06:56.360
how it works. So both are important. Happiness and sadness. If you just have only happiness,

01:06:56.360 --> 01:07:02.160
you will soon get bored and probably die.

01:07:02.160 --> 01:07:12.880
I think in Hindi, there's this thing. So if you drink alcohol all the time, you'll

01:07:12.880 --> 01:07:17.600
not enjoy it. So basically you have it and then don't have it for some time and then

01:07:17.600 --> 01:07:25.120
you have it. So that's the point. And by the way, there's a term for that. It's called

01:07:25.120 --> 01:07:31.360
minimum effective dosage. So anything that you do in life or enjoy in life, you can enjoy

01:07:31.360 --> 01:07:35.720
it in some amounts and then beyond that amount, it saturates to the point that you feel it

01:07:35.720 --> 01:07:45.720
is poison or it feels bad. This is sugar. Right. So there are many. So by the way, there's

01:07:45.720 --> 01:07:52.760
a term for that, which is called saying for that. This is called, it is also the same

01:07:52.760 --> 01:07:57.520
thing. Right. Yes. Yes. Yeah. That was awesome.

01:07:57.520 --> 01:08:03.920
I actually wanted Nilesh to emphasize on that fact that life is actually up and down because

01:08:03.920 --> 01:08:09.280
many people think that there is easy ways to attend their goals and they don't want

01:08:09.280 --> 01:08:16.160
to do what they don't like in order to achieve their goals. And if it's possible, my second

01:08:16.160 --> 01:08:23.120
question will be at certain point, you talked about saving and investing. Okay. So we all

01:08:23.120 --> 01:08:29.400
know that there is different types of investment, like in real estate, in crypto stocks, whatever.

01:08:29.400 --> 01:08:37.360
But what a lot of people do is that they focus on all of those side hassles at the same time.

01:08:37.360 --> 01:08:42.600
So what I want to understand here or what I want to discover is what was your own way

01:08:42.600 --> 01:08:48.400
of doing in that case? Because if you want to invest in stocks, crypto or in real estate,

01:08:48.400 --> 01:08:53.320
you need to focus on that field to understand it pretty well. And then to do the thing.

01:08:53.320 --> 01:08:56.920
So I would like to... So do you take it step by step or how do you

01:08:56.920 --> 01:09:02.480
do exactly? I'll tell you how I invest. I again look for

01:09:02.480 --> 01:09:07.400
signals, weak signals in life. Okay.

01:09:07.400 --> 01:09:13.280
And I heard you say the word crypto. I would like to say something here about that. Crypto

01:09:13.280 --> 01:09:20.880
basically means cryptography. And that is a mathematical concept. Bitcoin is the one

01:09:20.880 --> 01:09:27.960
that was used... Cryptography was used to create Bitcoin. And that is what I think most people

01:09:27.960 --> 01:09:35.040
think of as cryptocurrency. However, copying that Bitcoin, there are tons and tons of other

01:09:35.040 --> 01:09:42.800
what are called shitcoins have come up. And people get confused about what is a right

01:09:42.800 --> 01:09:48.640
vehicle of investment. So I want to clarify what I think about all these things. And only

01:09:48.640 --> 01:09:57.400
Bitcoin is a vehicle that is worthy of your money. Everything else is not an investment

01:09:57.400 --> 01:10:02.920
vehicle. It has other uses. It has other technical uses, some esoteric uses. But I don't consider

01:10:02.920 --> 01:10:09.480
that as an investment vehicle. So that was the investment aspect of crypto specifically.

01:10:09.480 --> 01:10:15.600
Now how do I look for signals? So when I was at Microsoft, in the US, there is a thing

01:10:15.600 --> 01:10:20.440
called retirement plan, which is self-managed and you manage it yourself. A portion of your

01:10:20.440 --> 01:10:25.200
salary goes into that account, set aside. In India, it is called GPF, PPF, something

01:10:25.200 --> 01:10:32.080
like that. And so you take some money, 15, 20% set aside and that gets invested by the

01:10:32.080 --> 01:10:39.360
company. But in Microsoft, they let you invest it yourself. So what did I do? At that time

01:10:39.360 --> 01:10:52.000
in 2004, I invested 95% of my 401k money into the Apple stock. I still hold the same position.

01:10:52.000 --> 01:11:01.440
I never sold it. Apple has gone like three or four times in the valuation.

01:11:01.440 --> 01:11:06.720
So you took it step by step, like you focus only on one investment at one point. You don't

01:11:06.720 --> 01:11:11.760
do it in a parallel way, like crypto, real estate, stocks, et cetera. You only focus

01:11:11.760 --> 01:11:12.760
on one thing.

01:11:12.760 --> 01:11:18.400
Not really. I'll tell you what I actually do. So I'm building it up. So that's one.

01:11:18.400 --> 01:11:26.140
I get a signal from using the iPhone, the first one that came in, I think, 2007 timeframe.

01:11:26.140 --> 01:11:31.400
And before that, I've been, I've used Mac, I use Linux quite a bit. So I understand what

01:11:31.400 --> 01:11:35.920
Apple is building and I see their products are really good. And what I also see is not

01:11:35.920 --> 01:11:41.440
just the product that they make, but how users are using their products is also pretty darn

01:11:41.440 --> 01:11:47.520
good. And that gives me the confidence in that company and especially Steve Jobs, which

01:11:47.520 --> 01:11:52.720
I am a huge, huge fan of what he does, the way he speaks, the way he talks, the way everything

01:11:52.720 --> 01:11:58.360
about him is beyond doubt. So that is something that I loved. And I said, this is where my

01:11:58.360 --> 01:12:04.000
money goes. So I hired Steve Jobs as my investment manager.

01:12:04.000 --> 01:12:12.800
Then comes along Elon Musk. And in 2020, this COVID thing happened in Santa Clara County

01:12:12.800 --> 01:12:22.160
shut down Tesla factory. You cannot operate. And the stock tanked like huge. And I said,

01:12:22.160 --> 01:12:30.100
opportunity. And I've been using a Tesla since 2012. And I love that car. The car is awesome.

01:12:30.100 --> 01:12:38.240
And I see the opportunity. Then I buy Tesla stock and I still hold it. It has gone up

01:12:38.240 --> 01:12:47.160
like crazy. Yeah. That is how you look for signals. And then when you see it, you act

01:12:47.160 --> 01:12:52.360
on it. That's the part, which is the hardest. The action part is the hardest part. People

01:12:52.360 --> 01:12:58.640
see it, but they don't act. People have seen when they went to place a trade, they worry

01:12:58.640 --> 01:13:03.760
about the commission. They worry about that. They worry about the tick. The next tick is

01:13:03.760 --> 01:13:13.560
going up or going down. Who cares? Think big picture and invest and then forget, sit tight.

01:13:13.560 --> 01:13:23.360
Time in the market is way more important than timing the market. See time in the market

01:13:23.360 --> 01:13:28.560
as opposed to timing it. Don't time it. It is pointless. In fact, it'll hurt you if you

01:13:28.560 --> 01:13:36.680
time it. Just sit tight. I invested in Apple before this guy. What's his name? Warren Buffett.

01:13:36.680 --> 01:13:43.680
Before him. Yes. Yes. That helps. That helps.

01:13:43.680 --> 01:13:46.040
Thanks a lot, Nilesh. It was clear enough.

01:13:46.040 --> 01:13:49.720
You're welcome. There are more questions here, please.

01:13:49.720 --> 01:14:02.600
Thank you so much, Nilesh. I'll compromise with the formality part now and I'll get up

01:14:02.600 --> 01:14:06.720
to the question I want to ask you. The question I wanted to ask you just next to the Devarshi

01:14:06.720 --> 01:14:11.000
what he has asked you is more similar and you talked about the rationality. What I wanted

01:14:11.000 --> 01:14:15.760
to ask you is, do you think that the rationality is something that comes up with the experiences

01:14:15.760 --> 01:14:21.840
or it has to be certainly backed with a pile of experiences of your life and can't we get

01:14:21.840 --> 01:14:28.840
it at the age of 17 or 16, reading piles of books and getting the experience of insights

01:14:28.840 --> 01:14:35.680
and a lot of things and then get our thoughts rational, so-called. Does it need necessarily

01:14:35.680 --> 01:14:41.520
the experiences in order to be rational or to have rational thoughts for that matter?

01:14:41.520 --> 01:14:49.120
No, I would say irrational can be better than rational. That's first. The second thing I

01:14:49.120 --> 01:14:55.720
would say is, if you keep waiting for all the books to be read, that will be too late

01:14:55.720 --> 01:15:01.400
because there are way too many books. So the way I would do is I'll select some books that

01:15:01.400 --> 01:15:08.960
I like, start reading them halfway through. I stop. Don't even finish the book, but I

01:15:08.960 --> 01:15:14.800
get the book's essence and I try to experiment with it. If I like that idea and like the

01:15:14.800 --> 01:15:19.440
outcome, I'll probably read the book a little bit more. If not, I'll leave the book on my

01:15:19.440 --> 01:15:24.440
desk, leave it alone. I have tons of books that I haven't even finished reading because

01:15:24.440 --> 01:15:33.000
I don't want to. I think that's the rational way to be irrational, to not actually finish

01:15:33.000 --> 01:15:36.880
all the books because you will never. You want to do things as opposed to just keep

01:15:36.880 --> 01:15:46.520
reading. So read some, do some and read again and do again and fail, fail hundreds of times.

01:15:46.520 --> 01:15:49.520
That's the way you win.

01:15:49.520 --> 01:15:57.680
I really like that analogy in English, like read some, do some, read some, do some. I

01:15:57.680 --> 01:16:00.680
think that's the way it should be as well.

01:16:00.680 --> 01:16:11.600
Actually, the needed content, that chapter I only preferred to read at the first place

01:16:11.600 --> 01:16:18.760
and then I left the book, like starting investing at my play table. I don't read all of them.

01:16:18.760 --> 01:16:23.200
Don't read as much. So this is my hypothesis here. If you have a hundred minutes of time

01:16:23.200 --> 01:16:28.200
and if you're reading for 20 minutes, then 80 minutes, you should marinate and think

01:16:28.200 --> 01:16:34.080
about how you can actually apply that pattern or that meta pattern in your life. So you

01:16:34.080 --> 01:16:39.520
read principle agent problem from Naval. Now go apply principle agent problem in your relationship

01:16:39.520 --> 01:16:45.080
with your boss. When your boss asks something, then try to see how principle agent problem

01:16:45.080 --> 01:16:51.560
is working or do go apply it to your relationship with your girlfriend or with your friend.

01:16:51.560 --> 01:16:57.680
Look at who of your friends say yes to you because they seek a favor from you or seek,

01:16:57.680 --> 01:17:01.320
you know, see other friends who don't give a shit about what you think of them, but tell

01:17:01.320 --> 01:17:06.520
you what they exactly think of you. That is principle agent problem in action and if you're

01:17:06.520 --> 01:17:12.400
not doing that, you'll be good at party conversations and talk about principle agent problem, but

01:17:12.400 --> 01:17:18.280
you will never move from the point of idea to action or experimentation. So move to experimentation

01:17:18.280 --> 01:17:24.800
and that's probably the point that Nilesh is saying that, you know, read a little, experiment

01:17:24.800 --> 01:17:31.040
a lot and don't trust books, by the way, they are 80 to 90% lies because they are written

01:17:31.040 --> 01:17:35.920
to build a perception of the author in your mind. So they can sell more books or whatever

01:17:35.920 --> 01:17:42.440
their presence. So don't trust people in general who, because all books are generally narratives.

01:17:42.440 --> 01:17:47.040
That's another hypothesis. Yes. So, yeah, essence is. Yes, exactly. It's basically a

01:17:47.040 --> 01:17:55.920
marketing tool for the author mostly. Like the book is never written to tell you the

01:17:55.920 --> 01:18:03.440
truth. The book is always written to entertain you because most people want to be entertained.

01:18:03.440 --> 01:18:08.000
They don't want to, you know, get out of their comfort zone and experiment with a new idea

01:18:08.000 --> 01:18:14.640
they learned or marinate on it or find a pattern in it. No, they don't want to do that. A lot

01:18:14.640 --> 01:18:18.840
of them want to be entertained and in their parties and in their conversations, they want

01:18:18.840 --> 01:18:25.320
to sound intelligent, talking about those things. And that's what authors seek as well,

01:18:25.320 --> 01:18:31.040
that they want to entertain you. But don't you think that the book is somewhat the reflection

01:18:31.040 --> 01:18:35.360
of all the experiences or the experimentation of the author for that matter, that they write

01:18:35.360 --> 01:18:43.280
it in a textual form? Truth is stranger than fiction, buddy. Truth is stranger than fiction.

01:18:43.280 --> 01:18:48.820
So I'll give you a very simple example, right? So we are here for 30 minutes, okay? And each

01:18:48.820 --> 01:18:54.080
minute of your life, you can label us, you know, good, bad, good, bad, right? But when

01:18:54.080 --> 01:19:00.000
I say how was the half an hour you spent with Nilesh, you will summarize those 30 rows of

01:19:00.000 --> 01:19:06.560
SQL data as one thing, good, bad, or whatever. But what is that? That's information loss.

01:19:06.560 --> 01:19:12.760
Because any aggregation is an exercise in information loss, which means everybody who's

01:19:12.760 --> 01:19:18.880
telling a story cannot tell you the vivid nature of reality. They're always trying to

01:19:18.880 --> 01:19:24.640
fit a narrative so that when you listen to it, it's entertaining, it's engaging. And

01:19:24.640 --> 01:19:34.240
anything optimized for engagement and entertainment is unlikely to be about truth. Okay, so just

01:19:34.240 --> 01:19:39.440
take some ideas from it, experiment with it. That's where the, you know, that's, that's

01:19:39.440 --> 01:19:45.000
kind of enough. Don't trust the narratives that people weave around you, especially books.

01:19:45.000 --> 01:19:49.200
I mean, how would, I mean, why would they be even writing a book if they are so content

01:19:49.200 --> 01:19:53.440
with their life and they're so awesome? They're writing a book because they want you to be

01:19:53.440 --> 01:19:58.560
engaged with it. Sorry, I could be wrong.

01:19:58.560 --> 01:20:04.840
I differ here and the point is not every book is written for engagement. And previously

01:20:04.840 --> 01:20:11.520
how knowledge was shared from one generation to another was through a medium of writing.

01:20:11.520 --> 01:20:15.960
And when people were writing and we have great books, right? And we have learned through

01:20:15.960 --> 01:20:20.680
books, we have been in schools reading books. And a lot of principles that we read today

01:20:20.680 --> 01:20:26.520
are comedies and a lot of others, they came and we studied from books, right? So I don't

01:20:26.520 --> 01:20:31.960
think so that those were written for engagement or they were trying to weave an idea around

01:20:31.960 --> 01:20:37.880
you. So if that is the case where you believe that somebody is trying to sell you something

01:20:37.880 --> 01:20:42.560
and weaving an idea around you, then so is conversation. Conversation is also in common.

01:20:42.560 --> 01:20:47.400
Which is exactly, yeah, definitely. I mean, why do you think I am here on Twitter or you

01:20:47.400 --> 01:20:51.960
are here on Twitter? You are selling your persona, I am selling my persona and we want

01:20:51.960 --> 01:20:56.240
to engage with relevant people. I'm not saying anything. I'm just saying.

01:20:56.240 --> 01:21:07.680
Let's play it nice here, people. I will speak one by one. Don't speak and only another one.

01:21:07.680 --> 01:21:15.840
Yeah, Gogan, you can go ahead. Then we can go to Devashi and Amul, you can add your points

01:21:15.840 --> 01:21:20.840
as well.

01:21:20.840 --> 01:21:35.760
So the idea is, see, I don't think it's a sell idea. It's everyone's idea. It's something,

01:21:35.760 --> 01:21:40.280
so we cannot put a blanket statement to it or something. They say it's a waste of apples

01:21:40.280 --> 01:21:46.320
and they can't say that everything is a waste. I don't buy that idea. And if it's like that,

01:21:46.320 --> 01:21:52.640
well, on the contrary, what I think is that in their whole lifetime, when people achieve

01:21:52.640 --> 01:21:56.560
something, they do a lot of things and when they feel like, okay, that they want to pass

01:21:56.560 --> 01:22:02.760
on this knowledge to somebody else, they write one book, right? And when they write one book,

01:22:02.760 --> 01:22:08.720
they try to put everything they have learned, put maximum efforts to it, make sure that

01:22:08.720 --> 01:22:14.480
this stays and this passes on, right? And reaches the, you know, number of people they

01:22:14.480 --> 01:22:19.360
want to impact. So kind of book writing is kind of the best effort they're putting in

01:22:19.360 --> 01:22:22.840
something and it is one of the best jobs that they're doing.

01:22:22.840 --> 01:22:23.840
Yes.

01:22:23.840 --> 01:22:29.920
So I think if I read books, so like I have read this psychology of money, right? So I

01:22:29.920 --> 01:22:35.960
believe that is a great book and it is summary of a lot of things that I could not have learned.

01:22:35.960 --> 01:22:43.000
Yes, I think I agree. Books are good. Books are great. Books are bad. Books are dumb. And

01:22:43.000 --> 01:22:48.680
what I think Abul was talking about is the New York Times bestseller list. That's a list

01:22:48.680 --> 01:22:54.160
of all the dumb idiotic books. So you don't want to go there because anybody who ranks

01:22:54.160 --> 01:22:58.880
something is nonsense. You want to find out what is good for you and you can only do that

01:22:58.880 --> 01:23:04.240
by taking the books, read them, understand them, use them, apply them, throw them away,

01:23:04.240 --> 01:23:08.840
don't read them, do whatever you want, but it's about you doing the stuff. So I'll give

01:23:08.840 --> 01:23:15.360
you a very simple idea. The idea about a good product is not about the product. It's about

01:23:15.360 --> 01:23:20.560
the user of the product as to how the user is using the product. Same with books. It's

01:23:20.560 --> 01:23:25.040
not about the book. It's about the reader who is taking the book, consuming it, using

01:23:25.040 --> 01:23:31.360
it, applying it, doing shit out of it, making mistakes and dying out of it or making good

01:23:31.360 --> 01:23:37.480
things out of it. It's about the user, the reader. Books themselves are useful, but not

01:23:37.480 --> 01:23:45.440
every book is good and not every book is bad. It's the people how you make use of that counts.

01:23:45.440 --> 01:23:47.440
Keep going.

01:23:47.440 --> 01:23:53.160
Yeah. Here's what happens in this. Okay. And maybe that's when you miss the point that

01:23:53.160 --> 01:23:56.920
I was calling it a hypothesis. Okay. So when I say it is a hypothesis, by default, it doesn't

01:23:56.920 --> 01:24:03.520
mean everything. So please don't generalize that. And my hypothesis is this. Most books

01:24:03.520 --> 01:24:11.520
are written to be sold. Most books are written by people who want to be seen in a certain

01:24:11.520 --> 01:24:18.160
manner. I'm unsure if anybody has written a biography or autobiography and told the

01:24:18.160 --> 01:24:27.160
world all the bad things they have done in life. All of us want to be validated, engaged

01:24:27.160 --> 01:24:33.760
and valued. And which is what books are. Most of them are narratives. We mutate whatever

01:24:33.760 --> 01:24:41.240
reality to make sure we create a fiction out of it that can be a good story. Because good

01:24:41.240 --> 01:24:45.240
stories, by the way, are very rare. It's very difficult to create a series of events and

01:24:45.240 --> 01:24:50.000
say that, hey, everything added up. That's just us trying to fit a pattern there. So

01:24:50.000 --> 01:24:55.800
read about the concept of stories and anti-stories, by the way, folks. Again, hypothesis. I could

01:24:55.800 --> 01:25:04.480
be wrong so that people can go poking around, but 80-90% books are just propaganda or narratives.

01:25:04.480 --> 01:25:09.800
Try to understand. You are meant to experiment and learn on your own. 20 minutes spent on

01:25:09.800 --> 01:25:15.000
reading, 80 minutes spent on experimenting and building your own conviction. Don't trust

01:25:15.000 --> 01:25:19.800
me. Don't trust Nilesh. Don't trust anybody. Trust your experimentation to build your

01:25:19.800 --> 01:25:25.720
conviction because there is no silver bullet. Context is everything. So that's my hypothesis.

01:25:25.720 --> 01:25:31.120
Again, I could be wrong. I do agree with the last point, though, Amul, that 20% should

01:25:31.120 --> 01:25:36.720
be reading and 80% should be action because action is also the kind of great thing and

01:25:36.720 --> 01:25:43.080
makes results. Yes, Bahub would say Nike logo, just do it. He got offended when I inverted

01:25:43.080 --> 01:25:51.720
Nike logo. Yeah. Nike is kind of like my passion thing because it's such an emotion kind of

01:25:51.720 --> 01:25:56.640
thing. So, but I think we'll divide from the topical to go in that conversation. Yes, there

01:25:56.640 --> 01:26:04.480
are some. I just wanted to add this point. People go and read books and try to understand

01:26:04.480 --> 01:26:08.080
that. What is the intention of the author here? What is the story they are painting

01:26:08.080 --> 01:26:13.760
about themselves? And most likely you will understand that most books are narrative.

01:26:13.760 --> 01:26:18.520
And I'm saying most, not all. So few things are useful. Few books that talk about principles

01:26:18.520 --> 01:26:26.960
are useful. But most of them want you to feel entertained and engaged in it and not as much

01:26:26.960 --> 01:26:34.160
as you being effective. So try to be a little skeptical around that. That's my hypothesis.

01:26:34.160 --> 01:26:41.600
Thank you. Let's get in that discussion there. And anonymous, you have been here for a while.

01:26:41.600 --> 01:26:45.800
Not sure like what your profile is, but you can go ahead and mute and answer your question

01:26:45.800 --> 01:26:51.520
or ask your question. He's not just anonymous. He's unknown anonymous. He's unknown anonymous

01:26:51.520 --> 01:26:57.360
apparently. Unknown anonymous. Oh yeah, my bad. Because I think I only see the first

01:26:57.360 --> 01:27:17.680
few characters. No problem. Any language is okay.

01:27:17.680 --> 01:27:35.560
What

01:27:35.560 --> 01:27:37.560
You play music?

01:27:37.560 --> 01:27:39.560
I sing but I can't hear.

01:27:39.560 --> 01:27:41.560
You play music?

01:27:41.560 --> 01:27:43.560
Yes.

01:27:43.560 --> 01:27:45.560
You cook?

01:27:45.560 --> 01:27:47.560
Only for myself.

01:27:47.560 --> 01:27:49.560
I cook.

01:27:49.560 --> 01:27:51.560
You cook delicious food?

01:27:51.560 --> 01:27:53.560
To fill my stomach.

01:27:53.560 --> 01:27:55.560
I mean, I don't have that kind of talent.

01:27:55.560 --> 01:27:57.560
That's why I'm in tech.

01:27:57.560 --> 01:27:59.560
Tell me one thing that you did that you liked.

01:27:59.560 --> 01:28:01.560
One thing.

01:28:01.560 --> 01:28:03.560
Whatever it is.

01:28:03.560 --> 01:28:05.560
I can write.

01:28:05.560 --> 01:28:07.560
Then write.

01:28:07.560 --> 01:28:09.560
I can write.

01:28:09.560 --> 01:28:11.560
Then write.

01:28:11.560 --> 01:28:13.560
And write something that others like.

01:28:13.560 --> 01:28:15.560
Like do something for other people.

01:28:15.560 --> 01:28:17.560
That's how you start.

01:28:17.560 --> 01:28:19.560
Because that's the key to

01:28:19.560 --> 01:28:21.560
making money eventually.

01:28:21.560 --> 01:28:23.560
Where does the money come from?

01:28:23.560 --> 01:28:25.560
When they

01:28:25.560 --> 01:28:27.560
serve someone else.

01:28:27.560 --> 01:28:29.560
Help others.

01:28:29.560 --> 01:28:31.560
When you help other people,

01:28:31.560 --> 01:28:33.560
money is a side product.

01:28:33.560 --> 01:28:35.560
Byproduct of that process.

01:28:35.560 --> 01:28:37.560
It is not the outcome you want.

01:28:37.560 --> 01:28:39.560
It is the outcome you get.

01:28:39.560 --> 01:28:41.560
The outcome you want is satisfaction

01:28:41.560 --> 01:28:43.560
of the other person.

01:28:43.560 --> 01:28:45.560
Satisfy the other person.

01:28:45.560 --> 01:28:47.560
When he is satisfied,

01:28:47.560 --> 01:28:49.560
he will tell his friends.

01:28:49.560 --> 01:28:51.560
And his friends

01:28:51.560 --> 01:28:53.560
and all his friends will come to you.

01:28:53.560 --> 01:28:55.560
And then you will get money.

01:28:55.560 --> 01:28:57.560
So it's translating this into English.

01:28:57.560 --> 01:28:59.560
You want to help other people

01:28:59.560 --> 01:29:01.560
to satisfy what their objectives are.

01:29:01.560 --> 01:29:03.560
You want to understand what they're trying to accomplish

01:29:03.560 --> 01:29:05.560
and help them become successful.

01:29:05.560 --> 01:29:07.560
When your

01:29:07.560 --> 01:29:09.560
audience or whatever the other person is,

01:29:09.560 --> 01:29:11.560
he or she becomes successful,

01:29:11.560 --> 01:29:13.560
they go and talk about you with their friends.

01:29:13.560 --> 01:29:15.560
That is classic

01:29:15.560 --> 01:29:17.560
marketing. That's what you want.

01:29:17.560 --> 01:29:19.560
That's the best kind of marketing.

01:29:19.560 --> 01:29:21.560
When your customer

01:29:21.560 --> 01:29:23.560
or the person you're trying to help

01:29:23.560 --> 01:29:25.560
tells somebody, hey I know this guy.

01:29:25.560 --> 01:29:27.560
He's really really good. He helped me

01:29:27.560 --> 01:29:29.560
accomplish my goal.

01:29:29.560 --> 01:29:31.560
And so these other friends

01:29:31.560 --> 01:29:33.560
of his will come to you.

01:29:33.560 --> 01:29:35.560
And they'll not come alone.

01:29:35.560 --> 01:29:37.560
They'll bring their friends and family, uncles

01:29:37.560 --> 01:29:39.560
and aunties and everybody. They'll all come

01:29:39.560 --> 01:29:41.560
to you seeking help.

01:29:41.560 --> 01:29:43.560
And then you will see money coming in.

01:29:43.560 --> 01:29:45.560
That's how money comes.

01:29:51.560 --> 01:29:53.560
Don't chase money.

01:29:53.560 --> 01:29:55.560
Don't chase money.

01:29:55.560 --> 01:29:57.560
Chase money. Chase

01:29:57.560 --> 01:30:25.560
money.

01:30:25.560 --> 01:30:52.560
Go to

01:30:52.560 --> 01:30:53.560
go to

01:30:53.560 --> 01:31:00.120
what they want, what they want, and even if you have to work 2 miles away for it,

01:31:00.120 --> 01:31:03.160
but if you do that and give it value, then you get money.

01:31:03.160 --> 01:31:07.720
Because sometimes there are 8 things that you do for yourself, sitting idle.

01:31:07.720 --> 01:31:12.760
But if you want to earn money, then you have to understand and think about the world,

01:31:12.760 --> 01:31:15.320
and you have to do the work that you don't like.

01:31:15.320 --> 01:31:18.120
Meaning you have to make yourself understand.

01:31:18.120 --> 01:31:27.320
Today I have given myself a new title, J-level executive.

01:31:27.320 --> 01:31:29.320
J means janitor level executive.

01:31:29.320 --> 01:31:32.920
Janitor means janitor.

01:31:32.920 --> 01:31:37.240
So that is my new title, J-level executive.

01:31:37.240 --> 01:31:41.720
If you look at LinkedIn, you make yourself C-level, I am chief A, chief O.

01:31:41.720 --> 01:31:44.920
So I said I am J, janitor.

01:31:44.920 --> 01:31:52.520
I think you can just take some time.

01:31:52.520 --> 01:31:59.320
There are more questions here from other people, I don't know who came first.

01:31:59.320 --> 01:32:04.520
So Narayani, you want to go ahead, you have been here for part 1.

01:32:04.520 --> 01:32:11.320
Hi everyone, I think I am going to take lead from Shama and say Namaste everyone.

01:32:11.320 --> 01:32:13.320
I found that very interesting.

01:32:13.320 --> 01:32:16.920
Yeah, she is from France and she could say it so nicely.

01:32:16.920 --> 01:32:18.920
I think we should also try and say that.

01:32:18.920 --> 01:32:22.520
Nilesh, hi, it's a pleasure meeting you here on Spaces.

01:32:22.520 --> 01:32:27.720
So I had two questions, I wanted to know if I can take two questions.

01:32:27.720 --> 01:32:30.920
You can take as many as you want, go ahead.

01:32:30.920 --> 01:32:36.920
One is tech, the other is slightly tangential, it's non-tech.

01:32:36.920 --> 01:32:40.120
You've been a UPSC man, you've been in the government services,

01:32:40.120 --> 01:32:48.920
you're also a tech man today and I'm sure you're doing a few other things also parallelly.

01:32:48.920 --> 01:32:52.520
I'm in the recruitment space, I'm also allied to the tech industry

01:32:52.520 --> 01:32:59.720
but my heart bleeds when I see all the youngsters chasing only tech.

01:32:59.720 --> 01:33:06.320
I'm not saying it's bad, but when I see so many people try that and fail,

01:33:06.320 --> 01:33:10.520
I feel bad that tech is not made for everyone.

01:33:10.520 --> 01:33:12.720
We have to play on our strengths.

01:33:12.720 --> 01:33:18.520
Maybe there is somebody who is good in logistics, somebody who is good in painting,

01:33:18.520 --> 01:33:21.520
somebody who is good in some other trade.

01:33:21.520 --> 01:33:27.720
What can we do so that everybody is not chasing tech?

01:33:27.720 --> 01:33:31.720
How else can we change the system in our own small way?

01:33:31.720 --> 01:33:36.520
What can we do to contribute to telling these youngsters that

01:33:36.520 --> 01:33:38.320
everyone should not go into tech?

01:33:38.320 --> 01:33:44.320
There are more opportunities in the market, there are more opportunities in India.

01:33:44.320 --> 01:33:45.520
What can we do?

01:33:45.520 --> 01:33:49.120
I don't know if there is an answer to this but it's just a way of thinking.

01:33:49.120 --> 01:33:51.320
I got your question, I'll give you the answer.

01:33:51.320 --> 01:33:53.320
So that's one thing.

01:33:53.320 --> 01:33:56.520
So hold your second question.

01:33:56.520 --> 01:33:57.720
I'll answer this first.

01:33:57.720 --> 01:33:59.520
Okay, hold it.

01:33:59.520 --> 01:34:02.920
So your question was, why everybody go in tech?

01:34:02.920 --> 01:34:03.920
Why not something else?

01:34:03.920 --> 01:34:06.120
There are hundreds of other things to do.

01:34:06.120 --> 01:34:12.920
So my response to that is, whether it is Java, C++, C-sharp or God knows whatever language,

01:34:12.920 --> 01:34:14.520
they don't matter.

01:34:14.520 --> 01:34:16.120
I will say the same thing.

01:34:16.120 --> 01:34:19.520
Tech doesn't matter.

01:34:19.520 --> 01:34:21.320
I'll tell you what matters.

01:34:21.320 --> 01:34:25.320
And I already told you while talking to anonymous and I'll repeat that.

01:34:25.320 --> 01:34:29.120
What matters is how you make other people successful.

01:34:29.120 --> 01:34:34.520
Now whether you can do by sweeping their floor or making roti for them or cooking for them

01:34:34.520 --> 01:34:40.520
or do whatever it takes driving them around, you know, or writing C++ code for them or

01:34:40.520 --> 01:34:45.120
writing assembly language programming or whatever it takes to make them successful.

01:34:45.120 --> 01:34:46.720
That is the primary goal.

01:34:46.720 --> 01:34:51.920
However, you do that with tech, without tech is not the point.

01:34:51.920 --> 01:34:53.920
That is not the point.

01:34:53.920 --> 01:34:56.320
The point is to make other people successful.

01:34:56.320 --> 01:34:57.120
That's it.

01:34:57.120 --> 01:35:01.120
There's no other point in life.

01:35:01.120 --> 01:35:03.920
How you do that is your choice.

01:35:03.920 --> 01:35:08.520
And this tech craze comes from the fact that people tend to compare themselves with their

01:35:08.520 --> 01:35:09.520
colleagues and co-workers.

01:35:09.520 --> 01:35:11.120
My friend did this.

01:35:11.120 --> 01:35:13.320
I will also do this.

01:35:13.320 --> 01:35:18.520
That's the origin of this nonsense.

01:35:18.520 --> 01:35:19.720
Does that answer your question?

01:35:19.720 --> 01:35:23.320
There's another.

01:35:23.320 --> 01:35:27.320
Thank you for taking that.

01:35:27.320 --> 01:35:31.320
Nilesh, there was a small point in this.

01:35:31.320 --> 01:35:41.320
I think that in the world we live in, in India, there are a lot of lower middle class people

01:35:41.320 --> 01:35:45.320
who want to become middle class and so on and so forth.

01:35:45.320 --> 01:35:50.320
So what is the problem in primary life?

01:35:50.320 --> 01:35:55.320
The problem in primary life is to get enough food and rest.

01:35:55.320 --> 01:35:56.320
That's it.

01:35:56.320 --> 01:36:02.320
Every generation has a fad that there is more money in this.

01:36:02.320 --> 01:36:08.320
We are not a developed country like Finland where we will give you unemployment benefits.

01:36:08.320 --> 01:36:11.320
So that is not the case with us.

01:36:11.320 --> 01:36:17.320
Which means the primary driver for every generation, every decade is some kind of a field which is very popular.

01:36:17.320 --> 01:36:22.320
I think at your time, mechanical was that field in the 1970s and 80s.

01:36:22.320 --> 01:36:28.320
Everybody was into engineering or doctorate and if you become a mechanical engineer,

01:36:28.320 --> 01:36:32.320
you would get a job in sales or government jobs.

01:36:32.320 --> 01:36:34.320
The government jobs are still very crazy.

01:36:34.320 --> 01:36:37.320
This doesn't mean that children want to study for UPSC exams.

01:36:37.320 --> 01:36:40.320
This is that there is no money at home.

01:36:40.320 --> 01:36:43.320
My father had asked me to put it in the grocery store.

01:36:43.320 --> 01:36:45.320
Now I don't work in the grocery store.

01:36:45.320 --> 01:36:47.320
You can do engineering, you can study maths.

01:36:47.320 --> 01:36:52.320
Even if you don't do maths, you can read the book a hundred times in your head.

01:36:52.320 --> 01:36:54.320
So this is not a choice.

01:36:54.320 --> 01:36:59.320
This is a compulsion according to the system of our country.

01:36:59.320 --> 01:37:04.320
I don't know if you understand Hindi or not but this is not a choice.

01:37:04.320 --> 01:37:05.320
You do?

01:37:05.320 --> 01:37:06.320
Okay.

01:37:06.320 --> 01:37:08.320
So this is not our choice.

01:37:08.320 --> 01:37:10.320
I didn't come into tech because I didn't like tech.

01:37:10.320 --> 01:37:11.320
I didn't like tech at all.

01:37:11.320 --> 01:37:13.320
I wanted to become a Hindi poet.

01:37:13.320 --> 01:37:16.320
But my parents told me that my son is like this.

01:37:16.320 --> 01:37:18.320
They will make you sit in the grocery store.

01:37:18.320 --> 01:37:23.320
So either sit in the grocery store or earn some money by doing engineering.

01:37:23.320 --> 01:37:28.320
If they would have given me a Bachelor of Sweeping Technology, I would have done it.

01:37:28.320 --> 01:37:31.320
I used to get a job for Rs.25,000.

01:37:31.320 --> 01:37:35.320
So if I would have got a Bachelor of Sweeping Technology for Rs.25,000,

01:37:35.320 --> 01:37:36.320
I would have done it.

01:37:36.320 --> 01:37:39.320
They gave me a Bachelor of Computer Science and I did that.

01:37:39.320 --> 01:37:43.320
But I need two meals a day. For that, don't do any unethical work.

01:37:43.320 --> 01:37:45.320
But whatever you say, they will do it.

01:37:45.320 --> 01:37:47.320
Because we are businessmen.

01:37:47.320 --> 01:37:50.320
We should get some money and some comfort.

01:37:50.320 --> 01:37:55.320
The generation in which they are, I think if this will happen in 2030,

01:37:55.320 --> 01:37:57.320
then I will learn design.

01:37:57.320 --> 01:38:00.320
If in 2040 this will happen that if you get money by dancing,

01:38:00.320 --> 01:38:03.320
then I will get old but I will dance a little.

01:38:03.320 --> 01:38:06.320
Do you dance now?

01:38:06.320 --> 01:38:08.320
I dance for fun now.

01:38:08.320 --> 01:38:10.320
You have a good point, Amol.

01:38:10.320 --> 01:38:12.320
We do what everyone else is doing.

01:38:12.320 --> 01:38:16.320
Whether or not we have that capability or not,

01:38:16.320 --> 01:38:18.320
everyone is stuck in that.

01:38:18.320 --> 01:38:23.320
Sometimes I feel bad because I see so many young students,

01:38:23.320 --> 01:38:27.320
they choose tech and they fail in tech and they get stuck.

01:38:27.320 --> 01:38:30.320
They are stuck in that.

01:38:30.320 --> 01:38:34.320
It is aspirational, right? Everyone has to reach fang man.

01:38:34.320 --> 01:38:37.320
They don't play on their strengths.

01:38:37.320 --> 01:38:40.320
But then looking at it from your side,

01:38:40.320 --> 01:38:42.320
everyone has to do the same.

01:38:42.320 --> 01:38:45.320
It's a catch-22 situation.

01:38:45.320 --> 01:38:48.320
These are thoughts in my brain.

01:38:48.320 --> 01:38:51.320
So I just put it out because Vilesh was here.

01:38:51.320 --> 01:38:53.320
That's a very fair point.

01:38:53.320 --> 01:38:56.320
I also feel that there are many good things in life

01:38:56.320 --> 01:38:59.320
which should have the value of skill.

01:38:59.320 --> 01:39:03.320
But they don't have the value of skill and they are getting lost.

01:39:03.320 --> 01:39:05.320
For example, our Sanskrit language.

01:39:05.320 --> 01:39:10.320
Or there are so many other methods

01:39:10.320 --> 01:39:12.320
which are getting lost in our lives

01:39:12.320 --> 01:39:19.320
because they don't have a business outcome.

01:39:19.320 --> 01:39:23.320
They don't have a way to create a feasible business.

01:39:23.320 --> 01:39:28.320
The problem is that we don't have social security in our country.

01:39:28.320 --> 01:39:32.320
If I stop earning tomorrow,

01:39:32.320 --> 01:39:35.320
then who will pay the medical bills?

01:39:35.320 --> 01:39:37.320
Medical bills are so expensive.

01:39:37.320 --> 01:39:39.320
School fees are so high.

01:39:39.320 --> 01:39:41.320
If I think of doing something for my fun,

01:39:41.320 --> 01:39:43.320
then who will run this house?

01:39:43.320 --> 01:39:46.320
Our life gets lost in running the house.

01:39:46.320 --> 01:39:52.320
And 99% of us have this thought in our life

01:39:52.320 --> 01:39:54.320
that we should keep running the house.

01:39:54.320 --> 01:39:56.320
When it comes to running the house,

01:39:56.320 --> 01:40:03.320
we are against desires, strengths, aptitude,

01:40:03.320 --> 01:40:08.320
and all these luxuries.

01:40:08.320 --> 01:40:10.320
If I wanted to become a Hindi poet,

01:40:10.320 --> 01:40:12.320
then I would have become a good Hindi poet.

01:40:12.320 --> 01:40:14.320
But if I didn't earn two times a day,

01:40:14.320 --> 01:40:15.320
then how would I do it?

01:40:15.320 --> 01:40:17.320
Then I would have been sitting in the grocery store.

01:40:17.320 --> 01:40:19.320
Then no one would have listened to me on Twitter.

01:40:19.320 --> 01:40:23.320
So, I have become very wise.

01:40:23.320 --> 01:40:26.320
Okay, Nilesh, my second question, which is very, very tech.

01:40:26.320 --> 01:40:30.320
So recently I read that Amazon Prime video

01:40:30.320 --> 01:40:33.320
from microservices is moving to Mono.

01:40:33.320 --> 01:40:36.320
Yeah, I know the topic.

01:40:36.320 --> 01:40:38.320
Go ahead, question.

01:40:38.320 --> 01:40:41.320
So, we are all chasing microservices

01:40:41.320 --> 01:40:44.320
for the last five, six years or maybe more.

01:40:44.320 --> 01:40:46.320
Then suddenly there is a big guy who says,

01:40:46.320 --> 01:40:48.320
I'm shifting.

01:40:48.320 --> 01:40:52.320
What should we watch for,

01:40:52.320 --> 01:40:53.320
especially I'm a recruiter.

01:40:53.320 --> 01:40:55.320
I mean, I've got to be aware of what's happening

01:40:55.320 --> 01:40:56.320
in the tech industry.

01:40:56.320 --> 01:40:58.320
So, what do you think I should?

01:40:58.320 --> 01:41:00.320
Yeah, I'll tell you.

01:41:00.320 --> 01:41:02.320
So, there is this thing called,

01:41:02.320 --> 01:41:04.320
I'll speak in Hindi.

01:41:04.320 --> 01:41:07.320
One is a golden hammer.

01:41:07.320 --> 01:41:10.320
And one is a metal hammer.

01:41:10.320 --> 01:41:12.320
I'll now translate that into English.

01:41:12.320 --> 01:41:16.320
So, there are tools that a person who works with gold,

01:41:16.320 --> 01:41:17.320
goldsmith, he will use.

01:41:17.320 --> 01:41:21.320
And there are tools that a person who works with steel

01:41:21.320 --> 01:41:25.320
will use, the iron people, whatever they're called.

01:41:25.320 --> 01:41:27.320
So, the tools are different for different things.

01:41:27.320 --> 01:41:29.320
You can put a sledgehammer

01:41:29.320 --> 01:41:31.320
or you can use a delicate scalpel

01:41:31.320 --> 01:41:33.320
to accomplish certain tasks.

01:41:33.320 --> 01:41:35.320
So, there are things needed for different things.

01:41:35.320 --> 01:41:37.320
There are tools available for accomplishing

01:41:37.320 --> 01:41:40.320
the thing that you want to have.

01:41:40.320 --> 01:41:45.320
If you apply a sledgehammer to peel garlic,

01:41:45.320 --> 01:41:49.320
what will you get is a smush, right?

01:41:49.320 --> 01:41:53.320
And so, the idea is to use the right tool for the right job.

01:41:53.320 --> 01:41:56.320
And what you're asking me is about the use of microservices

01:41:56.320 --> 01:41:59.320
versus monolith architecture.

01:41:59.320 --> 01:42:02.320
So, the answer to that specific question is,

01:42:02.320 --> 01:42:06.320
I want you to read the Prime Video Tech blog

01:42:06.320 --> 01:42:08.320
one more time for yourself.

01:42:08.320 --> 01:42:12.320
And you will find out that the blog doesn't even talk about

01:42:12.320 --> 01:42:15.320
everybody should migrate to monolith.

01:42:15.320 --> 01:42:19.320
It doesn't talk about microservices are dead.

01:42:19.320 --> 01:42:23.320
It talks about a specific thing that only applies

01:42:23.320 --> 01:42:25.320
to Prime Video Technology

01:42:25.320 --> 01:42:27.320
in terms of how the interprocess communication

01:42:27.320 --> 01:42:32.320
is saving them money by aggregating them into a monolith

01:42:32.320 --> 01:42:36.320
for a specific use case after having so many years

01:42:36.320 --> 01:42:38.320
of working with microservices

01:42:38.320 --> 01:42:42.320
and grown into a bigger infrastructure.

01:42:42.320 --> 01:42:45.320
So, now it makes sense for that particular use case

01:42:45.320 --> 01:42:46.320
to consolidate.

01:42:46.320 --> 01:42:50.320
And therefore, they did it for that use case.

01:42:50.320 --> 01:42:53.320
It doesn't mean microservices are dead.

01:42:53.320 --> 01:42:57.320
It doesn't mean that the only way is to go with a big machine.

01:42:57.320 --> 01:43:00.320
That's not the idea.

01:43:00.320 --> 01:43:05.320
So, bottom line is to read your blog one more time.

01:43:05.320 --> 01:43:07.320
Got that. Got that.

01:43:07.320 --> 01:43:08.320
Thanks, Nilesh. Thank you.

01:43:08.320 --> 01:43:12.320
You're welcome.

01:43:12.320 --> 01:43:13.320
Next, please.

01:43:13.320 --> 01:43:16.320
Thanks, Bhavo. Thanks for giving the mic.

01:43:16.320 --> 01:43:20.320
Thank you. Thank you. Thank you for joining us.

01:43:20.320 --> 01:43:21.320
Yeah.

01:43:21.320 --> 01:43:23.320
So, I think...

01:43:23.320 --> 01:43:25.320
I want to add one thing, Narayani.

01:43:25.320 --> 01:43:28.320
And the doubt that you had

01:43:28.320 --> 01:43:31.320
that how did the narrative of monolith

01:43:31.320 --> 01:43:34.320
change from microservices?

01:43:34.320 --> 01:43:37.320
So, the devil is in the details.

01:43:37.320 --> 01:43:40.320
And as I said, you'll hear a little bit about

01:43:40.320 --> 01:43:43.320
whenever we do information aggregation,

01:43:43.320 --> 01:43:46.320
there is a loss of information.

01:43:46.320 --> 01:43:47.320
Correct?

01:43:47.320 --> 01:43:50.320
So, you can say the value of any distribution of data

01:43:50.320 --> 01:43:53.320
is its mean value, average value is 5.

01:43:53.320 --> 01:43:56.320
But that 5 value can be distributed in any way.

01:43:56.320 --> 01:43:57.320
So, what happened?

01:43:57.320 --> 01:43:59.320
All the things that you read from news sources,

01:43:59.320 --> 01:44:01.320
the headlines of news sources,

01:44:01.320 --> 01:44:03.320
or the things that are said above,

01:44:03.320 --> 01:44:04.320
that is aggregation.

01:44:04.320 --> 01:44:06.320
Because their work is approximation.

01:44:06.320 --> 01:44:08.320
They can't print the whole blog in detail.

01:44:08.320 --> 01:44:10.320
And the approximation

01:44:10.320 --> 01:44:11.320
requires information loss.

01:44:11.320 --> 01:44:14.320
As I said, if you make 30 rows of data into one row,

01:44:14.320 --> 01:44:16.320
the details of 30 rows are lost.

01:44:16.320 --> 01:44:18.320
There is only one thing left.

01:44:18.320 --> 01:44:21.320
And that one thing can be right or wrong.

01:44:21.320 --> 01:44:23.320
What happened in this case?

01:44:23.320 --> 01:44:26.320
And again, I'll push the narrative once.

01:44:26.320 --> 01:44:28.320
If people had said that

01:44:28.320 --> 01:44:30.320
when I read the blog,

01:44:30.320 --> 01:44:34.320
monolith and microservices are a decent mix.

01:44:34.320 --> 01:44:36.320
There is no major change.

01:44:36.320 --> 01:44:40.320
So, you don't read their LinkedIn blog post or news.

01:44:40.320 --> 01:44:42.320
So, what did the influencers do?

01:44:42.320 --> 01:44:44.320
They said things that made you feel good.

01:44:44.320 --> 01:44:45.320
Correct.

01:44:45.320 --> 01:44:48.320
That made you feel happy, sad, or tensed.

01:44:48.320 --> 01:44:51.320
Or you felt, wow, this is a new thing.

01:44:51.320 --> 01:44:53.320
Because they write to entertain.

01:44:53.320 --> 01:44:55.320
And the things written to entertain

01:44:55.320 --> 01:44:57.320
are often a bit false.

01:44:57.320 --> 01:44:59.320
Because they are fitting a narrative.

01:44:59.320 --> 01:45:02.320
And because of this, this whole narrative has been made.

01:45:02.320 --> 01:45:05.320
Oh no, microservices have become useless.

01:45:05.320 --> 01:45:07.320
Now monolith will work.

01:45:07.320 --> 01:45:09.320
This story was set because

01:45:09.320 --> 01:45:12.320
they approximated the information in this way

01:45:12.320 --> 01:45:14.320
so that you can be entertained.

01:45:14.320 --> 01:45:18.320
Otherwise, how do you like the LinkedIn post or Twitter post?

01:45:18.320 --> 01:45:22.320
I think I can be wrong, obviously.

01:45:24.320 --> 01:45:26.320
Thank you.

01:45:26.320 --> 01:45:30.320
Next, please.

01:45:32.320 --> 01:45:34.320
There are a couple of hands here.

01:45:34.320 --> 01:45:36.320
Hi, Nilesh.

01:45:36.320 --> 01:45:38.320
Hi.

01:45:38.320 --> 01:45:40.320
Hello.

01:45:40.320 --> 01:45:44.320
I have a question that I want to ask directly.

01:45:44.320 --> 01:45:47.320
Basically, I have been working on Azure AWS GCP

01:45:47.320 --> 01:45:50.320
in the cloud for the last three years.

01:45:50.320 --> 01:45:52.320
Let me say one simple thing.

01:45:52.320 --> 01:45:54.320
Yes.

01:45:54.320 --> 01:45:56.320
Go ahead.

01:45:58.320 --> 01:46:00.320
I don't know.

01:46:00.320 --> 01:46:02.320
Go ahead.

01:46:02.320 --> 01:46:04.320
Don't know.

01:46:04.320 --> 01:46:06.320
Go ahead.

01:46:06.320 --> 01:46:08.320
Well, that's a good one.

01:46:08.320 --> 01:46:10.320
So I was just saying that

01:46:10.320 --> 01:46:12.320
I wanted to use some accounts

01:46:12.320 --> 01:46:14.320
to practice Handzone Labs.

01:46:14.320 --> 01:46:16.320
So I was confused between three platforms.

01:46:16.320 --> 01:46:20.320
A Cloud Guru, Vizlabs and Cloud Academy.

01:46:20.320 --> 01:46:22.320
So all three provide services.

01:46:22.320 --> 01:46:24.320
The cheapest one is Vizlabs.

01:46:24.320 --> 01:46:26.320
If I split it with two people,

01:46:26.320 --> 01:46:30.320
it would cost Rs. 4,000 per year.

01:46:30.320 --> 01:46:32.320
I can do that for just Rs. 4,000.

01:46:32.320 --> 01:46:34.320
So I was just...

01:46:34.320 --> 01:46:36.320
Can you share a bit about that?

01:46:36.320 --> 01:46:38.320
If you have any review about that?

01:46:38.320 --> 01:46:42.320
Or should I just take any one of three

01:46:42.320 --> 01:46:46.320
and just start working on the services?

01:46:46.320 --> 01:46:48.320
So you know what's happening here is

01:46:48.320 --> 01:46:50.320
that you are asking Apple computer company,

01:46:50.320 --> 01:46:52.320
the iPhone company,

01:46:52.320 --> 01:46:56.320
should I buy Samsung or my phone?

01:46:56.320 --> 01:46:58.320
Or should I buy another Android?

01:46:58.320 --> 01:47:00.320
You are asking Apple.

01:47:00.320 --> 01:47:02.320
That's what you just did, by the way.

01:47:02.320 --> 01:47:04.320
I'll tell you in English now.

01:47:04.320 --> 01:47:06.320
What you just did

01:47:06.320 --> 01:47:08.320
is asking the Apple CEO

01:47:08.320 --> 01:47:10.320
what should I buy in Android?

01:47:10.320 --> 01:47:14.320
Let me tell you why I say that.

01:47:14.320 --> 01:47:16.320
I am a school.

01:47:16.320 --> 01:47:18.320
I run an educational institution

01:47:18.320 --> 01:47:20.320
from my home.

01:47:20.320 --> 01:47:26.320
And I charge $13,140 for a two-month course.

01:47:26.320 --> 01:47:30.320
I am not even joking.

01:47:30.320 --> 01:47:32.320
You talked about these companies

01:47:32.320 --> 01:47:34.320
that I don't even know of.

01:47:34.320 --> 01:47:36.320
I heard their names, though.

01:47:36.320 --> 01:47:38.320
But they are supposed to be my competition.

01:47:38.320 --> 01:47:40.320
I don't think there is anybody

01:47:40.320 --> 01:47:42.320
that competes with me.

01:47:42.320 --> 01:47:46.320
I don't know anybody who charges like I do.

01:47:46.320 --> 01:47:48.320
I know the precise answer to your question

01:47:48.320 --> 01:47:50.320
about these companies that you mentioned.

01:47:50.320 --> 01:47:52.320
Because I don't care.

01:47:52.320 --> 01:47:54.320
What I care about

01:47:54.320 --> 01:47:58.320
is the people who come to join my programs.

01:47:58.320 --> 01:48:00.320
And that's what I care about.

01:48:00.320 --> 01:48:02.320
I care about their success.

01:48:02.320 --> 01:48:04.320
So to precisely answer your question,

01:48:04.320 --> 01:48:06.320
I don't know.

01:48:06.320 --> 01:48:08.320
Okay, sure.

01:48:08.320 --> 01:48:10.320
I was unaware.

01:48:10.320 --> 01:48:12.320
I should have researched more.

01:48:12.320 --> 01:48:20.320
Next, please.

01:48:20.320 --> 01:48:24.320
I hope that I am pronouncing that correctly, though.

01:48:24.320 --> 01:48:28.320
You are up next.

01:48:28.320 --> 01:48:30.320
Can you hear me?

01:48:30.320 --> 01:48:32.320
Yes.

01:48:32.320 --> 01:48:34.320
Hello.

01:48:34.320 --> 01:48:36.320
Yes, we can hear you.

01:48:36.320 --> 01:48:38.320
Thank you very much, guys.

01:48:38.320 --> 01:48:40.320
I don't understand Hindu.

01:48:40.320 --> 01:48:42.320
I think most of the conversation

01:48:42.320 --> 01:48:44.320
I did not follow up.

01:48:44.320 --> 01:48:46.320
My question is,

01:48:46.320 --> 01:48:48.320
Nilesh,

01:48:48.320 --> 01:48:50.320
thank you very much

01:48:50.320 --> 01:48:52.320
for this space.

01:48:52.320 --> 01:48:54.320
I could not get a lot of what you were saying.

01:48:54.320 --> 01:48:56.320
But I was really interested

01:48:56.320 --> 01:48:58.320
in the first part where you started.

01:48:58.320 --> 01:49:00.320
Because I am currently still working.

01:49:00.320 --> 01:49:02.320
I switch calls.

01:49:02.320 --> 01:49:04.320
You said you left

01:49:04.320 --> 01:49:06.320
with your child and your wife.

01:49:06.320 --> 01:49:08.320
You left for the U.S.

01:49:08.320 --> 01:49:10.320
and then, yeah, the whole story.

01:49:10.320 --> 01:49:12.320
So I am actually in that kind of place right now.

01:49:12.320 --> 01:49:14.320
I am just 25.

01:49:14.320 --> 01:49:16.320
I am already married.

01:49:16.320 --> 01:49:18.320
But I still have this fear of leaving my country.

01:49:18.320 --> 01:49:20.320
I am doing fine currently.

01:49:20.320 --> 01:49:22.320
But I believe there is probably something

01:49:22.320 --> 01:49:24.320
better that I can actually do outside.

01:49:24.320 --> 01:49:26.320
But I still have this fear.

01:49:26.320 --> 01:49:28.320
Let me give you background.

01:49:28.320 --> 01:49:30.320
I am the third out of a family of seven.

01:49:30.320 --> 01:49:32.320
And right now,

01:49:32.320 --> 01:49:34.320
I think most like my family depends on me.

01:49:34.320 --> 01:49:36.320
Like the income I actually make.

01:49:36.320 --> 01:49:38.320
In a U.S. based company.

01:49:38.320 --> 01:49:40.320
But I work remotely.

01:49:40.320 --> 01:49:42.320
And I actually want to further my studies.

01:49:42.320 --> 01:49:44.320
But I still have this, okay, the family is actually

01:49:44.320 --> 01:49:46.320
dependent on me.

01:49:46.320 --> 01:49:48.320
If I want to actually go out now,

01:49:48.320 --> 01:49:50.320
I would actually probably go out by school.

01:49:50.320 --> 01:49:52.320
Which means I would probably leave my job

01:49:52.320 --> 01:49:54.320
and then start working.

01:49:54.320 --> 01:49:56.320
So that transition phase is what is probably still tying me down.

01:49:56.320 --> 01:49:58.320
I would actually want to apply for schools

01:49:58.320 --> 01:50:00.320
or apply for jobs that would take me outside.

01:50:00.320 --> 01:50:02.320
But I still have this fear that, okay,

01:50:02.320 --> 01:50:04.320
what would happen to my family when I leave?

01:50:04.320 --> 01:50:06.320
Right now, everything is just on me.

01:50:06.320 --> 01:50:08.320
So I don't know how to actually go about it.

01:50:08.320 --> 01:50:10.320
So what I actually did was

01:50:10.320 --> 01:50:12.320
currently I am trying to like set up a business

01:50:12.320 --> 01:50:14.320
for them. But it's really, really

01:50:14.320 --> 01:50:16.320
eating me up like very, very much.

01:50:16.320 --> 01:50:18.320
And that's where I currently am. Like I'm very

01:50:18.320 --> 01:50:20.320
confused. Like

01:50:20.320 --> 01:50:22.320
yes. And

01:50:22.320 --> 01:50:24.320
I don't just know what to do.

01:50:24.320 --> 01:50:26.320
So I will give you my perspective

01:50:26.320 --> 01:50:28.320
on what I understood from you. And I think

01:50:28.320 --> 01:50:30.320
it's a very general answer. But I

01:50:30.320 --> 01:50:32.320
think you might take inferences from

01:50:32.320 --> 01:50:34.320
it to apply to your situation.

01:50:34.320 --> 01:50:36.320
Imagine that

01:50:36.320 --> 01:50:38.320
you are lying on the floor

01:50:38.320 --> 01:50:40.320
on the ground in a football

01:50:40.320 --> 01:50:42.320
field. You're flat.

01:50:44.320 --> 01:50:46.320
Now in that situation, can

01:50:46.320 --> 01:50:48.320
you fall?

01:50:48.320 --> 01:50:50.320
No, you cannot fall because

01:50:50.320 --> 01:50:52.320
you're already on the ground, right?

01:50:52.320 --> 01:50:54.320
So that is what I

01:50:54.320 --> 01:50:56.320
call low spot

01:50:56.320 --> 01:50:58.320
in your life. That's the lowest

01:50:58.320 --> 01:51:00.320
you can go. Fall on the

01:51:00.320 --> 01:51:02.320
ground flat in

01:51:02.320 --> 01:51:04.320
a football field.

01:51:04.320 --> 01:51:06.320
Can you go lower? No.

01:51:06.320 --> 01:51:08.320
Not possible unless you start digging.

01:51:08.320 --> 01:51:10.320
Not possible.

01:51:10.320 --> 01:51:12.320
So that is the

01:51:12.320 --> 01:51:14.320
base level.

01:51:14.320 --> 01:51:16.320
You reach that level. And when you

01:51:16.320 --> 01:51:18.320
are there, the only

01:51:18.320 --> 01:51:20.320
thing you can do is to grow and go

01:51:20.320 --> 01:51:22.320
up.

01:51:22.320 --> 01:51:24.320
So what you should focus

01:51:24.320 --> 01:51:26.320
on when you are feeling afraid

01:51:26.320 --> 01:51:28.320
is to elevate

01:51:28.320 --> 01:51:30.320
your Plan B.

01:51:30.320 --> 01:51:32.320
Elevate Plan B. What does it

01:51:32.320 --> 01:51:34.320
mean? It means the ground

01:51:34.320 --> 01:51:36.320
that you're lying on is actually the

01:51:36.320 --> 01:51:38.320
alternative because what you want is

01:51:38.320 --> 01:51:40.320
something better. You want to go

01:51:40.320 --> 01:51:42.320
to the next level, the higher level.

01:51:42.320 --> 01:51:44.320
Like you want to go reach the stars,

01:51:44.320 --> 01:51:46.320
the moon, whatever it is. So you

01:51:46.320 --> 01:51:48.320
want to elevate your ground

01:51:48.320 --> 01:51:50.320
itself.

01:51:50.320 --> 01:51:52.320
And that is what you should focus on

01:51:52.320 --> 01:51:54.320
to reduce the fear that you have.

01:51:54.320 --> 01:51:56.320
Because you suddenly are

01:51:56.320 --> 01:51:58.320
at a higher level ground.

01:51:58.320 --> 01:52:00.320
And when you are on the higher level

01:52:00.320 --> 01:52:02.320
ground, you're better than the previous level

01:52:02.320 --> 01:52:04.320
ground, but you're still

01:52:04.320 --> 01:52:06.320
slightly better. And you keep

01:52:06.320 --> 01:52:08.320
improving your worst case

01:52:08.320 --> 01:52:10.320
scenario.

01:52:10.320 --> 01:52:12.320
Keep improving the worst possible thing

01:52:12.320 --> 01:52:14.320
that could happen is what you should

01:52:14.320 --> 01:52:16.320
prepare for and hope

01:52:16.320 --> 01:52:18.320
you will reach the moon.

01:52:18.320 --> 01:52:20.320
That's how you overcome

01:52:20.320 --> 01:52:22.320
fear. You overcome

01:52:22.320 --> 01:52:24.320
fear by improving your worst

01:52:24.320 --> 01:52:26.320
possible situation, the

01:52:26.320 --> 01:52:28.320
evil, most bad situation.

01:52:28.320 --> 01:52:30.320
Improve it. Other

01:52:30.320 --> 01:52:32.320
things will automatically improve

01:52:32.320 --> 01:52:34.320
as a consequence.

01:52:34.320 --> 01:52:36.320
Because

01:52:36.320 --> 01:52:38.320
that's called BATNA.

01:52:38.320 --> 01:52:40.320
You can search it on Google. I will

01:52:40.320 --> 01:52:42.320
spell it for you. B

01:52:42.320 --> 01:52:44.320
A T

01:52:44.320 --> 01:52:46.320
N A

01:52:46.320 --> 01:52:48.320
BATNA. Best

01:52:48.320 --> 01:52:50.320
alternative

01:52:50.320 --> 01:52:52.320
to a negotiated agreement.

01:52:52.320 --> 01:52:54.320
It's a negotiations

01:52:54.320 --> 01:52:56.320
phrase. You can read more about it,

01:52:56.320 --> 01:52:58.320
BATNA. Always improve

01:52:58.320 --> 01:53:00.320
your BATNA.

01:53:00.320 --> 01:53:02.320
That's the worst possible situation for you.

01:53:02.320 --> 01:53:04.320
That's where the fear comes from.

01:53:04.320 --> 01:53:06.320
Fear comes from

01:53:06.320 --> 01:53:08.320
a potential disaster.

01:53:08.320 --> 01:53:10.320
And so if you

01:53:10.320 --> 01:53:12.320
elevate your ground,

01:53:12.320 --> 01:53:14.320
a little bit higher every day.

01:53:14.320 --> 01:53:16.320
Maybe every other day.

01:53:16.320 --> 01:53:18.320
However slow. But you're

01:53:18.320 --> 01:53:20.320
reducing your fear level. And when

01:53:20.320 --> 01:53:22.320
your fear reduces, you improve.

01:53:22.320 --> 01:53:24.320
And you're able to accomplish your better

01:53:24.320 --> 01:53:26.320
goal easier.

01:53:26.320 --> 01:53:28.320
That's a general way of thinking.

01:53:28.320 --> 01:53:30.320
BATNA.

01:53:30.320 --> 01:53:32.320
B A T N A.

01:53:32.320 --> 01:53:34.320
Google it.

01:53:34.320 --> 01:53:36.320
Okay.

01:53:36.320 --> 01:53:38.320
So thank you. Thank you very much.

01:53:38.320 --> 01:53:40.320
Yeah. And also I want

01:53:40.320 --> 01:53:42.320
to quickly speak to Narain

01:53:42.320 --> 01:53:44.320
Narayani. I don't know if I'm pronouncing

01:53:44.320 --> 01:53:46.320
that right. Okay.

01:53:46.320 --> 01:53:48.320
So you actually said you're into recruiting.

01:53:48.320 --> 01:53:50.320
And yeah, I just want to use this chance

01:53:50.320 --> 01:53:52.320
to actually talk about the product I'm actually

01:53:52.320 --> 01:53:54.320
building. So

01:53:54.320 --> 01:53:56.320
the whole layoff, people are currently being

01:53:56.320 --> 01:53:58.320
laid off. And people are actually also coming into

01:53:58.320 --> 01:54:00.320
tech newly. So with the

01:54:00.320 --> 01:54:02.320
use of generative AI, I am

01:54:02.320 --> 01:54:04.320
actually trying to like go to the internet on a daily

01:54:04.320 --> 01:54:06.320
basis, look for jobs, generate

01:54:06.320 --> 01:54:08.320
cover letters, CVs, and mock

01:54:08.320 --> 01:54:10.320
interviews for each job. I actually look for anybody.

01:54:10.320 --> 01:54:12.320
So that's actually what I'm doing currently.

01:54:12.320 --> 01:54:14.320
I'm building Jobanauts. So

01:54:14.320 --> 01:54:16.320
I just said I should actually share it as well.

01:54:16.320 --> 01:54:18.320
It's like a side project I'm

01:54:18.320 --> 01:54:20.320
actually building. And possibly

01:54:20.320 --> 01:54:22.320
I would build it to actually look for

01:54:22.320 --> 01:54:24.320
probably look for investors and then scale it higher.

01:54:24.320 --> 01:54:26.320
So I sent you a message. Since you

01:54:26.320 --> 01:54:28.320
actually said you're into recruiting,

01:54:28.320 --> 01:54:30.320
probably we can have a quick call and

01:54:30.320 --> 01:54:32.320
yeah, talk about how we can

01:54:32.320 --> 01:54:34.320
be of help to ourselves and also people looking for

01:54:34.320 --> 01:54:36.320
jobs. Thank you.

01:54:36.320 --> 01:54:38.320
Sure. I just responded to your DM.

01:54:38.320 --> 01:54:44.320
Thank you.

01:54:44.320 --> 01:54:46.320
So I hope this

01:54:46.320 --> 01:54:48.320
conversation will go to the end.

01:54:48.320 --> 01:54:50.320
Then Mirish should be

01:54:50.320 --> 01:54:52.320
the next speaker.

01:54:52.320 --> 01:54:54.320
Next please.

01:54:54.320 --> 01:54:56.320
Alright, alright. So

01:54:56.320 --> 01:54:58.320
this another name is also

01:54:58.320 --> 01:55:00.320
very difficult for me to pronounce. It's

01:55:00.320 --> 01:55:02.320
Yas or Hars? Johan.

01:55:02.320 --> 01:55:04.320
The surname I'm pretty sure of.

01:55:04.320 --> 01:55:06.320
Yas.

01:55:06.320 --> 01:55:08.320
Just like in Punjabi.

01:55:08.320 --> 01:55:10.320
Jasvinder Chauhan.

01:55:10.320 --> 01:55:12.320
I was also thinking of the same thing.

01:55:12.320 --> 01:55:14.320
No, actually I'm a chain.

01:55:14.320 --> 01:55:16.320
Yeah, just me.

01:55:16.320 --> 01:55:18.320
Sorry, what's your name?

01:55:18.320 --> 01:55:20.320
I had a question.

01:55:20.320 --> 01:55:22.320
So you mentioned about

01:55:22.320 --> 01:55:24.320
the skill of thinking.

01:55:26.320 --> 01:55:28.320
Am I audible?

01:55:30.320 --> 01:55:32.320
Yeah, you're audible.

01:55:32.320 --> 01:55:34.320
You mentioned about

01:55:34.320 --> 01:55:36.320
skill of thinking. So according

01:55:36.320 --> 01:55:38.320
to me, I think that the thinking

01:55:38.320 --> 01:55:40.320
is a double-edged sword.

01:55:40.320 --> 01:55:42.320
The way you think and what you think

01:55:42.320 --> 01:55:44.320
can create or destroy you.

01:55:44.320 --> 01:55:46.320
So how do you

01:55:46.320 --> 01:55:48.320
suggest to

01:55:50.320 --> 01:55:52.320
develop the skill of thinking

01:55:52.320 --> 01:55:54.320
in a correct way?

01:55:58.320 --> 01:56:00.320
So how you develop the way to

01:56:00.320 --> 01:56:02.320
think, the way the

01:56:02.320 --> 01:56:04.320
thinking skill, how do you do that?

01:56:04.320 --> 01:56:06.320
You do it by thinking about it.

01:56:06.320 --> 01:56:08.320
That was a dumb joke.

01:56:08.320 --> 01:56:10.320
I think it comes from experience.

01:56:10.320 --> 01:56:12.320
It's about

01:56:12.320 --> 01:56:14.320
the basic origin of thinking

01:56:14.320 --> 01:56:16.320
is...

01:56:16.320 --> 01:56:18.320
Oops.

01:56:18.320 --> 01:56:20.320
Ouch.

01:56:20.320 --> 01:56:22.320
Lagi. Chot lagi na.

01:56:22.320 --> 01:56:24.320
Tam akal aati hai.

01:56:24.320 --> 01:56:26.320
Kiya re, idhar nahi jaana chahi hai.

01:56:26.320 --> 01:56:28.320
Yeh bachpan se hota hai. When you're a kid,

01:56:28.320 --> 01:56:30.320
you try to approach a fireplace,

01:56:30.320 --> 01:56:32.320
you burn your hand, you

01:56:32.320 --> 01:56:34.320
learn. You think about,

01:56:34.320 --> 01:56:36.320
oh, I should not go to the fire.

01:56:36.320 --> 01:56:38.320
That's when thinking starts.

01:56:38.320 --> 01:56:40.320
It is through your

01:56:40.320 --> 01:56:42.320
senses that you detect around you

01:56:42.320 --> 01:56:44.320
and you say, oops.

01:56:44.320 --> 01:56:46.320
Yeh toh galat hai. Garam hai.

01:56:46.320 --> 01:56:48.320
Chatka lagega. Shock lagega.

01:56:48.320 --> 01:56:50.320
This happens. That happens. So it

01:56:50.320 --> 01:56:52.320
is through negative feedback that you

01:56:52.320 --> 01:56:54.320
learn and you start to think about,

01:56:54.320 --> 01:56:56.320
hey, I should not put my finger in the

01:56:56.320 --> 01:56:58.320
electricity outlet.

01:56:58.320 --> 01:57:00.320
I mean, that's an extreme case, but

01:57:00.320 --> 01:57:02.320
I've done it, by the way. Yes,

01:57:02.320 --> 01:57:04.320
as an electrical engineering student,

01:57:04.320 --> 01:57:06.320
I put my hand in

01:57:06.320 --> 01:57:08.320
the...

01:57:08.320 --> 01:57:10.320
I'm just joking. I did not do that.

01:57:10.320 --> 01:57:12.320
What I actually did is I took

01:57:12.320 --> 01:57:14.320
an ampere meter and connected straight

01:57:14.320 --> 01:57:16.320
to the mains outlet. And the whole

01:57:16.320 --> 01:57:18.320
college electricity supply

01:57:18.320 --> 01:57:20.320
was out.

01:57:20.320 --> 01:57:22.320
I did that a long time ago, 83.

01:57:22.320 --> 01:57:24.320
Yeah, because I was trying to

01:57:24.320 --> 01:57:26.320
measure the short circuit current.

01:57:26.320 --> 01:57:28.320
And I used a

01:57:28.320 --> 01:57:30.320
heavy ampere meter to measure the amperes.

01:57:30.320 --> 01:57:32.320
How much amperes can come out?

01:57:32.320 --> 01:57:34.320
Let me measure it. And I said, boom.

01:57:34.320 --> 01:57:36.320
And then the whole

01:57:36.320 --> 01:57:38.320
light went off. That was expected.

01:57:38.320 --> 01:57:40.320
But that's how you learn.

01:57:40.320 --> 01:57:42.320
People talk about infinite

01:57:42.320 --> 01:57:44.320
current. If you short circuit something,

01:57:44.320 --> 01:57:46.320
it'll produce infinite current. I

01:57:46.320 --> 01:57:48.320
want to measure it. So I did measurement.

01:57:48.320 --> 01:57:50.320
You know what I'm talking about?

01:57:50.320 --> 01:57:52.320
That's how you measure.

01:57:52.320 --> 01:57:54.320
That's how you learn. Oh, that should not

01:57:54.320 --> 01:57:56.320
be the case, because there is something that is not

01:57:56.320 --> 01:57:58.320
infinite. It's not going to be infinite.

01:57:58.320 --> 01:58:00.320
Before that, the fuse will blow off.

01:58:00.320 --> 01:58:02.320
Or trip or

01:58:02.320 --> 01:58:04.320
will trip.

01:58:08.320 --> 01:58:10.320
Does that answer your question about how to think?

01:58:10.320 --> 01:58:12.320
It is very natural.

01:58:20.320 --> 01:58:22.320
By the way, Just, what is your name?

01:58:22.320 --> 01:58:24.320
What is your full name? Just Preet or Just Vinder?

01:58:24.320 --> 01:58:26.320
I didn't get that part.

01:58:26.320 --> 01:58:28.320
It's only

01:58:28.320 --> 01:58:30.320
Just Chauhan.

01:58:30.320 --> 01:58:32.320
Thank you.

01:58:40.320 --> 01:58:42.320
Yes, yes. Go ahead. Next one, please.

01:58:42.320 --> 01:58:44.320
But all right, all right.

01:58:44.320 --> 01:58:46.320
So Nakul has been here for a while

01:58:46.320 --> 01:58:48.320
as well. Nakul, you want to go

01:58:48.320 --> 01:58:50.320
ahead?

01:58:50.320 --> 01:58:52.320
So the question

01:58:52.320 --> 01:58:54.320
is,

01:58:54.320 --> 01:58:56.320
let's say India has the most

01:58:56.320 --> 01:58:58.320
working population. They are

01:58:58.320 --> 01:59:00.320
in 20 to 30.

01:59:00.320 --> 01:59:02.320
So there are so much

01:59:02.320 --> 01:59:04.320
employees right now. Everybody

01:59:04.320 --> 01:59:06.320
wants jobs.

01:59:06.320 --> 01:59:08.320
There will be so much

01:59:08.320 --> 01:59:10.320
coming into the industry for a while.

01:59:14.320 --> 01:59:16.320
So for a person like me who is just

01:59:16.320 --> 01:59:18.320
starting and who is seeing this competition

01:59:18.320 --> 01:59:20.320
and I'm ready to work

01:59:20.320 --> 01:59:22.320
for, I

01:59:22.320 --> 01:59:24.320
know where I am, so I'm willing to work

01:59:24.320 --> 01:59:26.320
because I need to work for

01:59:26.320 --> 01:59:28.320
my situation to get better.

01:59:28.320 --> 01:59:30.320
And so will everybody

01:59:30.320 --> 01:59:32.320
think, everybody will think like

01:59:32.320 --> 01:59:34.320
this only. So what are

01:59:34.320 --> 01:59:36.320
your views? How can we

01:59:36.320 --> 01:59:38.320
be prepared for

01:59:38.320 --> 01:59:40.320
all this situation?

01:59:40.320 --> 01:59:42.320
I'll tell you. Yes,

01:59:42.320 --> 01:59:44.320
yes. It's a very good question. It's a very good

01:59:44.320 --> 01:59:46.320
question. I'll answer it the way I think.

01:59:46.320 --> 01:59:48.320
So here is how you think.

01:59:48.320 --> 01:59:50.320
You have in your family,

01:59:50.320 --> 01:59:52.320
you have two kids, for example,

01:59:52.320 --> 01:59:54.320
and the dad brings

01:59:54.320 --> 01:59:56.320
home chocolate,

01:59:56.320 --> 01:59:58.320
two chocolate

01:59:58.320 --> 02:00:00.320
bars, Cadbury's Dairy Milk,

02:00:00.320 --> 02:00:02.320
two of them. Brings it home,

02:00:02.320 --> 02:00:04.320
gives one to each child.

02:00:04.320 --> 02:00:06.320
Both children are

02:00:06.320 --> 02:00:08.320
happy to get

02:00:08.320 --> 02:00:10.320
that chocolate candy bar and they're enjoying

02:00:10.320 --> 02:00:12.320
it and awesome and they feel very good about

02:00:12.320 --> 02:00:14.320
it. Both

02:00:14.320 --> 02:00:16.320
of them, what they actually do is cut it

02:00:16.320 --> 02:00:18.320
in half and put the other half in the refrigerator,

02:00:18.320 --> 02:00:20.320
eat the half for now and they will have

02:00:20.320 --> 02:00:22.320
some tomorrow. Nice.

02:00:22.320 --> 02:00:24.320
Now what happens is

02:00:24.320 --> 02:00:26.320
this dad

02:00:26.320 --> 02:00:28.320
gets

02:00:28.320 --> 02:00:30.320
three or four hundred candy bars

02:00:30.320 --> 02:00:32.320
home next day. Four hundred

02:00:32.320 --> 02:00:34.320
Cadbury's Dairy Milk

02:00:34.320 --> 02:00:36.320
brings it home

02:00:36.320 --> 02:00:38.320
and gives

02:00:38.320 --> 02:00:40.320
two hundred to each child.

02:00:40.320 --> 02:00:42.320
What do you think the

02:00:42.320 --> 02:00:44.320
child will feel about the

02:00:44.320 --> 02:00:46.320
35th candy bar?

02:00:48.320 --> 02:00:50.320
Candy bar number 35.

02:00:50.320 --> 02:00:52.320
What do you think they will think about it?

02:00:52.320 --> 02:00:54.320
Not that

02:00:54.320 --> 02:00:56.320
impressive. Not exactly.

02:00:56.320 --> 02:00:58.320
I am bored of

02:00:58.320 --> 02:01:00.320
eating that stupid Cadbury's Dairy Milk.

02:01:00.320 --> 02:01:02.320
I already had like five of them.

02:01:02.320 --> 02:01:04.320
I don't even want anymore.

02:01:04.320 --> 02:01:06.320
So what I was talking about is demand

02:01:06.320 --> 02:01:08.320
and supply.

02:01:08.320 --> 02:01:10.320
When you have too much of supply of candy

02:01:10.320 --> 02:01:12.320
bars, the value of a candy

02:01:12.320 --> 02:01:14.320
bar to the person who is consuming it

02:01:14.320 --> 02:01:16.320
is basically

02:01:16.320 --> 02:01:18.320
diminishing rapidly.

02:01:18.320 --> 02:01:20.320
That is what is happening

02:01:20.320 --> 02:01:22.320
in India. Too many people.

02:01:22.320 --> 02:01:24.320
And

02:01:24.320 --> 02:01:26.320
too few jobs.

02:01:26.320 --> 02:01:28.320
So what do you do?

02:01:28.320 --> 02:01:30.320
You get ready for becoming the 35th

02:01:30.320 --> 02:01:32.320
candy bar.

02:01:32.320 --> 02:01:34.320
You are good. You are Dairy Milk Cadbury's.

02:01:34.320 --> 02:01:36.320
Right. It's awesome. I like it.

02:01:36.320 --> 02:01:38.320
I eat myself.

02:01:38.320 --> 02:01:40.320
And so the problem is

02:01:40.320 --> 02:01:42.320
the first candy bar, the second candy

02:01:42.320 --> 02:01:44.320
bar, good. The 35th

02:01:44.320 --> 02:01:46.320
candy bar, not so great.

02:01:46.320 --> 02:01:48.320
And that's what

02:01:48.320 --> 02:01:50.320
everybody thinks they are. The 37th

02:01:50.320 --> 02:01:52.320
candy bar, the 38th candy bar.

02:01:52.320 --> 02:01:54.320
Like how will you now survive? Nobody wants

02:01:54.320 --> 02:01:56.320
you. So what do you do?

02:01:56.320 --> 02:01:58.320
You stop

02:01:58.320 --> 02:02:00.320
chasing that stupid

02:02:00.320 --> 02:02:02.320
job. Don't do it.

02:02:02.320 --> 02:02:04.320
Don't chase it.

02:02:04.320 --> 02:02:06.320
Everybody, even in the US,

02:02:06.320 --> 02:02:08.320
thinks about getting a job

02:02:08.320 --> 02:02:10.320
because that's what they're told. They're told

02:02:10.320 --> 02:02:12.320
to get a job, grow, educate

02:02:12.320 --> 02:02:14.320
yourself, get a job.

02:02:14.320 --> 02:02:16.320
Go get a job.

02:02:16.320 --> 02:02:18.320
Don't just sit around. That's a fair

02:02:18.320 --> 02:02:20.320
thing. A fair assessment. Parents tell you

02:02:20.320 --> 02:02:22.320
all the time.

02:02:22.320 --> 02:02:24.320
But the origins of this job

02:02:24.320 --> 02:02:26.320
thing, or get a job, go get

02:02:26.320 --> 02:02:28.320
a job, work for a company in

02:02:28.320 --> 02:02:30.320
Fang Company, Mamta

02:02:30.320 --> 02:02:32.320
Company. Mamta stands for Microsoft

02:02:32.320 --> 02:02:34.320
Apple, Meta,

02:02:34.320 --> 02:02:36.320
Amazon,

02:02:36.320 --> 02:02:38.320
some tea company, I don't know what,

02:02:38.320 --> 02:02:40.320
and another

02:02:40.320 --> 02:02:42.320
A company. So there is some acronym. People

02:02:42.320 --> 02:02:44.320
have made up Fang Acronym and Mamta

02:02:44.320 --> 02:02:46.320
Acronym. God knows what.

02:02:46.320 --> 02:02:48.320
The point is that

02:02:48.320 --> 02:02:50.320
this thinking about going to work for an

02:02:50.320 --> 02:02:52.320
employer

02:02:52.320 --> 02:02:54.320
is an old way of thinking.

02:02:54.320 --> 02:02:56.320
Cut it out.

02:02:56.320 --> 02:02:58.320
See, the universities were established in

02:02:58.320 --> 02:03:00.320
1800s and 1900s

02:03:00.320 --> 02:03:02.320
to train people so that they can

02:03:02.320 --> 02:03:04.320
become good employees.

02:03:04.320 --> 02:03:06.320
So

02:03:06.320 --> 02:03:08.320
essentially that's the reason why we

02:03:08.320 --> 02:03:10.320
have universities, the modern

02:03:10.320 --> 02:03:12.320
university system and the grade

02:03:12.320 --> 02:03:14.320
12 schooling system and then

02:03:14.320 --> 02:03:16.320
four-year degree courses and all that

02:03:16.320 --> 02:03:18.320
are meant to produce good,

02:03:18.320 --> 02:03:20.320
obedient,

02:03:20.320 --> 02:03:22.320
hardworking employees

02:03:22.320 --> 02:03:24.320
who will keep working

02:03:24.320 --> 02:03:26.320
all their life.

02:03:26.320 --> 02:03:28.320
You don't want to get

02:03:28.320 --> 02:03:30.320
in that trap. You want to

02:03:30.320 --> 02:03:32.320
actually disassociate from that

02:03:32.320 --> 02:03:34.320
game altogether because you are

02:03:34.320 --> 02:03:36.320
likely to become the 35th

02:03:36.320 --> 02:03:38.320
candy bar.

02:03:38.320 --> 02:03:40.320
The fact of life.

02:03:40.320 --> 02:03:42.320
There are just too many of us

02:03:42.320 --> 02:03:44.320
in India and in China.

02:03:44.320 --> 02:03:46.320
Same thing. No difference.

02:03:46.320 --> 02:03:48.320
Just too many of us.

02:03:48.320 --> 02:03:50.320
Too few jobs.

02:03:50.320 --> 02:03:52.320
So don't go in that direction.

02:03:52.320 --> 02:03:54.320
Find something different. And how

02:03:54.320 --> 02:03:56.320
do you think about finding something different?

02:03:56.320 --> 02:03:58.320
The simplest way to think about

02:03:58.320 --> 02:04:00.320
it, I think I already mentioned. I'm going to mention

02:04:00.320 --> 02:04:02.320
it the third time.

02:04:02.320 --> 02:04:04.320
Find a way to make

02:04:04.320 --> 02:04:06.320
somebody else successful.

02:04:06.320 --> 02:04:08.320
That's it.

02:04:08.320 --> 02:04:10.320
Whatever it may be.

02:04:10.320 --> 02:04:12.320
Whatever it may be. Doesn't even matter what

02:04:12.320 --> 02:04:14.320
you're doing. It has nothing to do

02:04:14.320 --> 02:04:16.320
with technology or any other

02:04:16.320 --> 02:04:18.320
skill set. It is to identify

02:04:18.320 --> 02:04:20.320
how to make other people successful.

02:04:20.320 --> 02:04:22.320
Whatever it is.

02:04:22.320 --> 02:04:24.320
Drive a car, drive a taxi, make tea,

02:04:24.320 --> 02:04:26.320
open a paan shop.

02:04:26.320 --> 02:04:28.320
It doesn't matter.

02:04:28.320 --> 02:04:30.320
There are people from IITs, I know I

02:04:30.320 --> 02:04:32.320
just heard from somebody.

02:04:32.320 --> 02:04:34.320
There is a thing called IIT

02:04:34.320 --> 02:04:36.320
Pani Puri Wali

02:04:36.320 --> 02:04:38.320
in Delhi. There is a thing

02:04:38.320 --> 02:04:40.320
called IIT graduate from New Delhi

02:04:40.320 --> 02:04:42.320
and she is selling

02:04:42.320 --> 02:04:44.320
salwar kameez in

02:04:44.320 --> 02:04:46.320
Karnat place for several years

02:04:46.320 --> 02:04:48.320
now. There is absolutely

02:04:48.320 --> 02:04:50.320
nothing wrong with that. In fact,

02:04:50.320 --> 02:04:52.320
it's a great idea.

02:04:52.320 --> 02:04:54.320
If you are able to

02:04:54.320 --> 02:04:56.320
make people happy about the salwar they wear

02:04:56.320 --> 02:04:58.320
and the clothing that they wear,

02:04:58.320 --> 02:05:00.320
and you are able to produce them and give it to them

02:05:00.320 --> 02:05:02.320
every single time they want something new and bring out

02:05:02.320 --> 02:05:04.320
new innovative products and provide it to them

02:05:04.320 --> 02:05:06.320
to make the people who are buying your

02:05:06.320 --> 02:05:08.320
products, your clothing,

02:05:08.320 --> 02:05:10.320
it is the exact thing you should be

02:05:10.320 --> 02:05:12.320
doing.

02:05:12.320 --> 02:05:14.320
And so that is how you should think

02:05:14.320 --> 02:05:16.320
about chasing a job and

02:05:16.320 --> 02:05:18.320
chasing everybody doing JavaScript

02:05:18.320 --> 02:05:20.320
is not going to work.

02:05:20.320 --> 02:05:22.320
And I tell the same thing

02:05:22.320 --> 02:05:24.320
to my employees. They are not actually employees

02:05:24.320 --> 02:05:26.320
because I don't have any.

02:05:26.320 --> 02:05:28.320
What I have is transient workers

02:05:28.320 --> 02:05:30.320
who are what I call remote workers.

02:05:30.320 --> 02:05:32.320
They work whenever I need something, I will assign

02:05:32.320 --> 02:05:34.320
the task, they will do the task, I pay them money.

02:05:34.320 --> 02:05:36.320
And then I find a new

02:05:36.320 --> 02:05:38.320
task and they do the task and they do it for

02:05:38.320 --> 02:05:40.320
me and I give them money. And I had been

02:05:40.320 --> 02:05:42.320
doing this for many, many years.

02:05:42.320 --> 02:05:44.320
Close to 14 now.

02:05:44.320 --> 02:05:46.320
More than 14 actually.

02:05:46.320 --> 02:05:48.320
So it is not a full-time

02:05:48.320 --> 02:05:50.320
employee that I have, but I do have work.

02:05:50.320 --> 02:05:52.320
And I do that work that I want

02:05:52.320 --> 02:05:54.320
to give it to the people that I work,

02:05:54.320 --> 02:05:56.320
that work for me or the

02:05:56.320 --> 02:05:58.320
task that I don't want to do.

02:05:58.320 --> 02:06:00.320
I outsource them.

02:06:00.320 --> 02:06:02.320
So the

02:06:02.320 --> 02:06:04.320
thing that you should do

02:06:04.320 --> 02:06:06.320
and the thing that you should outsource

02:06:06.320 --> 02:06:08.320
comes from

02:06:08.320 --> 02:06:10.320
what Prahalad calls

02:06:10.320 --> 02:06:12.320
core competence.

02:06:12.320 --> 02:06:14.320
What is core competence?

02:06:14.320 --> 02:06:16.320
It is something that you

02:06:16.320 --> 02:06:18.320
really know how to do better than anybody

02:06:18.320 --> 02:06:20.320
else on the planet.

02:06:20.320 --> 02:06:22.320
So what is my core competence?

02:06:22.320 --> 02:06:24.320
My core competence is talking.

02:06:24.320 --> 02:06:26.320
I talk.

02:06:26.320 --> 02:06:28.320
So other people understand.

02:06:28.320 --> 02:06:30.320
I talk

02:06:30.320 --> 02:06:32.320
technology. So even a

02:06:32.320 --> 02:06:34.320
five-year-old can understand Linux.

02:06:36.320 --> 02:06:38.320
That's what I do.

02:06:38.320 --> 02:06:40.320
And that...

02:06:40.320 --> 02:06:42.320
I am not finished.

02:06:42.320 --> 02:06:44.320
Stand by.

02:06:44.320 --> 02:06:46.320
Stand by.

02:06:46.320 --> 02:06:48.320
I will tell you the core

02:06:48.320 --> 02:06:50.320
competence idea very clearly

02:06:50.320 --> 02:06:52.320
because I learned it from Prahalad.

02:06:52.320 --> 02:06:54.320
So if you

02:06:54.320 --> 02:06:56.320
imagine that you are a surgeon,

02:06:56.320 --> 02:06:58.320
like a heart surgeon who will do

02:06:58.320 --> 02:07:00.320
brain operation, heart operation, like really

02:07:00.320 --> 02:07:02.320
specialized surgeon, and you

02:07:02.320 --> 02:07:04.320
are in your home and it is nice

02:07:04.320 --> 02:07:06.320
and sunny outside

02:07:06.320 --> 02:07:08.320
and you have a backyard with grass

02:07:08.320 --> 02:07:10.320
and lots of tall grasses growing

02:07:10.320 --> 02:07:12.320
and you want that to be cut.

02:07:12.320 --> 02:07:14.320
In your next-door neighbor,

02:07:14.320 --> 02:07:16.320
there is a

02:07:16.320 --> 02:07:18.320
21-year-old handsome man

02:07:18.320 --> 02:07:20.320
who lives and

02:07:20.320 --> 02:07:22.320
he has a lawnmower and he is

02:07:22.320 --> 02:07:24.320
physically fit.

02:07:24.320 --> 02:07:26.320
And so what should you

02:07:26.320 --> 02:07:28.320
be doing if you want your lawn to be mowed?

02:07:28.320 --> 02:07:30.320
Should you mow the lawn

02:07:30.320 --> 02:07:32.320
yourself?

02:07:32.320 --> 02:07:34.320
Or should you pay the neighbor $20

02:07:34.320 --> 02:07:36.320
and have that person come into

02:07:36.320 --> 02:07:38.320
your home and cut the lawn for you?

02:07:38.320 --> 02:07:40.320
What's the right answer?

02:07:40.320 --> 02:07:42.320
I'll tell you more.

02:07:42.320 --> 02:07:44.320
It is a Saturday afternoon.

02:07:44.320 --> 02:07:46.320
It is nice and sunny.

02:07:46.320 --> 02:07:48.320
You are home

02:07:48.320 --> 02:07:50.320
drinking chai.

02:07:50.320 --> 02:07:52.320
You have nothing else to do.

02:07:52.320 --> 02:07:54.320
And

02:07:54.320 --> 02:07:56.320
you see the grass and your

02:07:56.320 --> 02:07:58.320
wife is complaining,

02:07:58.320 --> 02:08:00.320
so what should you do?

02:08:00.320 --> 02:08:02.320
Like invite the neighbor,

02:08:02.320 --> 02:08:04.320
give him $20 and have him cut

02:08:04.320 --> 02:08:06.320
or you should cut it yourself.

02:08:06.320 --> 02:08:08.320
That's one scenario.

02:08:08.320 --> 02:08:10.320
The other scenario

02:08:10.320 --> 02:08:12.320
is it is Monday morning.

02:08:12.320 --> 02:08:14.320
That's it.

02:08:14.320 --> 02:08:16.320
That's the only difference.

02:08:16.320 --> 02:08:18.320
So Monday morning you are supposed to be going to surgery

02:08:18.320 --> 02:08:20.320
and on Saturday

02:08:20.320 --> 02:08:22.320
afternoon you are sitting home

02:08:22.320 --> 02:08:24.320
and doing nothing.

02:08:24.320 --> 02:08:26.320
The grass is grown and you want to cut it.

02:08:26.320 --> 02:08:28.320
There is a neighbor available.

02:08:28.320 --> 02:08:30.320
What's the right answer?

02:08:30.320 --> 02:08:32.320
What would you do on Saturday?

02:08:32.320 --> 02:08:34.320
What would you do on Monday?

02:08:34.320 --> 02:08:36.320
And why?

02:08:36.320 --> 02:08:38.320
On Saturday

02:08:38.320 --> 02:08:40.320
I will cut myself

02:08:40.320 --> 02:08:42.320
and on Monday I am doing something important

02:08:42.320 --> 02:08:44.320
so I will delegate it.

02:08:44.320 --> 02:08:46.320
Why would you cut it yourself?

02:08:46.320 --> 02:08:48.320
You are a surgeon, you make $500,000

02:08:48.320 --> 02:08:50.320
a year

02:08:50.320 --> 02:08:52.320
and you want to cut grass?

02:08:52.320 --> 02:08:54.320
Is that what you should be doing?

02:08:54.320 --> 02:08:56.320
Is that your core competence?

02:08:56.320 --> 02:08:58.320
No.

02:08:58.320 --> 02:09:00.320
Yeah.

02:09:00.320 --> 02:09:02.320
What?

02:09:02.320 --> 02:09:04.320
Is it your core competence to cut grass?

02:09:04.320 --> 02:09:06.320
No, no.

02:09:06.320 --> 02:09:08.320
But should you cut the grass on a Saturday?

02:09:08.320 --> 02:09:10.320
Yeah.

02:09:10.320 --> 02:09:12.320
Yes, you should.

02:09:12.320 --> 02:09:14.320
Why?

02:09:14.320 --> 02:09:16.320
Because the opportunity cost of your time

02:09:16.320 --> 02:09:18.320
you are doing nothing

02:09:18.320 --> 02:09:20.320
and you will save $20 by not giving it to the other guy

02:09:20.320 --> 02:09:22.320
you are physically capable, you can cut the lawn yourself.

02:09:22.320 --> 02:09:24.320
On a Monday

02:09:24.320 --> 02:09:26.320
you should be outsourcing.

02:09:26.320 --> 02:09:28.320
You should be

02:09:28.320 --> 02:09:30.320
focusing on the surgery operation

02:09:30.320 --> 02:09:32.320
that you are supposed to be doing at the hospital

02:09:32.320 --> 02:09:34.320
and not cutting grass.

02:09:34.320 --> 02:09:36.320
Outsource it on a Monday

02:09:36.320 --> 02:09:38.320
do it yourself on a Saturday, Sunday.

02:09:38.320 --> 02:09:40.320
So that's how you

02:09:40.320 --> 02:09:42.320
operate, that's how you think about

02:09:42.320 --> 02:09:44.320
assigning tasks to other people.

02:09:44.320 --> 02:09:46.320
So what I am telling you in terms of

02:09:46.320 --> 02:09:48.320
assigning things that you do versus

02:09:48.320 --> 02:09:50.320
assigning things that other people do for you

02:09:50.320 --> 02:09:52.320
you can do that in India.

02:09:52.320 --> 02:09:54.320
In fact there are

02:09:54.320 --> 02:09:56.320
people in India I know that outsource

02:09:56.320 --> 02:09:58.320
it to even poorer countries.

02:09:58.320 --> 02:10:00.320
I am not joking.

02:10:00.320 --> 02:10:02.320
There are things like that happen even

02:10:02.320 --> 02:10:04.320
in India where India outsources to

02:10:04.320 --> 02:10:06.320
Vietnam. I have seen it.

02:10:06.320 --> 02:10:08.320
The point

02:10:08.320 --> 02:10:10.320
I am trying to communicate to you

02:10:10.320 --> 02:10:12.320
is to find a thing that

02:10:12.320 --> 02:10:14.320
somebody will get happy about.

02:10:14.320 --> 02:10:16.320
Somebody else.

02:10:16.320 --> 02:10:18.320
Your customer. Find

02:10:18.320 --> 02:10:20.320
that one customer. I am not even talking about

02:10:20.320 --> 02:10:22.320
a customer market segment and all that

02:10:22.320 --> 02:10:24.320
big thing like people talk about.

02:10:24.320 --> 02:10:26.320
Make a market analysis and what is your target audience.

02:10:26.320 --> 02:10:28.320
All that bullshit. No. Just one.

02:10:28.320 --> 02:10:30.320
One person you make them

02:10:30.320 --> 02:10:32.320
successful and that begins

02:10:32.320 --> 02:10:34.320
the story

02:10:34.320 --> 02:10:36.320
of them telling the other people.

02:10:36.320 --> 02:10:38.320
And they will bring new customers.

02:10:38.320 --> 02:10:40.320
And then you find out what you are supposed to

02:10:40.320 --> 02:10:42.320
be doing, what you should be doing, what you are good

02:10:42.320 --> 02:10:44.320
at and what you don't like. You outsource

02:10:44.320 --> 02:10:46.320
some of it slowly over time.

02:10:46.320 --> 02:10:48.320
Don't rush into outsourcing.

02:10:48.320 --> 02:10:50.320
But do what you like and sometimes you have to

02:10:50.320 --> 02:10:52.320
do things that you don't like because what the goal

02:10:52.320 --> 02:10:54.320
is to make them successful. That one person.

02:10:54.320 --> 02:10:56.320
That's what

02:10:56.320 --> 02:10:58.320
you should be focusing on if you are finding

02:10:58.320 --> 02:11:00.320
that you are not landing jobs

02:11:00.320 --> 02:11:02.320
after jobs after jobs after

02:11:02.320 --> 02:11:04.320
tons of interviews and still don't get a job.

02:11:04.320 --> 02:11:06.320
Maybe you should go on Upwork

02:11:06.320 --> 02:11:08.320
or other places

02:11:08.320 --> 02:11:10.320
where you can find a task.

02:11:10.320 --> 02:11:12.320
Take the task. Do it. Get paid.

02:11:12.320 --> 02:11:14.320
Repeat. Take the task.

02:11:14.320 --> 02:11:16.320
Get paid. Take the task. Do it.

02:11:16.320 --> 02:11:18.320
Get paid. All the time people do that.

02:11:18.320 --> 02:11:20.320
There are people who make

02:11:20.320 --> 02:11:22.320
5 million dollars on Upwork.

02:11:22.320 --> 02:11:24.320
I know some of them.

02:11:24.320 --> 02:11:26.320
They work

02:11:26.320 --> 02:11:28.320
for other people.

02:11:28.320 --> 02:11:30.320
On Upwork.com

02:11:30.320 --> 02:11:32.320
I don't know if you hear that but

02:11:32.320 --> 02:11:34.320
if you know

02:11:34.320 --> 02:11:36.320
the word Upwork or not I don't know.

02:11:36.320 --> 02:11:38.320
Maybe it is not.

02:11:38.320 --> 02:11:40.320
There is nothing wrong with

02:11:40.320 --> 02:11:42.320
Upwork. It's heavy competition there by the way

02:11:42.320 --> 02:11:44.320
so you have to really identify what you can do

02:11:44.320 --> 02:11:46.320
and you begin small and you will grow.

02:11:46.320 --> 02:11:48.320
It's a slow and painful process.

02:11:50.320 --> 02:11:52.320
But better than knocking your head

02:11:52.320 --> 02:11:54.320
around hundreds of hundreds of companies and not getting

02:11:54.320 --> 02:11:56.320
anything you want.

02:11:56.320 --> 02:11:58.320
Even if you get a job you still have to go

02:11:58.320 --> 02:12:00.320
8 hours every day

02:12:00.320 --> 02:12:02.320
and slog and drive in

02:12:02.320 --> 02:12:04.320
traffic for 5 hours in

02:12:04.320 --> 02:12:06.320
Bangalore I hear. It's heavy

02:12:06.320 --> 02:12:08.320
these days apparently.

02:12:08.320 --> 02:12:10.320
You have to drive 3 hours in one

02:12:10.320 --> 02:12:12.320
direction and come another 3 hours

02:12:12.320 --> 02:12:14.320
in another direction. Ouch.

02:12:16.320 --> 02:12:18.320
Whereas in case of Upwork

02:12:18.320 --> 02:12:20.320
you work from home.

02:12:20.320 --> 02:12:22.320
That's a remote work right there.

02:12:22.320 --> 02:12:24.320
You don't have to go anywhere like I do.

02:12:24.320 --> 02:12:26.320
I don't go anywhere. I sit home.

02:12:26.320 --> 02:12:28.320
Like right here. That is my office.

02:12:28.320 --> 02:12:30.320
Yes.

02:12:30.320 --> 02:12:32.320
I don't go out anywhere at all

02:12:32.320 --> 02:12:34.320
unless I want to.

02:12:34.320 --> 02:12:36.320
I haven't

02:12:36.320 --> 02:12:38.320
worn a proper pant

02:12:38.320 --> 02:12:40.320
suit for 14 years.

02:12:40.320 --> 02:12:42.320
I am still right now even in right now

02:12:42.320 --> 02:12:44.320
I am in a pajama.

02:12:44.320 --> 02:12:46.320
I run my formal sessions in a pajama

02:12:46.320 --> 02:12:48.320
because nobody sees the pajama.

02:12:48.320 --> 02:12:50.320
They see only my face on the camera.

02:12:50.320 --> 02:12:52.320
They have seen me.

02:12:56.320 --> 02:12:58.320
I hope that answers your question.

02:12:58.320 --> 02:13:00.320
We'll go with the next one.

02:13:00.320 --> 02:13:02.320
One more.

02:13:02.320 --> 02:13:04.320
Just a little add on.

02:13:04.320 --> 02:13:06.320
Does this

02:13:06.320 --> 02:13:08.320
integration

02:13:08.320 --> 02:13:10.320
fits well or not? Tell me that

02:13:10.320 --> 02:13:12.320
in this age, means in this scenario

02:13:12.320 --> 02:13:14.320
it will be hard

02:13:14.320 --> 02:13:16.320
to make money or not?

02:13:16.320 --> 02:13:18.320
I missed.

02:13:18.320 --> 02:13:20.320
I'm so sorry.

02:13:20.320 --> 02:13:22.320
Missed. Please speak again.

02:13:22.320 --> 02:13:24.320
The scenario where India

02:13:24.320 --> 02:13:26.320
is in.

02:13:26.320 --> 02:13:28.320
Is it will be

02:13:28.320 --> 02:13:30.320
making money will be hard?

02:13:30.320 --> 02:13:32.320
So making money is hard

02:13:32.320 --> 02:13:34.320
not just in India but everywhere.

02:13:34.320 --> 02:13:36.320
Everywhere it is a challenge.

02:13:36.320 --> 02:13:38.320
It is a struggle for even people in this

02:13:38.320 --> 02:13:40.320
country.

02:13:40.320 --> 02:13:42.320
So sorry. Say again.

02:13:42.320 --> 02:13:44.320
Nothing for

02:13:44.320 --> 02:13:46.320
me.

02:13:46.320 --> 02:13:48.320
Because we are

02:13:48.320 --> 02:13:50.320
the most working population

02:13:50.320 --> 02:13:52.320
it doesn't matter

02:13:52.320 --> 02:13:54.320
for making money.

02:13:56.320 --> 02:13:58.320
No, I didn't understand.

02:13:58.320 --> 02:14:00.320
I didn't understand.

02:14:00.320 --> 02:14:02.320
Now there are

02:14:02.320 --> 02:14:04.320
many working populations

02:14:04.320 --> 02:14:06.320
so is it

02:14:06.320 --> 02:14:08.320
easy to make money

02:14:08.320 --> 02:14:10.320
or is it hard?

02:14:10.320 --> 02:14:12.320
It is very difficult.

02:14:12.320 --> 02:14:14.320
Whether the population is less or more

02:14:14.320 --> 02:14:16.320
making money is very difficult because

02:14:16.320 --> 02:14:18.320
it shouldn't be our goal.

02:14:18.320 --> 02:14:20.320
I told you. Making money is not

02:14:20.320 --> 02:14:22.320
the goal. It is not a goal

02:14:22.320 --> 02:14:24.320
at all. It's a by-product.

02:14:24.320 --> 02:14:26.320
Your goal has to be clear.

02:14:26.320 --> 02:14:28.320
It's to help other people succeed.

02:14:28.320 --> 02:14:30.320
That's

02:14:30.320 --> 02:14:32.320
the end of story.

02:14:34.320 --> 02:14:36.320
Money is a by-product. It will come.

02:14:36.320 --> 02:14:42.320
It will come slowly but definitely.

02:14:46.320 --> 02:14:48.320
Thank you, Nilesh.

02:14:48.320 --> 02:14:50.320
Thanks, Nikul

02:14:50.320 --> 02:14:52.320
for having your time being with us.

02:14:52.320 --> 02:14:54.320
Do you like that idea, Nilesh?

02:14:54.320 --> 02:14:56.320
By the way

02:14:56.320 --> 02:14:58.320
I also rephrased one of your lines.

02:14:58.320 --> 02:15:00.320
You only need to be right

02:15:00.320 --> 02:15:02.320
once.

02:15:02.320 --> 02:15:04.320
You can just expand and try

02:15:04.320 --> 02:15:06.320
everything and you need to be right once.

02:15:06.320 --> 02:15:08.320
Fail hundreds

02:15:08.320 --> 02:15:10.320
of times. Hundreds of thousands of times

02:15:10.320 --> 02:15:12.320
you fail. That's

02:15:12.320 --> 02:15:14.320
what leads to success.

02:15:14.320 --> 02:15:16.320
Eventually. You have to fail.

02:15:16.320 --> 02:15:18.320
You have to be happy with failures.

02:15:18.320 --> 02:15:20.320
I failed. You may have

02:15:20.320 --> 02:15:22.320
seen when I run live sessions every week

02:15:22.320 --> 02:15:24.320
I fail in a live session

02:15:24.320 --> 02:15:26.320
even today. Yesterday there was one.

02:15:26.320 --> 02:15:28.320
I failed. It's okay.

02:15:28.320 --> 02:15:30.320
Everybody does. What's the problem?

02:15:30.320 --> 02:15:32.320
I don't even polish

02:15:32.320 --> 02:15:34.320
my talk, my presentations.

02:15:34.320 --> 02:15:36.320
I don't use PowerPoint when I talk.

02:15:36.320 --> 02:15:38.320
It's all live

02:15:38.320 --> 02:15:40.320
and all real. And I fail

02:15:40.320 --> 02:15:42.320
all the time. And I cheat

02:15:42.320 --> 02:15:44.320
left and right by doing Google searches,

02:15:44.320 --> 02:15:46.320
chat, GPT, this, that, copy paste.

02:15:46.320 --> 02:15:48.320
Everything is okay. That's how

02:15:48.320 --> 02:15:50.320
real life is.

02:15:50.320 --> 02:15:52.320
That's how you code by copy pasting

02:15:52.320 --> 02:15:54.320
from Stack Overflow. Don't you?

02:15:54.320 --> 02:15:56.320
Everybody does that.

02:15:56.320 --> 02:15:58.320
I also do the same thing. People

02:15:58.320 --> 02:16:04.320
don't admit. I openly say it.

02:16:04.320 --> 02:16:06.320
I mean, that's how you learn.

02:16:06.320 --> 02:16:08.320
And that's how you get your job as well.

02:16:08.320 --> 02:16:12.320
Yeah.

02:16:12.320 --> 02:16:14.320
Yeah. Also, one more thing.

02:16:14.320 --> 02:16:16.320
There are a few speakers that have been here

02:16:16.320 --> 02:16:18.320
around for a while. But they haven't

02:16:18.320 --> 02:16:20.320
raised their hand or spoken anything

02:16:20.320 --> 02:16:22.320
else. So Pratish,

02:16:22.320 --> 02:16:24.320
you want to

02:16:24.320 --> 02:16:26.320
ask? Because you've been a speaker

02:16:26.320 --> 02:16:28.320
and you haven't said anything.

02:16:28.320 --> 02:16:30.320
You want to ask something?

02:16:30.320 --> 02:16:32.320
Yeah.

02:16:32.320 --> 02:16:34.320
First of all, hi, Nilesh.

02:16:34.320 --> 02:16:36.320
Yeah.

02:16:36.320 --> 02:16:38.320
And

02:16:38.320 --> 02:16:40.320
thanks a lot for this amazing

02:16:40.320 --> 02:16:42.320
session.

02:16:42.320 --> 02:16:44.320
Okay.

02:16:44.320 --> 02:16:46.320
So I think most of the questions are done.

02:16:46.320 --> 02:16:48.320
But I think I'll just take the opportunity to

02:16:48.320 --> 02:16:50.320
ask my personal questions.

02:16:50.320 --> 02:16:52.320
So Nilesh, you remember that you

02:16:52.320 --> 02:16:54.320
pinged me your YouTube video and

02:16:54.320 --> 02:16:56.320
we discussed on that.

02:16:56.320 --> 02:16:58.320
I think I still have that tweet with

02:16:58.320 --> 02:17:00.320
me.

02:17:00.320 --> 02:17:02.320
So to give some context,

02:17:02.320 --> 02:17:04.320
the video was regarding some investment

02:17:04.320 --> 02:17:06.320
planning. So I have two questions

02:17:06.320 --> 02:17:08.320
on it. First is

02:17:08.320 --> 02:17:10.320
the

02:17:10.320 --> 02:17:12.320
ensemble

02:17:12.320 --> 02:17:14.320
So you listen for everybody. You need

02:17:14.320 --> 02:17:16.320
to explain the background a little bit before

02:17:16.320 --> 02:17:18.320
you ask your question.

02:17:18.320 --> 02:17:20.320
So I think

02:17:20.320 --> 02:17:22.320
I'll just pin the tweet there.

02:17:22.320 --> 02:17:24.320
Give me some one minute or so.

02:17:24.320 --> 02:17:26.320
Go ahead.

02:17:26.320 --> 02:17:28.320
Provide everybody the background and then ask your questions

02:17:28.320 --> 02:17:30.320
so others will understand. Otherwise, we'll talk about

02:17:30.320 --> 02:17:32.320
nerdiness and nobody understand anything.

02:17:32.320 --> 02:17:34.320
I don't want that to happen.

02:17:36.320 --> 02:17:38.320
So take your time.

02:17:38.320 --> 02:17:40.320
No rush.

02:17:40.320 --> 02:17:42.320
In the meanwhile, other people are open.

02:17:42.320 --> 02:17:44.320
You can ask away.

02:17:44.320 --> 02:17:46.320
Just talk whatever you feel like.

02:17:46.320 --> 02:17:48.320
Or don't.

02:17:48.320 --> 02:17:50.320
It's up to you.

02:17:50.320 --> 02:17:52.320
Don't say, can I ask? Just ask.

02:17:52.320 --> 02:17:54.320
So until

02:17:54.320 --> 02:17:56.320
your age means

02:17:56.320 --> 02:17:58.320
until like

02:17:58.320 --> 02:18:00.320
before my birth, everybody's dream was

02:18:00.320 --> 02:18:02.320
to be an artist.

02:18:02.320 --> 02:18:04.320
So I think

02:18:04.320 --> 02:18:06.320
I'll just take the opportunity

02:18:06.320 --> 02:18:08.320
to ask my personal questions.

02:18:08.320 --> 02:18:10.320
Before my birth, everybody's dream was

02:18:10.320 --> 02:18:12.320
to serve something to US.

02:18:12.320 --> 02:18:14.320
Like making in

02:18:14.320 --> 02:18:16.320
dollars and you will get

02:18:16.320 --> 02:18:18.320
rich was the main

02:18:18.320 --> 02:18:20.320
thing. So do you think hence

02:18:20.320 --> 02:18:22.320
forth also the same thing will happen

02:18:22.320 --> 02:18:24.320
or it will change?

02:18:24.320 --> 02:18:26.320
Chasing US

02:18:26.320 --> 02:18:28.320
for people from India and

02:18:28.320 --> 02:18:30.320
China is a very

02:18:30.320 --> 02:18:32.320
very hard thing

02:18:32.320 --> 02:18:34.320
practically because of visa.

02:18:34.320 --> 02:18:36.320
Really hard.

02:18:36.320 --> 02:18:38.320
Like really, really painfully hard.

02:18:38.320 --> 02:18:40.320
I just want you to know that.

02:18:40.320 --> 02:18:42.320
Don't chase

02:18:42.320 --> 02:18:44.320
hard things for no good reason.

02:18:44.320 --> 02:18:46.320
You know it is difficult

02:18:46.320 --> 02:18:48.320
to get a visa even if you get a job.

02:18:48.320 --> 02:18:50.320
It will take a long time just to process it.

02:18:50.320 --> 02:18:52.320
That's one thing.

02:18:52.320 --> 02:18:54.320
The second thing is there are other

02:18:54.320 --> 02:18:56.320
countries right next door, Canada.

02:18:56.320 --> 02:18:58.320
People are easily accepted

02:18:58.320 --> 02:19:00.320
in there. You can go and work there. It's good enough.

02:19:00.320 --> 02:19:02.320
Pretty darn good. Canada is

02:19:02.320 --> 02:19:04.320
beautiful.

02:19:04.320 --> 02:19:06.320
It doesn't hurt. Not in terms of

02:19:06.320 --> 02:19:08.320
being there but in terms of

02:19:08.320 --> 02:19:10.320
giving services.

02:19:10.320 --> 02:19:12.320
We have the most population so we will serve.

02:19:12.320 --> 02:19:14.320
If you want to serve, you can serve sitting

02:19:14.320 --> 02:19:16.320
in India. You can serve anybody.

02:19:16.320 --> 02:19:18.320
The internet is available. You can talk to anybody

02:19:18.320 --> 02:19:20.320
anywhere on the planet.

02:19:20.320 --> 02:19:22.320
And do whatever you

02:19:22.320 --> 02:19:24.320
want using all the tools and

02:19:24.320 --> 02:19:26.320
techniques available to you at your disposal.

02:19:26.320 --> 02:19:28.320
All the AI tools these days and

02:19:28.320 --> 02:19:30.320
the high bandwidth internet.

02:19:30.320 --> 02:19:32.320
You have computers available to you.

02:19:32.320 --> 02:19:34.320
You can do whatever you want without leaving

02:19:34.320 --> 02:19:36.320
your parents home. Just stay with

02:19:36.320 --> 02:19:38.320
your parents and work.

02:19:38.320 --> 02:19:40.320
You don't have to

02:19:40.320 --> 02:19:42.320
go anywhere. That's the point.

02:19:42.320 --> 02:19:44.320
You can still earn in dollars

02:19:44.320 --> 02:19:46.320
sitting right in India with your parents

02:19:46.320 --> 02:19:48.320
home.

02:19:48.320 --> 02:19:50.320
There are

02:19:50.320 --> 02:19:52.320
people I know. One of my

02:19:52.320 --> 02:19:54.320
best developers lives in Bhoj.

02:19:54.320 --> 02:19:56.320
You know Bhoj is like a rural place

02:19:56.320 --> 02:19:58.320
in Gujarat.

02:19:58.320 --> 02:20:00.320
Really,

02:20:00.320 --> 02:20:02.320
I've never been there but I know how

02:20:02.320 --> 02:20:04.320
backward that place is.

02:20:04.320 --> 02:20:06.320
It has internet connection, decent

02:20:06.320 --> 02:20:08.320
enough and he works from there.

02:20:08.320 --> 02:20:10.320
He lives there.

02:20:10.320 --> 02:20:12.320
Over the years he has hired people

02:20:12.320 --> 02:20:14.320
for himself to work for me.

02:20:14.320 --> 02:20:16.320
So he has a team now

02:20:16.320 --> 02:20:18.320
helping me and he lives in Bhoj.

02:20:18.320 --> 02:20:20.320
His team lives in Surat.

02:20:20.320 --> 02:20:22.320
In a big city.

02:20:22.320 --> 02:20:24.320
Bhoj is a small town.

02:20:24.320 --> 02:20:26.320
And he lives with his parents.

02:20:26.320 --> 02:20:28.320
He got married recently.

02:20:28.320 --> 02:20:30.320
He's a beautiful, awesome, brilliant

02:20:30.320 --> 02:20:32.320
developer and he doesn't care

02:20:32.320 --> 02:20:34.320
to go anywhere.

02:20:34.320 --> 02:20:36.320
He works from home.

02:20:36.320 --> 02:20:38.320
And he works on Upwork

02:20:38.320 --> 02:20:40.320
for me for 14 years.

02:20:42.320 --> 02:20:44.320
And he

02:20:44.320 --> 02:20:46.320
not only works for me, he now has a team

02:20:46.320 --> 02:20:48.320
working for me through him.

02:20:48.320 --> 02:20:50.320
He formed a big team of people.

02:20:54.320 --> 02:20:56.320
Question Shreya

02:20:56.320 --> 02:20:58.320
and Pratyusha.

02:20:58.320 --> 02:21:00.320
Just open your mic and speak.

02:21:02.320 --> 02:21:04.320
Hello, Niklesh.

02:21:04.320 --> 02:21:06.320
Hi.

02:21:06.320 --> 02:21:08.320
Okay, so I just want to

02:21:08.320 --> 02:21:10.320
tell something and then

02:21:10.320 --> 02:21:12.320
I just want your opinion.

02:21:12.320 --> 02:21:14.320
It's not a question actually.

02:21:14.320 --> 02:21:16.320
So I've been failing a lot

02:21:16.320 --> 02:21:18.320
since a lot of years.

02:21:18.320 --> 02:21:20.320
And I can explain.

02:21:20.320 --> 02:21:22.320
I prepared for

02:21:22.320 --> 02:21:24.320
medical entrance exam and I failed

02:21:24.320 --> 02:21:26.320
because I couldn't

02:21:26.320 --> 02:21:28.320
perform the way I should have.

02:21:28.320 --> 02:21:30.320
And then I prepared

02:21:30.320 --> 02:21:32.320
I wanted to go

02:21:32.320 --> 02:21:34.320
to Delhi and I got the form.

02:21:34.320 --> 02:21:36.320
But then I didn't because my

02:21:36.320 --> 02:21:38.320
parents didn't want me to go to Delhi

02:21:38.320 --> 02:21:40.320
because of the environment and all.

02:21:40.320 --> 02:21:42.320
Then there was

02:21:42.320 --> 02:21:44.320
again a failure because I wanted to and I didn't.

02:21:44.320 --> 02:21:46.320
I couldn't.

02:21:46.320 --> 02:21:48.320
Then I got, after the degree, actually

02:21:48.320 --> 02:21:50.320
I started preparing for government jobs.

02:21:50.320 --> 02:21:52.320
Actually UPSC.

02:21:52.320 --> 02:21:54.320
Last year I started.

02:21:54.320 --> 02:21:56.320
And for a year I have learned a lot of things.

02:21:56.320 --> 02:21:58.320
Loved the content.

02:21:58.320 --> 02:22:00.320
All the subjects I have

02:22:00.320 --> 02:22:02.320
enjoyed thoroughly. But when you talk about

02:22:02.320 --> 02:22:04.320
writing answers and stuff, you still

02:22:04.320 --> 02:22:06.320
have to do a lot of rote learning.

02:22:06.320 --> 02:22:08.320
And that is something I'm not at all good at.

02:22:08.320 --> 02:22:10.320
So I

02:22:10.320 --> 02:22:12.320
okay, I watched some videos and stuff

02:22:12.320 --> 02:22:14.320
so I got to know that you can get into tech

02:22:14.320 --> 02:22:16.320
even if you don't have a degree because skills

02:22:16.320 --> 02:22:18.320
matter.

02:22:18.320 --> 02:22:20.320
So now I'm thinking, actually not thinking, even

02:22:20.320 --> 02:22:22.320
I pivoted in March

02:22:22.320 --> 02:22:24.320
and I'm jumping into tech.

02:22:24.320 --> 02:22:26.320
So I just want to know that

02:22:26.320 --> 02:22:28.320
even if I'm thinking

02:22:28.320 --> 02:22:30.320
I'm even thinking right.

02:22:32.320 --> 02:22:34.320
So I think to really

02:22:34.320 --> 02:22:36.320
jump into something that is tech

02:22:36.320 --> 02:22:38.320
I answered a question a while ago.

02:22:38.320 --> 02:22:40.320
Somebody asked me this. So I look up

02:22:40.320 --> 02:22:42.320
the tweet after this discussion.

02:22:42.320 --> 02:22:44.320
But there is a tweet in which I describe

02:22:44.320 --> 02:22:46.320
what's the beginning point of

02:22:46.320 --> 02:22:48.320
beginning

02:22:48.320 --> 02:22:50.320
a career in tech. And let me tell you

02:22:50.320 --> 02:22:52.320
it doesn't involve

02:22:52.320 --> 02:22:54.320
JavaScript or any coding language.

02:22:54.320 --> 02:22:56.320
Let me tell you what it involves.

02:22:56.320 --> 02:22:58.320
I wrote it down so

02:22:58.320 --> 02:23:00.320
I'll pull up the tweet. But here it is.

02:23:00.320 --> 02:23:02.320
The zero number

02:23:02.320 --> 02:23:04.320
thing, number zero, item number zero

02:23:04.320 --> 02:23:06.320
is to learn to listen.

02:23:06.320 --> 02:23:08.320
Listen to other people, to what

02:23:08.320 --> 02:23:10.320
they are trying to do. That's

02:23:10.320 --> 02:23:12.320
the biggest thing you need to do.

02:23:12.320 --> 02:23:14.320
And that is about technology.

02:23:14.320 --> 02:23:16.320
Yes, I'm talking about tech.

02:23:16.320 --> 02:23:18.320
The biggest thing to do in

02:23:18.320 --> 02:23:20.320
tech is listen.

02:23:20.320 --> 02:23:22.320
Understand. See what they want.

02:23:22.320 --> 02:23:24.320
See how we can help them.

02:23:24.320 --> 02:23:26.320
That's the biggest.

02:23:26.320 --> 02:23:28.320
The next thing to do is to learn

02:23:28.320 --> 02:23:30.320
to read

02:23:30.320 --> 02:23:32.320
and learn to write

02:23:32.320 --> 02:23:34.320
in a short, concise

02:23:34.320 --> 02:23:36.320
manner. Like a tweet.

02:23:36.320 --> 02:23:38.320
Or maybe a paragraph.

02:23:38.320 --> 02:23:40.320
Or maybe a tweet thread.

02:23:40.320 --> 02:23:42.320
But that's it. Not long.

02:23:42.320 --> 02:23:44.320
Short. Succinct.

02:23:44.320 --> 02:23:46.320
To the point.

02:23:46.320 --> 02:23:48.320
Write so others can understand.

02:23:48.320 --> 02:23:50.320
Write

02:23:50.320 --> 02:23:52.320
so a five-year-old can understand.

02:23:52.320 --> 02:23:54.320
Speak

02:23:54.320 --> 02:23:56.320
so a five-year-old can understand.

02:23:56.320 --> 02:23:58.320
That is how

02:23:58.320 --> 02:24:00.320
you begin the next thing.

02:24:00.320 --> 02:24:02.320
Reading and writing.

02:24:02.320 --> 02:24:04.320
The next thing after

02:24:04.320 --> 02:24:06.320
that, and again I'm talking about

02:24:06.320 --> 02:24:08.320
technology, remember? It is about

02:24:08.320 --> 02:24:10.320
technology I'm talking about.

02:24:10.320 --> 02:24:12.320
I told you number zero, listen.

02:24:12.320 --> 02:24:14.320
Number two,

02:24:14.320 --> 02:24:16.320
number one, read and write.

02:24:16.320 --> 02:24:18.320
Number three,

02:24:18.320 --> 02:24:20.320
understand mathematics.

02:24:20.320 --> 02:24:22.320
High school level.

02:24:22.320 --> 02:24:24.320
Grade 12.

02:24:24.320 --> 02:24:26.320
Calculus. Do that

02:24:26.320 --> 02:24:28.320
properly.

02:24:28.320 --> 02:24:30.320
Next one,

02:24:30.320 --> 02:24:32.320
understand and study

02:24:32.320 --> 02:24:34.320
statistics. High school level.

02:24:34.320 --> 02:24:36.320
12th grade. And do that

02:24:36.320 --> 02:24:38.320
really nicely.

02:24:38.320 --> 02:24:40.320
So I told you about physics

02:24:40.320 --> 02:24:42.320
also. And chemistry also.

02:24:42.320 --> 02:24:44.320
I like these things, that's why I mentioned it.

02:24:44.320 --> 02:24:46.320
But it is not strictly required.

02:24:46.320 --> 02:24:48.320
Physics and chemistry are

02:24:48.320 --> 02:24:50.320
something that I love, so I cannot skip that

02:24:50.320 --> 02:24:52.320
talking about it. But math

02:24:52.320 --> 02:24:54.320
and statistics are absolutely required

02:24:54.320 --> 02:24:56.320
to understand technology.

02:24:56.320 --> 02:24:58.320
If you don't do that,

02:24:58.320 --> 02:25:00.320
you will not succeed in writing JavaScript

02:25:00.320 --> 02:25:02.320
or whatever HTML, CSS, God

02:25:02.320 --> 02:25:04.320
knows what. Let me be honest,

02:25:04.320 --> 02:25:06.320
I don't know CSS.

02:25:06.320 --> 02:25:08.320
I have no idea how to center

02:25:08.320 --> 02:25:10.320
div. I don't want

02:25:10.320 --> 02:25:12.320
to, because I want to cheat

02:25:12.320 --> 02:25:14.320
and ask chat GPT how to do

02:25:14.320 --> 02:25:16.320
that. And that's the right way.

02:25:16.320 --> 02:25:18.320
Cheating is

02:25:18.320 --> 02:25:20.320
okay. That's how real life

02:25:20.320 --> 02:25:22.320
is. Copy paste.

02:25:22.320 --> 02:25:24.320
It's totally fine. If you don't have

02:25:24.320 --> 02:25:26.320
to learn every single thing, what

02:25:26.320 --> 02:25:28.320
you need to do is to figure out how

02:25:28.320 --> 02:25:30.320
do you solve that other person's problem?

02:25:30.320 --> 02:25:32.320
How do you make them successful?

02:25:32.320 --> 02:25:34.320
In that process, you may have to cheat

02:25:34.320 --> 02:25:36.320
and copy paste code from somewhere.

02:25:36.320 --> 02:25:38.320
Do it.

02:25:38.320 --> 02:25:40.320
But that's not what you remember or memorize

02:25:40.320 --> 02:25:42.320
and wrote or just

02:25:42.320 --> 02:25:44.320
no need to cheat.

02:25:44.320 --> 02:25:46.320
Absolutely no need to memorize or

02:25:46.320 --> 02:25:48.320
remember anything whatsoever, because

02:25:48.320 --> 02:25:50.320
the skill is not in memorizing,

02:25:50.320 --> 02:25:52.320
but the skill is

02:25:52.320 --> 02:25:54.320
to be able to find what you need when you

02:25:54.320 --> 02:25:56.320
need it quickly,

02:25:56.320 --> 02:25:58.320
efficiently.

02:25:58.320 --> 02:26:00.320
That's the skill.

02:26:00.320 --> 02:26:02.320
Where have I kept it?

02:26:02.320 --> 02:26:04.320
Or where will I find it? Searching.

02:26:04.320 --> 02:26:06.320
Google searching is a great

02:26:06.320 --> 02:26:08.320
skill. And these days, chat GPT

02:26:08.320 --> 02:26:10.320
prompt writing is also

02:26:10.320 --> 02:26:12.320
beautiful. Learn it.

02:26:12.320 --> 02:26:14.320
Learn to make use of these tools that are

02:26:14.320 --> 02:26:16.320
now available and even grow. They'll grow, by the way.

02:26:16.320 --> 02:26:18.320
These tools will grow. Learn to

02:26:18.320 --> 02:26:20.320
use them to apply to your situation.

02:26:20.320 --> 02:26:22.320
You don't have to code

02:26:22.320 --> 02:26:24.320
because prompt writing is not code writing.

02:26:24.320 --> 02:26:26.320
It's about

02:26:26.320 --> 02:26:28.320
communicating with the machine to

02:26:28.320 --> 02:26:30.320
accomplish the outcome you want.

02:26:30.320 --> 02:26:32.320
Whatever you want

02:26:32.320 --> 02:26:34.320
it to produce for you, you want

02:26:34.320 --> 02:26:36.320
to get that, you will use the machine to help

02:26:36.320 --> 02:26:38.320
you. Use it.

02:26:38.320 --> 02:26:40.320
Make use of it.

02:26:40.320 --> 02:26:42.320
That's the next thing. There are a couple other

02:26:42.320 --> 02:26:44.320
things that you want to keep doing,

02:26:44.320 --> 02:26:46.320
and that is to

02:26:46.320 --> 02:26:48.320
make notes of what you have done

02:26:48.320 --> 02:26:50.320
in terms of, I think, let me

02:26:50.320 --> 02:26:52.320
put up that tweet. I think Shreya,

02:26:52.320 --> 02:26:54.320
maybe you saw that tweet. Did you?

02:26:54.320 --> 02:26:56.320
Was it you that asked me

02:26:56.320 --> 02:26:58.320
about chemistry or not?

02:26:58.320 --> 02:27:00.320
I don't know. Somebody else.

02:27:00.320 --> 02:27:02.320
I don't remember.

02:27:02.320 --> 02:27:04.320
I have

02:27:04.320 --> 02:27:06.320
a thousand new followers, so I

02:27:06.320 --> 02:27:08.320
don't blame you. I blame myself.

02:27:08.320 --> 02:27:10.320
I don't know.

02:27:10.320 --> 02:27:12.320
Somebody did. I'll put up that tweet

02:27:12.320 --> 02:27:14.320
and tag it to you.

02:27:14.320 --> 02:27:16.320
You will see what I wrote about how

02:27:16.320 --> 02:27:18.320
to begin in tech. It has nothing to do with

02:27:18.320 --> 02:27:20.320
tech itself. It has absolutely

02:27:20.320 --> 02:27:22.320
nothing to do with tech.

02:27:22.320 --> 02:27:24.320
Actually,

02:27:24.320 --> 02:27:26.320
I am scared

02:27:26.320 --> 02:27:28.320
of rot learning. That's all.

02:27:28.320 --> 02:27:30.320
Implementation is fine. Learning new things

02:27:30.320 --> 02:27:32.320
is fine. But memorizing

02:27:32.320 --> 02:27:34.320
is not a skill you...

02:27:34.320 --> 02:27:36.320
Absolutely. You should actively forget

02:27:36.320 --> 02:27:38.320
things. I'm telling you to

02:27:38.320 --> 02:27:40.320
forget. You don't have to remember.

02:27:40.320 --> 02:27:42.320
I don't...

02:27:42.320 --> 02:27:44.320
I'm telling you to cheat.

02:27:44.320 --> 02:27:46.320
I'm telling you to copy paste.

02:27:46.320 --> 02:27:48.320
I'm telling you to openly use

02:27:48.320 --> 02:27:50.320
the internet and all the tools available to you

02:27:50.320 --> 02:27:52.320
to make things happen. Because

02:27:52.320 --> 02:27:54.320
your goal is to not memorizing

02:27:54.320 --> 02:27:56.320
and your goal is not rot learning, but

02:27:56.320 --> 02:27:58.320
to make other people

02:27:58.320 --> 02:28:00.320
successful. That is the goal.

02:28:00.320 --> 02:28:02.320
Don't forget that goal.

02:28:02.320 --> 02:28:04.320
In the process, do copy paste.

02:28:04.320 --> 02:28:06.320
Left and right.

02:28:06.320 --> 02:28:08.320
Whatever you need. It's totally normal.

02:28:08.320 --> 02:28:10.320
And natural.

02:28:12.320 --> 02:28:14.320
Thank you.

02:28:14.320 --> 02:28:16.320
Thank you so much.

02:28:16.320 --> 02:28:18.320
Yes, Prathish.

02:28:18.320 --> 02:28:20.320
Thank you, Shreya.

02:28:20.320 --> 02:28:22.320
Am I audible?

02:28:22.320 --> 02:28:24.320
Yes.

02:28:24.320 --> 02:28:26.320
Thanks a lot, Nailesh, for

02:28:26.320 --> 02:28:28.320
those amazing insights

02:28:28.320 --> 02:28:30.320
and present from the

02:28:30.320 --> 02:28:32.320
10 PM.

02:28:32.320 --> 02:28:34.320
My question

02:28:34.320 --> 02:28:36.320
is like you tell that

02:28:36.320 --> 02:28:38.320
after learning about

02:28:38.320 --> 02:28:40.320
the things, just apply it

02:28:40.320 --> 02:28:42.320
and fail.

02:28:42.320 --> 02:28:44.320
I'm just curious to know

02:28:44.320 --> 02:28:46.320
that at your

02:28:46.320 --> 02:28:48.320
journey, during your journey,

02:28:48.320 --> 02:28:50.320
what are the things you faced

02:28:50.320 --> 02:28:52.320
and you failed and you cope up

02:28:52.320 --> 02:28:54.320
then also do

02:28:54.320 --> 02:28:56.320
it.

02:28:56.320 --> 02:28:58.320
Prathish, I fail

02:28:58.320 --> 02:29:00.320
even today, hundreds

02:29:00.320 --> 02:29:02.320
of times every day.

02:29:02.320 --> 02:29:04.320
I fail even today.

02:29:04.320 --> 02:29:06.320
It is nothing new. It is very natural.

02:29:06.320 --> 02:29:08.320
And nothing

02:29:08.320 --> 02:29:10.320
to feel happy about

02:29:10.320 --> 02:29:12.320
it. But I don't even feel sad about

02:29:12.320 --> 02:29:14.320
it because it's a fact of life. Just deal with it.

02:29:14.320 --> 02:29:16.320
I fail all the time. It's okay.

02:29:16.320 --> 02:29:18.320
Just learn to live with it.

02:29:18.320 --> 02:29:20.320
That's how I think.

02:29:20.320 --> 02:29:22.320
There will be small failures.

02:29:22.320 --> 02:29:24.320
There will be big failures. And sometimes there will be

02:29:24.320 --> 02:29:26.320
victories. So they come.

02:29:26.320 --> 02:29:28.320
It's totally okay and totally

02:29:28.320 --> 02:29:30.320
acceptable.

02:29:30.320 --> 02:29:32.320
The key thing to learning with

02:29:32.320 --> 02:29:34.320
failure is to just

02:29:34.320 --> 02:29:36.320
digest the fact that it's okay to fail.

02:29:36.320 --> 02:29:38.320
That's the hardest part.

02:29:38.320 --> 02:29:40.320
People don't digest it.

02:29:40.320 --> 02:29:42.320
Right, Prathish?

02:29:42.320 --> 02:29:44.320
By the way,

02:29:44.320 --> 02:29:46.320
you need to make that dance video, man.

02:29:46.320 --> 02:29:48.320
You need to make that dance video for me.

02:29:48.320 --> 02:29:50.320
You seriously need to do that.

02:29:50.320 --> 02:29:52.320
Toka, toka, toka.

02:29:52.320 --> 02:29:54.320
Dance it. And send me the video

02:29:54.320 --> 02:29:56.320
please. Thank you.

02:29:56.320 --> 02:29:58.320
Okay, hi.

02:29:58.320 --> 02:30:00.320
Hi, Amit.

02:30:02.320 --> 02:30:04.320
Hello, sir. Actually, I'm in

02:30:04.320 --> 02:30:06.320
third time of MCA.

02:30:06.320 --> 02:30:08.320
And currently I'm learning DevOps

02:30:08.320 --> 02:30:10.320
and cloud computing kind of stuff.

02:30:10.320 --> 02:30:12.320
So my question is like,

02:30:12.320 --> 02:30:14.320
you know, after the

02:30:14.320 --> 02:30:16.320
chat GPT and bread and all those

02:30:16.320 --> 02:30:18.320
things, people are in panic

02:30:18.320 --> 02:30:20.320
as of now. So like they are saying like, you know,

02:30:20.320 --> 02:30:22.320
writing those best script is not

02:30:22.320 --> 02:30:24.320
going to help you.

02:30:24.320 --> 02:30:26.320
You have to learn machine learning

02:30:26.320 --> 02:30:28.320
and AI kind of thing. So like it's

02:30:28.320 --> 02:30:30.320
going to disrupt all the market. So

02:30:30.320 --> 02:30:32.320
if it is a destruction, so be

02:30:32.320 --> 02:30:34.320
the part of destruction. Don't learn these stupid

02:30:34.320 --> 02:30:36.320
things. So how do you see the future

02:30:36.320 --> 02:30:38.320
of cloud computing as of now?

02:30:38.320 --> 02:30:40.320
So you should learn bash.

02:30:40.320 --> 02:30:42.320
Don't miss

02:30:42.320 --> 02:30:44.320
it. It's a good thing to have. But

02:30:44.320 --> 02:30:46.320
don't memorize anything.

02:30:46.320 --> 02:30:48.320
Don't have to like, you know, forget

02:30:48.320 --> 02:30:50.320
it. So basically

02:30:50.320 --> 02:30:52.320
you want to learn something in bash scripting.

02:30:52.320 --> 02:30:54.320
What do you do? You Google search and

02:30:54.320 --> 02:30:56.320
you find some answer that might

02:30:56.320 --> 02:30:58.320
work. You try it out and it may not work.

02:30:58.320 --> 02:31:00.320
And then you find another answer

02:31:00.320 --> 02:31:02.320
and then you copy paste and then try it out

02:31:02.320 --> 02:31:04.320
and it doesn't work. And you do it a hundred times.

02:31:04.320 --> 02:31:06.320
You'll eventually find a solution. That's

02:31:06.320 --> 02:31:08.320
how you learn bash scripting.

02:31:08.320 --> 02:31:10.320
Or you can cheat and

02:31:10.320 --> 02:31:12.320
ask Bard or chat GPT

02:31:12.320 --> 02:31:14.320
what's the solution? And it might give you the answer.

02:31:14.320 --> 02:31:16.320
So use it. But

02:31:16.320 --> 02:31:18.320
not learning bash or not using bash

02:31:18.320 --> 02:31:20.320
at all is bad. It's going to be bad by the way.

02:31:20.320 --> 02:31:22.320
Even if you go machine learning and AI

02:31:22.320 --> 02:31:24.320
and all that. Because there you will find

02:31:24.320 --> 02:31:26.320
those machine learning scripts

02:31:26.320 --> 02:31:28.320
will actually use bash.

02:31:28.320 --> 02:31:30.320
So you cannot get away without

02:31:30.320 --> 02:31:32.320
it. You have to use bash. Or

02:31:32.320 --> 02:31:34.320
if not bash, zsh or some other

02:31:34.320 --> 02:31:36.320
shell. That shell is going to be there

02:31:36.320 --> 02:31:38.320
in your life. I live

02:31:38.320 --> 02:31:40.320
and die on the shell. I do

02:31:40.320 --> 02:31:42.320
that. That's my primary tool

02:31:42.320 --> 02:31:44.320
by the way. Just so you know.

02:31:44.320 --> 02:31:46.320
And so that's about the

02:31:46.320 --> 02:31:48.320
bash scripting in DevOps

02:31:48.320 --> 02:31:50.320
and cloud computing in the future.

02:31:50.320 --> 02:31:52.320
The way to think about machine learning and AI

02:31:52.320 --> 02:31:54.320
is what

02:31:54.320 --> 02:31:56.320
it actually does is

02:31:56.320 --> 02:31:58.320
let's give you some

02:31:58.320 --> 02:32:00.320
background here.

02:32:00.320 --> 02:32:02.320
Think about a trade off

02:32:02.320 --> 02:32:04.320
between

02:32:04.320 --> 02:32:06.320
speed and accuracy.

02:32:06.320 --> 02:32:08.320
Some people

02:32:08.320 --> 02:32:10.320
who try to do something very fast

02:32:10.320 --> 02:32:12.320
they might make a mistake. And they're

02:32:12.320 --> 02:32:14.320
not very accurate in producing the answer.

02:32:14.320 --> 02:32:16.320
And if you're taking

02:32:16.320 --> 02:32:18.320
enough time to do it slow and thoroughly

02:32:18.320 --> 02:32:20.320
you might produce a very good answer.

02:32:20.320 --> 02:32:22.320
An accurate answer.

02:32:22.320 --> 02:32:24.320
So that's the trade off between speed

02:32:24.320 --> 02:32:26.320
and accuracy. Take that to an exam.

02:32:26.320 --> 02:32:28.320
You have two hours. You

02:32:28.320 --> 02:32:30.320
do it fast. And you make mistakes.

02:32:30.320 --> 02:32:32.320
If you were given like eight hours

02:32:32.320 --> 02:32:34.320
you may not make less mistakes.

02:32:34.320 --> 02:32:36.320
If you are given access to an

02:32:36.320 --> 02:32:38.320
open computer and chat GPT

02:32:38.320 --> 02:32:40.320
and Bard and every other tool available

02:32:40.320 --> 02:32:42.320
to you and ask you to take the exam

02:32:42.320 --> 02:32:44.320
what will happen?

02:32:44.320 --> 02:32:46.320
You'll probably finish that eight hour exam sooner.

02:32:46.320 --> 02:32:48.320
What did the machines do for you?

02:32:48.320 --> 02:32:50.320
Improve your speed

02:32:50.320 --> 02:32:52.320
accuracy envelope.

02:32:52.320 --> 02:32:54.320
The trade off

02:32:54.320 --> 02:32:56.320
between speed and accuracy. When you increase one

02:32:56.320 --> 02:32:58.320
the other falls. You improve the

02:32:58.320 --> 02:33:00.320
speed. Accuracy falls.

02:33:00.320 --> 02:33:02.320
Try to increase the accuracy. Your time takes more.

02:33:02.320 --> 02:33:04.320
And what AI does

02:33:04.320 --> 02:33:06.320
is helps you improve

02:33:06.320 --> 02:33:08.320
the envelope.

02:33:08.320 --> 02:33:10.320
Pushes the envelope

02:33:10.320 --> 02:33:12.320
to a better scenario. You can

02:33:12.320 --> 02:33:14.320
make things faster

02:33:14.320 --> 02:33:16.320
and good

02:33:16.320 --> 02:33:18.320
together.

02:33:18.320 --> 02:33:20.320
That's what AI actually does.

02:33:20.320 --> 02:33:22.320
I was talking to a doctor the other

02:33:22.320 --> 02:33:24.320
day. They are from Palo Alto

02:33:24.320 --> 02:33:26.320
Clinic. And it is a team

02:33:26.320 --> 02:33:28.320
of five developers

02:33:28.320 --> 02:33:30.320
who have

02:33:30.320 --> 02:33:32.320
a bunch of machines in their home

02:33:32.320 --> 02:33:34.320
and a team of

02:33:34.320 --> 02:33:36.320
doctors who are mental

02:33:36.320 --> 02:33:38.320
psychiatrists. Mental doctors.

02:33:38.320 --> 02:33:40.320
Brain doctors. And what they have done

02:33:40.320 --> 02:33:42.320
is created a machine learning model

02:33:42.320 --> 02:33:44.320
to help the doctor

02:33:44.320 --> 02:33:46.320
analyze brain scans

02:33:46.320 --> 02:33:48.320
and produce a

02:33:48.320 --> 02:33:50.320
retail analysis report.

02:33:50.320 --> 02:33:52.320
And what Amit should do

02:33:52.320 --> 02:33:54.320
is mute because he is making noise.

02:33:54.320 --> 02:33:56.320
So please mute yourself Amit.

02:33:56.320 --> 02:33:58.320
And what the doctor

02:33:58.320 --> 02:34:00.320
does is if she is going to

02:34:00.320 --> 02:34:02.320
write a detailed report for a particular

02:34:02.320 --> 02:34:04.320
brain scan, it will take her

02:34:04.320 --> 02:34:06.320
eight to ten hours to write a thorough

02:34:06.320 --> 02:34:08.320
note about what that brain

02:34:08.320 --> 02:34:10.320
situation is and what the

02:34:10.320 --> 02:34:12.320
symptoms are and find out what

02:34:12.320 --> 02:34:14.320
things that they should be doing differently.

02:34:14.320 --> 02:34:16.320
And she will take eight hours and make a beautiful

02:34:16.320 --> 02:34:18.320
analysis and produce

02:34:18.320 --> 02:34:20.320
a report with action items for the patient to

02:34:20.320 --> 02:34:22.320
be able to do next.

02:34:22.320 --> 02:34:24.320
That's the human doctor.

02:34:24.320 --> 02:34:26.320
Now introduce machine learning

02:34:26.320 --> 02:34:28.320
and AI into the same game that what

02:34:28.320 --> 02:34:30.320
the doctor does.

02:34:30.320 --> 02:34:32.320
This machine technique,

02:34:32.320 --> 02:34:34.320
I think they have like $70,000

02:34:34.320 --> 02:34:36.320
worth of NVIDIA, Tesla, GPUs

02:34:36.320 --> 02:34:38.320
and some custom machine learning

02:34:38.320 --> 02:34:40.320
put together in Palo Alto

02:34:40.320 --> 02:34:42.320
clinic.ai. You can read up on that.

02:34:42.320 --> 02:34:44.320
And so what they have done is

02:34:44.320 --> 02:34:46.320
created a machine that helps

02:34:46.320 --> 02:34:48.320
the doctor produce the report

02:34:48.320 --> 02:34:50.320
that she will make by hand

02:34:50.320 --> 02:34:52.320
and takes eight hours. This machine

02:34:52.320 --> 02:34:54.320
does it in a few seconds.

02:34:54.320 --> 02:34:56.320
And of course the result that the machine

02:34:56.320 --> 02:34:58.320
produces is inferior.

02:34:58.320 --> 02:35:00.320
It's B level, B quality,

02:35:00.320 --> 02:35:02.320
not A grade, but B grade.

02:35:02.320 --> 02:35:04.320
But does that result in a few

02:35:04.320 --> 02:35:06.320
seconds as opposed to the doctor taking

02:35:06.320 --> 02:35:08.320
eight hours to produce an A grade

02:35:08.320 --> 02:35:10.320
report?

02:35:10.320 --> 02:35:12.320
So now what the doctor is doing or should be

02:35:12.320 --> 02:35:14.320
doing or would be doing is to use

02:35:14.320 --> 02:35:16.320
the machine's ability to

02:35:16.320 --> 02:35:18.320
increase the speed at which she

02:35:18.320 --> 02:35:20.320
works on herself,

02:35:20.320 --> 02:35:22.320
get help from the machines to produce the

02:35:22.320 --> 02:35:24.320
outcome that she wants. So she will get a

02:35:24.320 --> 02:35:26.320
B grade output. She will now read

02:35:26.320 --> 02:35:28.320
that output and improve

02:35:28.320 --> 02:35:30.320
to make it A grade

02:35:30.320 --> 02:35:32.320
and maybe spend one hour, one more hour

02:35:32.320 --> 02:35:34.320
instead of eight.

02:35:34.320 --> 02:35:36.320
She gets the result instantaneously like

02:35:36.320 --> 02:35:38.320
in a few seconds or maybe ten seconds.

02:35:38.320 --> 02:35:40.320
And she gets

02:35:40.320 --> 02:35:42.320
a B grade report. She can review that

02:35:42.320 --> 02:35:44.320
faster and polish it, clean

02:35:44.320 --> 02:35:46.320
it up nice, make it nicer

02:35:46.320 --> 02:35:48.320
and make it satisfactory to her and

02:35:48.320 --> 02:35:50.320
to her patients. And that's how

02:35:50.320 --> 02:35:52.320
you push the envelope. That's where machine learning

02:35:52.320 --> 02:35:54.320
actually comes into play.

02:35:54.320 --> 02:35:56.320
And by the way, it does involve

02:35:56.320 --> 02:35:58.320
batch scripting. It's not going to go

02:35:58.320 --> 02:36:00.320
away.

02:36:02.320 --> 02:36:04.320
Does that answer your question?

02:36:04.320 --> 02:36:06.320
So that's how you actually

02:36:06.320 --> 02:36:08.320
use AI. You don't use

02:36:08.320 --> 02:36:10.320
AI what people

02:36:10.320 --> 02:36:12.320
talk about or think about. So don't confuse

02:36:12.320 --> 02:36:14.320
yourself. AI is about helping people

02:36:14.320 --> 02:36:16.320
do the work faster

02:36:16.320 --> 02:36:18.320
to push the envelope

02:36:18.320 --> 02:36:20.320
between what is called

02:36:20.320 --> 02:36:22.320
accuracy and speed.

02:36:22.320 --> 02:36:24.320
There's a trade-off. Trade-off meaning

02:36:24.320 --> 02:36:26.320
jhagda in ka aapas mein.

02:36:26.320 --> 02:36:28.320
If you ek ko badao to dosra kab ho jata hai.

02:36:28.320 --> 02:36:30.320
Dosre ko badao to

02:36:30.320 --> 02:36:32.320
pehla kab ho jata hai. Speed badao to

02:36:32.320 --> 02:36:34.320
accuracy kharab ho jati hai.

02:36:34.320 --> 02:36:36.320
Accuracy badani kuchhish karo and time jata lagta hai.

02:36:36.320 --> 02:36:38.320
Insaan hai. Dheere

02:36:38.320 --> 02:36:40.320
kaam karta hai. Machine lao

02:36:40.320 --> 02:36:42.320
jaldi karega. But quality ganda karega

02:36:42.320 --> 02:36:44.320
thoda sa. Usko

02:36:44.320 --> 02:36:46.320
aadmi lagao aur improve karo.

02:36:46.320 --> 02:36:48.320
That's how you use the AI.

02:36:48.320 --> 02:36:50.320
AI is nothing but

02:36:50.320 --> 02:36:52.320
invention of the wheel.

02:36:52.320 --> 02:36:54.320
Chakka aavish karo.

02:36:54.320 --> 02:36:56.320
To ekdum gadiya fata fata chalna rige

02:36:56.320 --> 02:36:58.320
the invention of the wheel ho gaya.

02:36:58.320 --> 02:37:00.320
Invention of paracetam.

02:37:00.320 --> 02:37:02.320
Penicillin. Penicillin

02:37:02.320 --> 02:37:04.320
invention in 1900s.

02:37:04.320 --> 02:37:06.320
Invention of TCPIP.

02:37:06.320 --> 02:37:08.320
The internet.

02:37:08.320 --> 02:37:10.320
Invention of Bitcoin.

02:37:10.320 --> 02:37:12.320
If you think of it that way. I don't

02:37:12.320 --> 02:37:14.320
go too much into Bitcoin but we talk about

02:37:14.320 --> 02:37:16.320
that on a separate topic. In fact, we have a

02:37:16.320 --> 02:37:18.320
Bitcoin expert in this audience

02:37:18.320 --> 02:37:20.320
somewhere. Satoshi

02:37:20.320 --> 02:37:22.320
DJ. You're listening, I know.

02:37:22.320 --> 02:37:24.320
So

02:37:24.320 --> 02:37:26.320
the point is there are

02:37:26.320 --> 02:37:28.320
inflection points in the industry and

02:37:28.320 --> 02:37:30.320
this AI thing is not new.

02:37:30.320 --> 02:37:32.320
When I was in IIC Bangalore in

02:37:32.320 --> 02:37:34.320
1990, my project

02:37:34.320 --> 02:37:36.320
was actually a machine learning AI project.

02:37:36.320 --> 02:37:38.320
It was dumb

02:37:38.320 --> 02:37:40.320
and idiotic.

02:37:40.320 --> 02:37:42.320
But that's what it is.

02:37:42.320 --> 02:37:44.320
The state was different. That's

02:37:44.320 --> 02:37:46.320
how it was in those days.

02:37:46.320 --> 02:37:48.320
So AI is not new. What is actually

02:37:48.320 --> 02:37:50.320
new in the last few months

02:37:50.320 --> 02:37:52.320
is the user experience.

02:37:52.320 --> 02:37:54.320
It has much more improved than

02:37:54.320 --> 02:37:56.320
what it was before. Before

02:37:56.320 --> 02:37:58.320
people were using batch scripting

02:37:58.320 --> 02:38:00.320
to interface with AI.

02:38:00.320 --> 02:38:02.320
These days we have a browser interface

02:38:02.320 --> 02:38:04.320
so you can just ask a question, you get an answer.

02:38:04.320 --> 02:38:06.320
Chat GPT

02:38:06.320 --> 02:38:08.320
or Bard. There'll be more.

02:38:08.320 --> 02:38:10.320
There are others already.

02:38:10.320 --> 02:38:12.320
You type something and you get a picture

02:38:12.320 --> 02:38:14.320
created. You type something and you get a video created.

02:38:14.320 --> 02:38:16.320
I have requested

02:38:16.320 --> 02:38:18.320
a friend to create a video of me

02:38:18.320 --> 02:38:20.320
talking in my accent.

02:38:20.320 --> 02:38:22.320
And you will see it eventually.

02:38:22.320 --> 02:38:24.320
I'll post it on Twitter when it becomes

02:38:24.320 --> 02:38:26.320
ready. When Nilesh is talking

02:38:26.320 --> 02:38:28.320
in Nilesh's voice.

02:38:28.320 --> 02:38:30.320
And it is not

02:38:30.320 --> 02:38:32.320
Nilesh. You've seen it probably.

02:38:32.320 --> 02:38:34.320
Obama talking. He's not Obama.

02:38:34.320 --> 02:38:36.320
He's somebody else.

02:38:36.320 --> 02:38:38.320
Completely manipulated,

02:38:38.320 --> 02:38:40.320
automatically created through machine learning.

02:38:40.320 --> 02:38:42.320
And so you will

02:38:42.320 --> 02:38:44.320
one day you will see Nilesh talking in

02:38:44.320 --> 02:38:46.320
my accent, but it is not going to be

02:38:46.320 --> 02:38:48.320
me. And that might happen

02:38:48.320 --> 02:38:50.320
soon. As soon as the product finishes.

02:38:54.320 --> 02:38:56.320
So that is how you think

02:38:56.320 --> 02:38:58.320
about cloud computing and machine learning.

02:38:58.320 --> 02:39:00.320
They are all together. They're not going to kill

02:39:00.320 --> 02:39:02.320
each other, but help each other.

02:39:06.320 --> 02:39:08.320
Got it. Thank you.

02:39:08.320 --> 02:39:10.320
Next one, please.

02:39:10.320 --> 02:39:12.320
That actually

02:39:12.320 --> 02:39:14.320
yeah, I don't think

02:39:14.320 --> 02:39:16.320
we have another one except

02:39:16.320 --> 02:39:18.320
I just want to add

02:39:18.320 --> 02:39:20.320
that actually reminds me of the scenario that we have

02:39:20.320 --> 02:39:22.320
internal to

02:39:22.320 --> 02:39:24.320
where I work.

02:39:24.320 --> 02:39:26.320
We first focused on making the product

02:39:26.320 --> 02:39:28.320
work, then we worked upon the efficiency.

02:39:28.320 --> 02:39:30.320
Just like what you did with AI.

02:39:30.320 --> 02:39:32.320
First you have a speed

02:39:32.320 --> 02:39:34.320
so that you can just analyze and just

02:39:34.320 --> 02:39:36.320
correct it later on.

02:39:36.320 --> 02:39:38.320
That was quite useful for us

02:39:38.320 --> 02:39:40.320
in the end as well.

02:39:40.320 --> 02:39:42.320
Took the time from about two hours

02:39:42.320 --> 02:39:44.320
to around three hours. No, no, no.

02:39:44.320 --> 02:39:46.320
Two days to three hours.

02:39:46.320 --> 02:39:48.320
So that is kind of interesting.

02:39:48.320 --> 02:39:50.320
So

02:39:50.320 --> 02:39:52.320
Vijay is here and Sagi

02:39:52.320 --> 02:39:54.320
is here. So yeah, Vijay

02:39:54.320 --> 02:39:56.320
good to see you again.

02:39:56.320 --> 02:39:58.320
Hello.

02:39:58.320 --> 02:40:00.320
My main question was going to be what did I

02:40:00.320 --> 02:40:02.320
miss?

02:40:02.320 --> 02:40:04.320
So we recorded the whole thing.

02:40:04.320 --> 02:40:06.320
There were a lot. So we recorded the whole thing

02:40:06.320 --> 02:40:08.320
and I'll release this audio in

02:40:08.320 --> 02:40:10.320
form of a podcast on Spotify. You will

02:40:10.320 --> 02:40:12.320
see that.

02:40:12.320 --> 02:40:14.320
So we are recording.

02:40:14.320 --> 02:40:16.320
We have a question from Sagi. Hi.

02:40:16.320 --> 02:40:18.320
Just

02:40:18.320 --> 02:40:20.320
open a mic and speak.

02:40:20.320 --> 02:40:22.320
Hello.

02:40:22.320 --> 02:40:24.320
Hello, sir.

02:40:24.320 --> 02:40:26.320
Sir, my question was

02:40:26.320 --> 02:40:28.320
that

02:40:28.320 --> 02:40:30.320
can you hear me?

02:40:30.320 --> 02:40:32.320
Yes, Sagi. Go ahead.

02:40:32.320 --> 02:40:34.320
Yeah, my question

02:40:34.320 --> 02:40:36.320
was that how

02:40:36.320 --> 02:40:38.320
can we overcome

02:40:38.320 --> 02:40:40.320
the constant losing job

02:40:40.320 --> 02:40:42.320
stress?

02:40:44.320 --> 02:40:46.320
So

02:40:46.320 --> 02:40:48.320
we will have to find out

02:40:48.320 --> 02:40:50.320
where the stress comes from.

02:40:50.320 --> 02:40:52.320
Then we will be able to tell you how to overcome

02:40:52.320 --> 02:40:54.320
it. Because

02:40:54.320 --> 02:40:56.320
the stress has to have some

02:40:56.320 --> 02:40:58.320
source of its origin.

02:40:58.320 --> 02:41:00.320
Where is it coming from? That's for you to find out

02:41:00.320 --> 02:41:02.320
where the stress is originating from. Is it the

02:41:02.320 --> 02:41:04.320
boss? Change the boss.

02:41:04.320 --> 02:41:06.320
Is it something else?

02:41:06.320 --> 02:41:08.320
Change that thing.

02:41:08.320 --> 02:41:10.320
That's how you deal with stress.

02:41:10.320 --> 02:41:12.320
Right?

02:41:12.320 --> 02:41:14.320
If you are in a situation where

02:41:14.320 --> 02:41:16.320
you are not happy with whatever you have,

02:41:16.320 --> 02:41:18.320
you change it. That's the

02:41:18.320 --> 02:41:20.320
best way to manage stress.

02:41:20.320 --> 02:41:22.320
So if you have a job and the boss is bothering you,

02:41:22.320 --> 02:41:24.320
fire the boss.

02:41:24.320 --> 02:41:26.320
Take him out of the job. I mean,

02:41:26.320 --> 02:41:28.320
understand? That's what I'm saying.

02:41:28.320 --> 02:41:30.320
Fire the boss.

02:41:32.320 --> 02:41:34.320
Okay.

02:41:34.320 --> 02:41:36.320
So you have to find out what is causing the

02:41:36.320 --> 02:41:38.320
stress. And then kill it.

02:41:40.320 --> 02:41:42.320
I don't know what's causing stress for you.

02:41:42.320 --> 02:41:44.320
You have to find it yourself and shoot the

02:41:44.320 --> 02:41:46.320
bastard.

02:41:46.320 --> 02:41:48.320
Yes, hi.

02:41:48.320 --> 02:41:50.320
Thank you, sir.

02:41:54.320 --> 02:41:56.320
Once I was a Christian, I've been dealing with

02:41:56.320 --> 02:41:58.320
JS for a while.

02:41:58.320 --> 02:42:00.320
Although I'm a student,

02:42:00.320 --> 02:42:02.320
so I do take a break when I'm in school

02:42:02.320 --> 02:42:04.320
because it's not easy to do programming

02:42:04.320 --> 02:42:06.320
while in school because of

02:42:06.320 --> 02:42:08.320
light issues. But the problem

02:42:08.320 --> 02:42:10.320
I have is I've been dealing with JavaScript

02:42:10.320 --> 02:42:12.320
for a while. I can't really comprehend.

02:42:12.320 --> 02:42:14.320
Like yesterday, I watched

02:42:14.320 --> 02:42:16.320
a six-hour video. So I was

02:42:16.320 --> 02:42:18.320
like, I should do a small project like

02:42:18.320 --> 02:42:20.320
this. I couldn't do anything. I

02:42:20.320 --> 02:42:22.320
was just stuck. So I just

02:42:22.320 --> 02:42:24.320
want to ask for help, anything that

02:42:24.320 --> 02:42:26.320
I can do.

02:42:30.320 --> 02:42:32.320
So Abdul Waheed, I

02:42:32.320 --> 02:42:34.320
did not understand your question, probably

02:42:34.320 --> 02:42:36.320
because of accent.

02:42:36.320 --> 02:42:38.320
So if you can speak

02:42:38.320 --> 02:42:40.320
slowly in a few sentences again,

02:42:40.320 --> 02:42:42.320
I would appreciate that.

02:42:42.320 --> 02:42:44.320
I do understand. I have friends in Nigeria,

02:42:44.320 --> 02:42:46.320
by the way.

02:42:46.320 --> 02:42:48.320
And I do interact with lots

02:42:48.320 --> 02:42:50.320
of people from there. But I

02:42:50.320 --> 02:42:54.320
did not understand you, and I'm sorry for that.

02:42:54.320 --> 02:42:56.320
Okay. The problem

02:42:56.320 --> 02:42:58.320
is that

02:42:58.320 --> 02:43:00.320
I'm kind of

02:43:00.320 --> 02:43:02.320
stuck with JavaScript for a while.

02:43:02.320 --> 02:43:04.320
So

02:43:04.320 --> 02:43:06.320
like, for example, yesterday...

02:43:06.320 --> 02:43:08.320
Please stop. Please stop. Did you say

02:43:08.320 --> 02:43:10.320
you're stuck with JavaScript?

02:43:10.320 --> 02:43:12.320
Yes. Yes.

02:43:12.320 --> 02:43:14.320
Okay. Okay. Now, go ahead.

02:43:14.320 --> 02:43:16.320
I understand. Go ahead. Keep going.

02:43:16.320 --> 02:43:18.320
Yeah. Like yesterday,

02:43:18.320 --> 02:43:20.320
I watched a straight video of six

02:43:20.320 --> 02:43:22.320
hours. So I was like,

02:43:22.320 --> 02:43:24.320
I was trying to build a small project to

02:43:24.320 --> 02:43:26.320
know maybe I'm

02:43:26.320 --> 02:43:28.320
comprehending the video.

02:43:28.320 --> 02:43:30.320
So I couldn't do anything.

02:43:30.320 --> 02:43:32.320
So I tried my best.

02:43:32.320 --> 02:43:34.320
So I don't know why.

02:43:34.320 --> 02:43:36.320
So that's why I'm asking if there is any

02:43:36.320 --> 02:43:38.320
method to learn.

02:43:40.320 --> 02:43:42.320
I understand your question now. I'll

02:43:42.320 --> 02:43:44.320
read the question. I mean, I'll speak

02:43:44.320 --> 02:43:46.320
the question again for everybody to understand.

02:43:46.320 --> 02:43:48.320
The question is, Abdul Waheed

02:43:48.320 --> 02:43:50.320
from Nigeria is learning

02:43:50.320 --> 02:43:52.320
JavaScript. He watched something

02:43:52.320 --> 02:43:54.320
and he's doing it for six hours

02:43:54.320 --> 02:43:56.320
and still could not succeed. What should we do?

02:43:56.320 --> 02:43:58.320
The simple answer is

02:43:58.320 --> 02:44:00.320
find another video.

02:44:00.320 --> 02:44:02.320
That's a quick answer.

02:44:02.320 --> 02:44:04.320
The right answer is

02:44:04.320 --> 02:44:06.320
go search for JavaScript

02:44:06.320 --> 02:44:08.320
tutorials in YouTube, for

02:44:08.320 --> 02:44:10.320
example, and sort them by the

02:44:10.320 --> 02:44:12.320
number of views, number of ratings,

02:44:12.320 --> 02:44:14.320
find the read the comments,

02:44:14.320 --> 02:44:16.320
do a Google search on

02:44:16.320 --> 02:44:18.320
which are the best videos for your

02:44:18.320 --> 02:44:20.320
specific situation, which aspect of JavaScript

02:44:20.320 --> 02:44:22.320
you're trying to understand

02:44:22.320 --> 02:44:24.320
and watch that. And as you watch,

02:44:24.320 --> 02:44:26.320
don't just watch.

02:44:26.320 --> 02:44:28.320
Pause and do what they're doing

02:44:28.320 --> 02:44:30.320
yourself. And then play

02:44:30.320 --> 02:44:32.320
it again and rewind and repeat

02:44:32.320 --> 02:44:34.320
and rewind and repeat until you

02:44:34.320 --> 02:44:36.320
get what you want. If you don't get the answer,

02:44:36.320 --> 02:44:38.320
go do Stack Overflow. Search.

02:44:38.320 --> 02:44:40.320
Get the answer there.

02:44:40.320 --> 02:44:42.320
If you don't get the answer, ask

02:44:42.320 --> 02:44:44.320
your friend or post it on

02:44:44.320 --> 02:44:46.320
some forum and wait for somebody to respond

02:44:46.320 --> 02:44:48.320
or ask your question on Stack Overflow

02:44:48.320 --> 02:44:50.320
and see if somebody helps you out.

02:44:50.320 --> 02:44:52.320
That's how most

02:44:52.320 --> 02:44:54.320
people work. That's the right

02:44:54.320 --> 02:44:56.320
way to work.

02:44:56.320 --> 02:44:58.320
And if you don't succeed with

02:44:58.320 --> 02:45:00.320
one video, find another video.

02:45:00.320 --> 02:45:02.320
If not

02:45:02.320 --> 02:45:04.320
third video, it goes on.

02:45:04.320 --> 02:45:06.320
By the way, something I remember is this

02:45:06.320 --> 02:45:08.320
thing called FreeCodeCamp has a beautiful

02:45:08.320 --> 02:45:10.320
JavaScript thing.

02:45:10.320 --> 02:45:12.320
Just follow that. It's a beautiful

02:45:12.320 --> 02:45:14.320
free thing. You should use it. FreeCodeCamp

02:45:14.320 --> 02:45:16.320
is a good one. Another free

02:45:16.320 --> 02:45:18.320
resource is Khan Academy.

02:45:18.320 --> 02:45:20.320
It is something that is

02:45:20.320 --> 02:45:22.320
absolutely brilliant and awesome

02:45:22.320 --> 02:45:24.320
and I use it even today.

02:45:24.320 --> 02:45:26.320
Khan Academy.

02:45:26.320 --> 02:45:28.320
You may have heard of it.

02:45:34.320 --> 02:45:36.320
Yes, Pratyush.

02:45:36.320 --> 02:45:38.320
Yeah, let Vijay go first.

02:45:38.320 --> 02:45:40.320
Okay, Vijay.

02:45:40.320 --> 02:45:42.320
Okay, I was

02:45:42.320 --> 02:45:44.320
going to ask or

02:45:44.320 --> 02:45:46.320
add that if I

02:45:46.320 --> 02:45:48.320
heard him correctly, he was saying that he

02:45:48.320 --> 02:45:50.320
watched the tutorial for six hours

02:45:50.320 --> 02:45:52.320
and was still stuck.

02:45:52.320 --> 02:45:54.320
So one thing I wanted to clarify that

02:45:54.320 --> 02:45:56.320
if you are trying to

02:45:56.320 --> 02:45:58.320
process everything, if the

02:45:58.320 --> 02:46:00.320
tutorial itself is six hours long, meaning

02:46:00.320 --> 02:46:02.320
that it was covering a lot of topics

02:46:02.320 --> 02:46:04.320
and if you're trying to cover or digest

02:46:04.320 --> 02:46:06.320
everything at once,

02:46:06.320 --> 02:46:08.320
that might feel overwhelming.

02:46:08.320 --> 02:46:10.320
So I would say if that's what you're facing, you should

02:46:10.320 --> 02:46:12.320
also kind of break it down, like

02:46:12.320 --> 02:46:14.320
learn one small or basic

02:46:14.320 --> 02:46:16.320
concept, experiment with that,

02:46:16.320 --> 02:46:18.320
experiment with that, kind of implement

02:46:18.320 --> 02:46:20.320
that and kind of get understanding and then move

02:46:20.320 --> 02:46:22.320
on to the next one rather than trying

02:46:22.320 --> 02:46:24.320
to learn the whole JavaScript in

02:46:24.320 --> 02:46:26.320
six hours. But I'm not sure if that's what

02:46:26.320 --> 02:46:28.320
you were doing. I'm just

02:46:28.320 --> 02:46:30.320
assuming that if that's one of the problems,

02:46:30.320 --> 02:46:34.320
then you should break it.

02:46:42.320 --> 02:46:44.320
I think that was a good answer, Vijay. Thank you.

02:46:44.320 --> 02:46:46.320
And so there is a question from

02:46:46.320 --> 02:46:48.320
Suman Giri

02:46:48.320 --> 02:46:50.320
about where do I find a Spotify

02:46:50.320 --> 02:46:52.320
podcast? So you go to my website

02:46:52.320 --> 02:46:54.320
and that's where you'll find at the bottom,

02:46:54.320 --> 02:46:56.320
very bottom you'll see a Spotify link.

02:46:56.320 --> 02:46:58.320
That's where the Spotify

02:46:58.320 --> 02:47:00.320
podcast is. You can see

02:47:00.320 --> 02:47:02.320
it right there. My website should be

02:47:02.320 --> 02:47:04.320
on my profile.

02:47:06.320 --> 02:47:08.320
This question was in DM, by the way.

02:47:10.320 --> 02:47:12.320
For Suman Giri

02:47:12.320 --> 02:47:14.320
from Nepal.

02:47:16.320 --> 02:47:18.320
So Bawuk has this question and I would like

02:47:18.320 --> 02:47:20.320
to take up his question, which is he

02:47:20.320 --> 02:47:22.320
I think put on Nest. The question

02:47:22.320 --> 02:47:24.320
needs some background. The background

02:47:24.320 --> 02:47:26.320
is a video that you have to watch for 16

02:47:26.320 --> 02:47:28.320
minutes to understand the context. I'll give you

02:47:28.320 --> 02:47:30.320
a short summary. The summary

02:47:30.320 --> 02:47:32.320
is how do you invest?

02:47:32.320 --> 02:47:34.320
What do you invest in? And so

02:47:34.320 --> 02:47:36.320
the story in that video is going about

02:47:36.320 --> 02:47:38.320
flipping a coin and you flip a coin

02:47:38.320 --> 02:47:40.320
and if you had you win

02:47:40.320 --> 02:47:42.320
50% chance of winning

02:47:42.320 --> 02:47:44.320
and the other way is

02:47:44.320 --> 02:47:46.320
you have 40% chance of losing.

02:47:46.320 --> 02:47:48.320
So it's not a fair game.

02:47:48.320 --> 02:47:50.320
Actually, it's a better than fair game.

02:47:50.320 --> 02:47:52.320
So flip, flip, flip, 50

02:47:52.320 --> 02:47:54.320
chance of win, 40 chance of lose.

02:47:54.320 --> 02:47:56.320
And if you keep playing that game

02:47:56.320 --> 02:47:58.320
what do you think will happen?

02:48:00.320 --> 02:48:02.320
Over time?

02:48:02.320 --> 02:48:04.320
Anybody? Any guesses?

02:48:04.320 --> 02:48:06.320
The average

02:48:06.320 --> 02:48:08.320
outcome is that you'll win is what

02:48:08.320 --> 02:48:10.320
rational thinking tells us.

02:48:10.320 --> 02:48:12.320
Yes. But what should

02:48:12.320 --> 02:48:14.320
you be doing? Should you keep playing that one

02:48:14.320 --> 02:48:16.320
game forever?

02:48:16.320 --> 02:48:18.320
No. You should not.

02:48:18.320 --> 02:48:20.320
What you instead should do

02:48:20.320 --> 02:48:22.320
and that's the answer to the question that

02:48:22.320 --> 02:48:24.320
Bhavak is asking or wanting to ask

02:48:24.320 --> 02:48:26.320
implicitly is

02:48:26.320 --> 02:48:28.320
you want to play multiple such games

02:48:28.320 --> 02:48:30.320
simultaneously. That's the origin

02:48:30.320 --> 02:48:32.320
of what is called portfolio theory

02:48:32.320 --> 02:48:34.320
of modern portfolio theory.

02:48:34.320 --> 02:48:36.320
If you can read up on that. It's a

02:48:36.320 --> 02:48:38.320
MBA finance question

02:48:38.320 --> 02:48:40.320
topic. Portfolio theory

02:48:40.320 --> 02:48:42.320
is the topic of discussion

02:48:42.320 --> 02:48:44.320
in which there are certain phrases that I think I

02:48:44.320 --> 02:48:46.320
already wrote to Bhavak a while ago.

02:48:46.320 --> 02:48:48.320
The phrases I'm going to

02:48:48.320 --> 02:48:50.320
enumerate them. One of them

02:48:50.320 --> 02:48:52.320
is efficient frontier.

02:48:52.320 --> 02:48:54.320
Efficient frontier.

02:48:54.320 --> 02:48:56.320
These are finance topics

02:48:56.320 --> 02:48:58.320
not technology topics but I'm just saying

02:48:58.320 --> 02:49:00.320
out loud so you can Google them

02:49:00.320 --> 02:49:02.320
or study them on your own.

02:49:02.320 --> 02:49:04.320
These are related to how you

02:49:04.320 --> 02:49:06.320
make investment decisions for yourself.

02:49:06.320 --> 02:49:08.320
To understand what efficient frontier

02:49:08.320 --> 02:49:10.320
is. I'm not going to go detail in that

02:49:10.320 --> 02:49:12.320
topic because it's way too much nerdy

02:49:12.320 --> 02:49:14.320
in finance. I'll not do that right now.

02:49:14.320 --> 02:49:16.320
But learn these things on your own

02:49:16.320 --> 02:49:18.320
by doing Wikipedia searches.

02:49:18.320 --> 02:49:20.320
Portfolio analysis.

02:49:20.320 --> 02:49:22.320
Modern portfolio theory.

02:49:22.320 --> 02:49:24.320
Efficient

02:49:24.320 --> 02:49:26.320
frontier.

02:49:26.320 --> 02:49:28.320
Risk free rate.

02:49:28.320 --> 02:49:30.320
Understand

02:49:30.320 --> 02:49:32.320
Bitcoin.

02:49:32.320 --> 02:49:34.320
Understand the federal

02:49:34.320 --> 02:49:36.320
reserve. See what is happening

02:49:36.320 --> 02:49:38.320
in the global

02:49:38.320 --> 02:49:40.320
economy. See what is

02:49:40.320 --> 02:49:42.320
happening in the US economy.

02:49:42.320 --> 02:49:44.320
See what is happening in your country

02:49:44.320 --> 02:49:46.320
economy. These are big topics

02:49:46.320 --> 02:49:48.320
and it takes a lot of time to read

02:49:48.320 --> 02:49:50.320
but you should.

02:49:50.320 --> 02:49:52.320
If you don't read and don't understand

02:49:52.320 --> 02:49:54.320
you will be playing in

02:49:54.320 --> 02:49:56.320
the dark. So read

02:49:56.320 --> 02:49:58.320
understand. Experiment

02:49:58.320 --> 02:50:00.320
small and experiment

02:50:00.320 --> 02:50:02.320
a lot.

02:50:02.320 --> 02:50:04.320
Lots of small experiments. It's a good

02:50:04.320 --> 02:50:06.320
thing. You will lose some, you will

02:50:06.320 --> 02:50:08.320
win some. I told you about

02:50:08.320 --> 02:50:10.320
VC. How do VCs invest?

02:50:10.320 --> 02:50:12.320
$100 million. They don't put

02:50:12.320 --> 02:50:14.320
all that money in one company, one startup.

02:50:14.320 --> 02:50:16.320
They spread it.

02:50:16.320 --> 02:50:18.320
Spread the risk.

02:50:18.320 --> 02:50:20.320
And when you go work for one company

02:50:20.320 --> 02:50:22.320
you are actually betting on that one

02:50:22.320 --> 02:50:24.320
company's success.

02:50:24.320 --> 02:50:26.320
You are actually doing the opposite of what the VC

02:50:26.320 --> 02:50:28.320
does. What VC is doing is

02:50:28.320 --> 02:50:30.320
spreading the risk. You are taking on all

02:50:30.320 --> 02:50:32.320
the risk in one company. You want

02:50:32.320 --> 02:50:34.320
to spread your risk in multiple

02:50:34.320 --> 02:50:36.320
projects.

02:50:36.320 --> 02:50:38.320
Multiple things you do in your life

02:50:38.320 --> 02:50:40.320
to optimize your portfolio.

02:50:40.320 --> 02:50:42.320
To reach the optimal outcome.

02:50:42.320 --> 02:50:44.320
And that's how

02:50:44.320 --> 02:50:46.320
the answer to Bhavak's question

02:50:46.320 --> 02:50:48.320
in your nest.

02:50:48.320 --> 02:50:50.320
There may be

02:50:50.320 --> 02:50:52.320
other questions that Bhavak has. So go ahead

02:50:52.320 --> 02:50:54.320
and ask them.

02:50:54.320 --> 02:50:56.320
Another

02:50:56.320 --> 02:50:58.320
one of the questions was

02:50:58.320 --> 02:51:00.320
at age 40, I'm not sure

02:51:00.320 --> 02:51:02.320
if you will remember, what

02:51:02.320 --> 02:51:04.320
was your portfolio looking like?

02:51:04.320 --> 02:51:06.320
I explained this in one of the replies

02:51:06.320 --> 02:51:08.320
to that tweet as well.

02:51:08.320 --> 02:51:10.320
One is your company.

02:51:10.320 --> 02:51:12.320
I believe you were running

02:51:12.320 --> 02:51:14.320
courses there. And I believe

02:51:14.320 --> 02:51:16.320
I'm just assuming here that you might have some stock

02:51:16.320 --> 02:51:18.320
options from the company that you worked for.

02:51:18.320 --> 02:51:20.320
So these are the two obvious ones.

02:51:20.320 --> 02:51:22.320
But what else?

02:51:22.320 --> 02:51:24.320
So

02:51:24.320 --> 02:51:26.320
I understand.

02:51:26.320 --> 02:51:28.320
I think I would like you to mute.

02:51:28.320 --> 02:51:30.320
Please mute.

02:51:30.320 --> 02:51:32.320
The Microsoft company

02:51:32.320 --> 02:51:34.320
or any company in the US these days does

02:51:34.320 --> 02:51:36.320
not give you stock options. They don't.

02:51:36.320 --> 02:51:38.320
They just stop doing it like

02:51:38.320 --> 02:51:40.320
before I came to the US.

02:51:40.320 --> 02:51:42.320
So the tradition of giving stock options

02:51:42.320 --> 02:51:44.320
is stopped. They don't.

02:51:44.320 --> 02:51:46.320
What they do give you

02:51:46.320 --> 02:51:48.320
is stock grant.

02:51:48.320 --> 02:51:50.320
And you get a lot of grant, depending on

02:51:50.320 --> 02:51:52.320
what you're working on. So the grant

02:51:52.320 --> 02:51:54.320
is basically a grant of stock.

02:51:54.320 --> 02:51:56.320
And what I used to do is I

02:51:56.320 --> 02:51:58.320
immediately sell all the Microsoft stock.

02:51:58.320 --> 02:52:00.320
All of it.

02:52:00.320 --> 02:52:02.320
And buy Apple.

02:52:02.320 --> 02:52:04.320
That's what I did.

02:52:04.320 --> 02:52:06.320
Now

02:52:06.320 --> 02:52:08.320
doesn't mean that this is the right approach.

02:52:08.320 --> 02:52:10.320
But I'm just telling you what I did.

02:52:10.320 --> 02:52:12.320
Because you asked me that question.

02:52:14.320 --> 02:52:16.320
That's not the right approach by the way.

02:52:16.320 --> 02:52:18.320
That is not

02:52:18.320 --> 02:52:20.320
the right approach. Because it is like putting all

02:52:20.320 --> 02:52:22.320
your eggs in one basket. It's like

02:52:22.320 --> 02:52:24.320
you know, taking a big risk.

02:52:24.320 --> 02:52:26.320
Taking a bet. Taking one

02:52:26.320 --> 02:52:28.320
bet is bad. Taking

02:52:28.320 --> 02:52:30.320
lots of bets, good.

02:52:32.320 --> 02:52:34.320
Good bets. Take lots of

02:52:34.320 --> 02:52:36.320
good bets. You think something

02:52:36.320 --> 02:52:38.320
is good, that's why it makes it good. But it

02:52:38.320 --> 02:52:40.320
may turn out to be bad after the fact.

02:52:40.320 --> 02:52:42.320
And that's okay.

02:52:46.320 --> 02:52:48.320
So that was your portfolio?

02:52:48.320 --> 02:52:50.320
Like Apple stock?

02:52:50.320 --> 02:52:52.320
Yes.

02:52:52.320 --> 02:52:54.320
Okay.

02:52:54.320 --> 02:52:56.320
Alright. I think that

02:52:56.320 --> 02:52:58.320
played really well in your favor.

02:52:58.320 --> 02:53:00.320
Yes it did.

02:53:00.320 --> 02:53:02.320
And these days my son

02:53:02.320 --> 02:53:04.320
works at Apple.

02:53:04.320 --> 02:53:06.320
For five years or so.

02:53:06.320 --> 02:53:08.320
So that turned out to be really good

02:53:08.320 --> 02:53:10.320
even for him.

02:53:12.320 --> 02:53:14.320
Got it. I think that does make sense.

02:53:16.320 --> 02:53:18.320
But the challenge

02:53:18.320 --> 02:53:20.320
is most people will not do it that way.

02:53:20.320 --> 02:53:22.320
When I was at Microsoft I used to

02:53:22.320 --> 02:53:24.320
tell people I have everything in Apple.

02:53:24.320 --> 02:53:26.320
They laugh at me.

02:53:26.320 --> 02:53:28.320
I said fine. You can keep

02:53:28.320 --> 02:53:30.320
laughing. But I believe that this is

02:53:30.320 --> 02:53:32.320
a good company because they make products that

02:53:32.320 --> 02:53:34.320
people actually use.

02:53:34.320 --> 02:53:36.320
And therefore I keep investing.

02:53:38.320 --> 02:53:40.320
That's it.

02:53:40.320 --> 02:53:42.320
I just love their packaging design

02:53:42.320 --> 02:53:44.320
to be honest. Like how they package all this stuff.

02:53:44.320 --> 02:53:46.320
Packaging is part of the game.

02:53:46.320 --> 02:53:48.320
Packaging is a side topic. Yes. And packaging is

02:53:48.320 --> 02:53:50.320
part of the game. But the best thing that I

02:53:50.320 --> 02:53:52.320
find useful about Apple is

02:53:52.320 --> 02:53:54.320
how people use the product.

02:53:54.320 --> 02:53:56.320
It's not about the product.

02:53:56.320 --> 02:53:58.320
It's about how people use it.

02:53:58.320 --> 02:54:00.320
That is the best part.

02:54:02.320 --> 02:54:04.320
Yup.

02:54:04.320 --> 02:54:06.320
Actually I was using Apple products right away before

02:54:06.320 --> 02:54:08.320
I switched to this one before they charged up.

02:54:08.320 --> 02:54:10.320
But that's an off topic.

02:54:10.320 --> 02:54:12.320
Vijay, you want to add something?

02:54:12.320 --> 02:54:14.320
Yeah. Just a side note to what

02:54:14.320 --> 02:54:16.320
Neelay said.

02:54:16.320 --> 02:54:18.320
Also some companies and Microsoft

02:54:18.320 --> 02:54:20.320
is one of them offer you

02:54:20.320 --> 02:54:22.320
something called Employee Stock Purchase Plan.

02:54:22.320 --> 02:54:24.320
So you can buy

02:54:24.320 --> 02:54:26.320
Microsoft shares at a discount.

02:54:26.320 --> 02:54:28.320
And you can then

02:54:28.320 --> 02:54:30.320
immediately sell them.

02:54:30.320 --> 02:54:32.320
Immediately meaning not the same day

02:54:32.320 --> 02:54:34.320
maybe there is some restriction. So that also

02:54:34.320 --> 02:54:36.320
I think can work really well for

02:54:36.320 --> 02:54:38.320
some of the people working at some companies

02:54:38.320 --> 02:54:40.320
who offer that. Google doesn't.

02:54:40.320 --> 02:54:42.320
Amazon doesn't. But Microsoft does.

02:54:42.320 --> 02:54:44.320
So that's almost like a

02:54:44.320 --> 02:54:46.320
short way of making some money if the

02:54:46.320 --> 02:54:48.320
stock is not too volatile.

02:54:48.320 --> 02:54:50.320
Just a side note to what

02:54:50.320 --> 02:54:52.320
Neelay was saying.

02:54:52.320 --> 02:54:54.320
By the way this approach that Vijay

02:54:54.320 --> 02:54:56.320
is suggesting is a very valid one.

02:54:56.320 --> 02:54:58.320
Make maximum use of what the company gives you.

02:54:58.320 --> 02:55:00.320
ESPP is called

02:55:00.320 --> 02:55:02.320
Employee Stock Purchase Plan.

02:55:02.320 --> 02:55:04.320
Use that. Employee Stock Grant.

02:55:04.320 --> 02:55:06.320
Use that. Any other thing that the

02:55:06.320 --> 02:55:08.320
company gives you, take it.

02:55:08.320 --> 02:55:10.320
Some people miss on the idea of

02:55:10.320 --> 02:55:12.320
what is called 401k

02:55:12.320 --> 02:55:14.320
company contribution.

02:55:14.320 --> 02:55:16.320
Take that. People just don't know these things.

02:55:16.320 --> 02:55:18.320
So just take it. Take whatever they give you.

02:55:18.320 --> 02:55:20.320
Make full use of it.

02:55:20.320 --> 02:55:22.320
And then you take bets.

02:55:22.320 --> 02:55:24.320
You take bets in good things and

02:55:24.320 --> 02:55:26.320
don't do like I did. But you take good

02:55:26.320 --> 02:55:28.320
bets in like 10 companies,

02:55:28.320 --> 02:55:30.320
20 companies, maybe more, maybe less.

02:55:30.320 --> 02:55:32.320
And then

02:55:32.320 --> 02:55:34.320
build a portfolio yourself after

02:55:34.320 --> 02:55:36.320
you research yourself. It's a hard

02:55:36.320 --> 02:55:38.320
task to ask somebody

02:55:38.320 --> 02:55:40.320
to research 10 companies.

02:55:40.320 --> 02:55:42.320
It's a lot of work. It's a full time

02:55:42.320 --> 02:55:44.320
job. To manage money itself

02:55:44.320 --> 02:55:46.320
is a full time job.

02:55:46.320 --> 02:55:48.320
That's hard. Managing

02:55:48.320 --> 02:55:50.320
money itself, you know, it is

02:55:50.320 --> 02:55:52.320
hard. You know, there are companies who do that

02:55:52.320 --> 02:55:54.320
for a big amount of money

02:55:54.320 --> 02:55:56.320
people charge just to manage your money.

02:55:56.320 --> 02:55:58.320
It is hard. And even

02:55:58.320 --> 02:56:00.320
then they suck.

02:56:00.320 --> 02:56:02.320
Everybody sucks.

02:56:02.320 --> 02:56:04.320
That's a fact of life. Nobody knows what's happening

02:56:04.320 --> 02:56:06.320
in the market in the future. Nobody can

02:56:06.320 --> 02:56:08.320
tell you. If anybody knows

02:56:08.320 --> 02:56:10.320
what is going to happen tomorrow,

02:56:10.320 --> 02:56:12.320
well, I'll beat Elon Musk

02:56:12.320 --> 02:56:14.320
right now.

02:56:14.320 --> 02:56:16.320
If I know what's happening tomorrow,

02:56:16.320 --> 02:56:18.320
I know how to beat

02:56:18.320 --> 02:56:20.320
him. If I knew.

02:56:22.320 --> 02:56:24.320
Also,

02:56:24.320 --> 02:56:26.320
I think something that you said needs to be

02:56:26.320 --> 02:56:28.320
highlighted one more time.

02:56:28.320 --> 02:56:30.320
You said it very wisely about

02:56:30.320 --> 02:56:32.320
portfolio optimization.

02:56:32.320 --> 02:56:34.320
And it is not maximization.

02:56:34.320 --> 02:56:36.320
You don't necessarily have to

02:56:36.320 --> 02:56:38.320
always look at maximizing your

02:56:38.320 --> 02:56:40.320
money because there is always higher risk,

02:56:40.320 --> 02:56:42.320
higher return or higher reward. But it

02:56:42.320 --> 02:56:44.320
depends on your own risk appetite.

02:56:44.320 --> 02:56:46.320
You have to optimize for your own situation.

02:56:46.320 --> 02:56:48.320
Not necessarily always go against

02:56:48.320 --> 02:56:50.320
what is going to give me the highest

02:56:50.320 --> 02:56:52.320
return. Yes, because highest

02:56:52.320 --> 02:56:54.320
returns usually come with highest risk.

02:56:54.320 --> 02:56:56.320
And not everybody has

02:56:56.320 --> 02:56:58.320
the same risk tolerance.

02:56:58.320 --> 02:57:00.320
So risk and reward go

02:57:00.320 --> 02:57:02.320
together.

02:57:02.320 --> 02:57:04.320
It's like, you know, go to Las Vegas

02:57:04.320 --> 02:57:06.320
and do a betting

02:57:06.320 --> 02:57:08.320
on some stupid game there.

02:57:08.320 --> 02:57:10.320
Las Vegas is a

02:57:10.320 --> 02:57:14.320
casino.

02:57:14.320 --> 02:57:16.320
So I go to the casino.

02:57:16.320 --> 02:57:18.320
I go to Las Vegas. Every time I go

02:57:18.320 --> 02:57:20.320
there, I play a game, one machine.

02:57:20.320 --> 02:57:22.320
I'm my favorite machine there.

02:57:22.320 --> 02:57:24.320
I'll tell you about that machine. It's a very

02:57:24.320 --> 02:57:26.320
beautiful machine. It gives me four

02:57:26.320 --> 02:57:28.320
quarters.

02:57:28.320 --> 02:57:30.320
Quarter is like 25 cents.

02:57:30.320 --> 02:57:32.320
Every single time

02:57:32.320 --> 02:57:34.320
I put in a dollar,

02:57:34.320 --> 02:57:36.320
it gives me four quarters back.

02:57:38.320 --> 02:57:40.320
Every single time.

02:57:40.320 --> 02:57:42.320
Best machine on the planet in

02:57:42.320 --> 02:57:44.320
Las Vegas is that machine.

02:57:44.320 --> 02:57:46.320
What is that machine called?

02:57:46.320 --> 02:57:48.320
Do you know?

02:57:48.320 --> 02:57:50.320
It's a slot machine.

02:57:50.320 --> 02:57:52.320
Coin vending machine?

02:57:52.320 --> 02:57:54.320
Who was that saying?

02:57:54.320 --> 02:57:56.320
Babuk?

02:57:56.320 --> 02:57:58.320
Coin vending machine?

02:57:58.320 --> 02:58:00.320
Yes, it's also called change machine.

02:58:00.320 --> 02:58:02.320
It gives you change.

02:58:02.320 --> 02:58:04.320
It gives you change.

02:58:04.320 --> 02:58:06.320
It gives you one rupee, two, four, fifty.

02:58:06.320 --> 02:58:08.320
That is my favorite machine.

02:58:08.320 --> 02:58:10.320
Basically, it has zero risk and zero reward.

02:58:10.320 --> 02:58:12.320
Put one rupee in, one rupee out.

02:58:12.320 --> 02:58:14.320
Four quarters back.

02:58:14.320 --> 02:58:16.320
One put one dollar, get four quarters

02:58:16.320 --> 02:58:18.320
back every single time without fail.

02:58:18.320 --> 02:58:20.320
No risk.

02:58:20.320 --> 02:58:22.320
And no return. Zero risk, zero

02:58:22.320 --> 02:58:24.320
return. That's the idea

02:58:24.320 --> 02:58:26.320
of risk at the low profile. On the

02:58:26.320 --> 02:58:28.320
high risk, when you go

02:58:28.320 --> 02:58:30.320
play some random slot machine in Las

02:58:30.320 --> 02:58:32.320
Vegas, put some money, nothing comes

02:58:32.320 --> 02:58:34.320
out. Put more money, nothing comes out.

02:58:34.320 --> 02:58:36.320
Because it will never come out.

02:58:36.320 --> 02:58:38.320
Maybe never is not the right word.

02:58:38.320 --> 02:58:40.320
Once in a blue moon, it might come

02:58:40.320 --> 02:58:42.320
something and you might win something.

02:58:42.320 --> 02:58:44.320
But that's a rare thing.

02:58:44.320 --> 02:58:46.320
That's a very high risk and

02:58:46.320 --> 02:58:48.320
very high reward situation.

02:58:48.320 --> 02:58:50.320
Again, same in Las Vegas.

02:58:50.320 --> 02:58:52.320
There are two extremes in Las Vegas.

02:58:52.320 --> 02:58:54.320
The change machine that I mentioned about.

02:58:54.320 --> 02:58:56.320
Put one dollar, get four quarters back.

02:58:56.320 --> 02:58:58.320
Zero risk, zero return.

02:58:58.320 --> 02:59:00.320
Extreme risk.

02:59:00.320 --> 02:59:02.320
Bet money and win big.

02:59:02.320 --> 02:59:04.320
Or win nothing.

02:59:04.320 --> 02:59:06.320
Win nothing is the most likely scenario.

02:59:06.320 --> 02:59:08.320
Win big is a possible rare

02:59:08.320 --> 02:59:10.320
case. So high risk, high reward.

02:59:10.320 --> 02:59:12.320
And those

02:59:12.320 --> 02:59:14.320
are legal things. There are certain

02:59:14.320 --> 02:59:16.320
things that are beyond legal, illegal things.

02:59:16.320 --> 02:59:18.320
Like stealing and theft.

02:59:18.320 --> 02:59:20.320
You can also go and steal

02:59:20.320 --> 02:59:22.320
a bank.

02:59:22.320 --> 02:59:24.320
Like completely do robbery.

02:59:24.320 --> 02:59:26.320
It's a very high risk. It might

02:59:26.320 --> 02:59:28.320
have a high reward. So you have to

02:59:28.320 --> 02:59:30.320
balance your risk and reward as to

02:59:30.320 --> 02:59:32.320
where you sit on the line

02:59:32.320 --> 02:59:34.320
on the efficient frontier. That's what

02:59:34.320 --> 02:59:36.320
efficient frontier means by the way.

02:59:36.320 --> 02:59:38.320
I think I mentioned the word efficient frontier.

02:59:38.320 --> 02:59:40.320
It's basically a graph of risk versus reward.

02:59:46.320 --> 02:59:48.320
Next question Bhavuk.

02:59:50.320 --> 02:59:52.320
I don't have currently

02:59:52.320 --> 02:59:54.320
anything on me.

02:59:54.320 --> 02:59:56.320
Then we'll open it to anybody else

02:59:56.320 --> 03:00:04.320
who has or may have any question.

03:00:04.320 --> 03:00:06.320
If you want to ask

03:00:06.320 --> 03:00:08.320
something to request for Mike.

03:00:08.320 --> 03:00:10.320
Somebody just did. Vikas Vakde.

03:00:10.320 --> 03:00:12.320
Hi.

03:00:16.320 --> 03:00:18.320
While he asks, I will head to my

03:00:18.320 --> 03:00:20.320
next meeting now. Good to see you

03:00:20.320 --> 03:00:22.320
again.

03:00:22.320 --> 03:00:24.320
This is more interesting than

03:00:24.320 --> 03:00:26.320
a meeting. So I have to jump.

03:00:26.320 --> 03:00:28.320
I have to go to the meeting as well.

03:00:30.320 --> 03:00:32.320
Bye folks.

03:00:32.320 --> 03:00:34.320
Hi Vikas.

03:00:34.320 --> 03:00:36.320
My question was how to manage our health

03:00:36.320 --> 03:00:38.320
in this technology field.

03:00:40.320 --> 03:00:42.320
It's a very good topic.

03:00:42.320 --> 03:00:44.320
The way to manage health

03:00:44.320 --> 03:00:46.320
is to shut up, get up and

03:00:46.320 --> 03:00:48.320
do it. You know what to do.

03:00:48.320 --> 03:00:50.320
That's the hardest thing to do.

03:00:50.320 --> 03:00:52.320
I know. You remind me to get up.

03:00:52.320 --> 03:00:54.320
You remind me to go get up and actually do something

03:00:54.320 --> 03:00:56.320
for today because yesterday

03:00:56.320 --> 03:00:58.320
I did skipping on a rope.

03:01:00.320 --> 03:01:02.320
And I'll do it today again.

03:01:02.320 --> 03:01:04.320
Or maybe go to the gym.

03:01:04.320 --> 03:01:06.320
Afternoon.

03:01:08.320 --> 03:01:10.320
But you have to do it.

03:01:10.320 --> 03:01:12.320
And you have to do it consistently

03:01:12.320 --> 03:01:14.320
inconsistent. Meaning some

03:01:14.320 --> 03:01:16.320
days you do more, some days you do less.

03:01:16.320 --> 03:01:18.320
That is inconsistency.

03:01:18.320 --> 03:01:20.320
But you do it every day.

03:01:20.320 --> 03:01:22.320
And that is consistency.

03:01:22.320 --> 03:01:24.320
So be consistently inconsistent.

03:01:26.320 --> 03:01:28.320
Because nobody can do exactly the same thing

03:01:28.320 --> 03:01:30.320
every single day. That's impossible.

03:01:30.320 --> 03:01:32.320
That's what I mean by consistency

03:01:32.320 --> 03:01:34.320
is to do consistency.

03:01:34.320 --> 03:01:36.320
You know inconsistent

03:01:36.320 --> 03:01:38.320
things consistently.

03:01:38.320 --> 03:01:40.320
Keep doing whatever it takes.

03:01:40.320 --> 03:01:46.320
That's also okay.

03:01:46.320 --> 03:01:48.320
Chicken, mutton,

03:01:48.320 --> 03:01:50.320
whatever you want to eat, drink,

03:01:50.320 --> 03:01:52.320
have fun. Do that too.

03:01:52.320 --> 03:01:54.320
That's how it is.

03:01:58.320 --> 03:02:00.320
Sir, any tips on time management?

03:02:04.320 --> 03:02:06.320
The best tip of time management is to

03:02:06.320 --> 03:02:08.320
ignore your calendar.

03:02:08.320 --> 03:02:10.320
I know it's impossible for most people.

03:02:12.320 --> 03:02:14.320
But don't book a meeting.

03:02:14.320 --> 03:02:16.320
The time opens automatically.

03:02:16.320 --> 03:02:18.320
I mean what I'm saying in English

03:02:18.320 --> 03:02:20.320
is you don't take meetings.

03:02:20.320 --> 03:02:22.320
Very rarely

03:02:22.320 --> 03:02:24.320
I don't book

03:02:24.320 --> 03:02:26.320
specific meetings for a specific time.

03:02:26.320 --> 03:02:28.320
Unless today like we did this at

03:02:28.320 --> 03:02:30.320
the set time I announced it and I'm here.

03:02:30.320 --> 03:02:32.320
But that's a rare thing

03:02:32.320 --> 03:02:34.320
for me. I never book meetings.

03:02:34.320 --> 03:02:36.320
Unless there is a requirement

03:02:36.320 --> 03:02:38.320
that I put on myself.

03:02:38.320 --> 03:02:40.320
But not everybody has the flexibility.

03:02:40.320 --> 03:02:42.320
You have this stupid thing called meetings

03:02:42.320 --> 03:02:44.320
that you just have to do if you're working

03:02:44.320 --> 03:02:46.320
for a company or employer.

03:02:46.320 --> 03:02:48.320
The trick that you can play there

03:02:48.320 --> 03:02:50.320
is to

03:02:50.320 --> 03:02:52.320
organize meetings for 37

03:02:52.320 --> 03:02:54.320
minutes or 21

03:02:54.320 --> 03:02:56.320
minutes.

03:02:56.320 --> 03:02:58.320
It's a weird idea that I just gave you.

03:02:58.320 --> 03:03:00.320
Don't book for the full hour or full one hour

03:03:00.320 --> 03:03:02.320
or 30 minutes. Just do it for like

03:03:02.320 --> 03:03:04.320
I need 12 minutes for this meeting.

03:03:04.320 --> 03:03:06.320
I book it only for that time.

03:03:06.320 --> 03:03:08.320
And then everybody is in

03:03:08.320 --> 03:03:10.320
a rush to get out of the room at the end

03:03:10.320 --> 03:03:12.320
of 12 minutes. So what you will

03:03:12.320 --> 03:03:14.320
end up doing is finish the meeting before

03:03:14.320 --> 03:03:16.320
that. Otherwise you go away.

03:03:16.320 --> 03:03:18.320
That's it.

03:03:18.320 --> 03:03:20.320
That's how you should regulate yourself

03:03:20.320 --> 03:03:22.320
in a corporate situation.

03:03:22.320 --> 03:03:24.320
First of all reject

03:03:24.320 --> 03:03:26.320
any meeting invitation unless

03:03:26.320 --> 03:03:28.320
it has a clear goal as to what you want to accomplish.

03:03:30.320 --> 03:03:32.320
And then reduce

03:03:32.320 --> 03:03:34.320
the time it takes to actually have

03:03:34.320 --> 03:03:36.320
the meeting itself to an odd number.

03:03:36.320 --> 03:03:38.320
I will meet for

03:03:38.320 --> 03:03:40.320
12 minutes with you. That's it.

03:03:40.320 --> 03:03:42.320
Or let us be collaborative

03:03:42.320 --> 03:03:44.320
and agree to finish the meeting

03:03:44.320 --> 03:03:46.320
in 17 minutes because I have

03:03:46.320 --> 03:03:48.320
to go eat some

03:03:48.320 --> 03:03:50.320
paan or chai ki dukaan or something

03:03:50.320 --> 03:03:52.320
like that. Some random things.

03:03:52.320 --> 03:03:54.320
Make some random excuse and shrink

03:03:54.320 --> 03:03:56.320
the meeting time

03:03:56.320 --> 03:04:06.320
because meeting is a necessary evil.

03:04:06.320 --> 03:04:08.320
Does this help Vikas?

03:04:08.320 --> 03:04:10.320
Yes sir.

03:04:10.320 --> 03:04:12.320
Yes sir.

03:04:12.320 --> 03:04:14.320
Yes sir.

03:04:14.320 --> 03:04:16.320
Yes sir.

03:04:16.320 --> 03:04:18.320
Yes sir.

03:04:18.320 --> 03:04:20.320
Yes sir.

03:04:20.320 --> 03:04:22.320
Yes sir.

03:04:22.320 --> 03:04:24.320
Yes sir.

03:04:24.320 --> 03:04:26.320
Yes sir.

03:04:26.320 --> 03:04:28.320
Yes sir. Point is clear.

03:04:28.320 --> 03:04:30.320
Again one question.

03:04:30.320 --> 03:04:32.320
How to stay updated to this technology

03:04:32.320 --> 03:04:34.320
that is coming nowadays here?

03:04:34.320 --> 03:04:36.320
How to upskill ourselves

03:04:36.320 --> 03:04:38.320
according to that?

03:04:38.320 --> 03:04:40.320
The best way to upskill is to actually use it.

03:04:40.320 --> 03:04:42.320
Just

03:04:42.320 --> 03:04:44.320
whatever new thing comes, use it.

03:04:44.320 --> 03:04:46.320
Try it out.

03:04:46.320 --> 03:04:48.320
That's the best way to keep you up to date.

03:04:48.320 --> 03:04:50.320
And do searches.

03:04:50.320 --> 03:04:52.320
Experiment.

03:04:52.320 --> 03:04:54.320
Discuss with it.

03:04:54.320 --> 03:04:56.320
Make mistakes.

03:04:56.320 --> 03:04:58.320
Talk to your friends. Tweet about it.

03:04:58.320 --> 03:05:00.320
Crack jokes.

03:05:00.320 --> 03:05:02.320
Make memes

03:05:02.320 --> 03:05:04.320
like you did. Thank you Vikas.

03:05:04.320 --> 03:05:06.320
You did a beautiful meme.

03:05:06.320 --> 03:05:08.320
That's how you do it.

03:05:12.320 --> 03:05:14.320
Sir I was learning

03:05:14.320 --> 03:05:16.320
this web development.

03:05:16.320 --> 03:05:18.320
Two months back I started with HTML

03:05:18.320 --> 03:05:20.320
and now currently I am learning CSS.

03:05:20.320 --> 03:05:22.320
As you told someone that example

03:05:22.320 --> 03:05:24.320
of FreeCodeCamp. I am learning from

03:05:24.320 --> 03:05:26.320
there only. But

03:05:26.320 --> 03:05:28.320
the learning

03:05:28.320 --> 03:05:30.320
I do for two or three hours

03:05:30.320 --> 03:05:32.320
and if I just ask chatgpt

03:05:32.320 --> 03:05:34.320
to give me that

03:05:34.320 --> 03:05:36.320
whatever I did for two hours

03:05:36.320 --> 03:05:38.320
it just gives in

03:05:38.320 --> 03:05:40.320
within seconds. Now then I fear

03:05:40.320 --> 03:05:42.320
means what I am doing

03:05:42.320 --> 03:05:44.320
that AI is doing it

03:05:44.320 --> 03:05:46.320
within seconds. Am I doing

03:05:46.320 --> 03:05:48.320
it right or what shall I do?

03:05:48.320 --> 03:05:50.320
That question. Yes.

03:05:50.320 --> 03:05:52.320
I think I understand your question. You get

03:05:52.320 --> 03:05:54.320
afraid of AI because AI can produce a result

03:05:54.320 --> 03:05:56.320
faster than you can. That is going to be

03:05:56.320 --> 03:05:58.320
a truth. It is going to happen.

03:05:58.320 --> 03:06:00.320
It is already happening. And I think I already

03:06:00.320 --> 03:06:02.320
briefly mentioned about this. Where a

03:06:02.320 --> 03:06:04.320
doctor is writing a report and takes

03:06:04.320 --> 03:06:06.320
eight hours. AI comes in

03:06:06.320 --> 03:06:08.320
and writes the report in few

03:06:08.320 --> 03:06:10.320
seconds.

03:06:10.320 --> 03:06:12.320
The problem with AI is it is

03:06:12.320 --> 03:06:14.320
confidently

03:06:14.320 --> 03:06:16.320
wrong.

03:06:16.320 --> 03:06:18.320
It is bullshitting sometimes.

03:06:18.320 --> 03:06:20.320
utter nonsense.

03:06:20.320 --> 03:06:22.320
Go search on

03:06:22.320 --> 03:06:24.320
tell me about LV Nilesh.

03:06:24.320 --> 03:06:26.320
Go do Bard search. You will see

03:06:26.320 --> 03:06:28.320
the results. Some of them are

03:06:28.320 --> 03:06:30.320
hilarious.

03:06:30.320 --> 03:06:32.320
I even tweeted that and there is a Twitter

03:06:32.320 --> 03:06:34.320
thread on this

03:06:34.320 --> 03:06:36.320
Bard knows shit about Nilesh.

03:06:36.320 --> 03:06:38.320
You can search it. But you will see

03:06:38.320 --> 03:06:40.320
that there are some things that it is writing

03:06:40.320 --> 03:06:42.320
like a McKinsey consultant bullshitting

03:06:42.320 --> 03:06:44.320
with confidence.

03:06:44.320 --> 03:06:46.320
So it will produce a quick result

03:06:46.320 --> 03:06:48.320
about, it will produce the whole

03:06:48.320 --> 03:06:50.320
bio data, complete biography of

03:06:50.320 --> 03:06:52.320
me with every single thing I did in my life.

03:06:52.320 --> 03:06:54.320
Pretty darn accurate.

03:06:54.320 --> 03:06:56.320
But there are some glaring mistakes

03:06:56.320 --> 03:06:58.320
I can easily detect.

03:06:58.320 --> 03:07:00.320
So if I want to write a summary for me,

03:07:00.320 --> 03:07:02.320
for myself, on my own,

03:07:02.320 --> 03:07:04.320
I have to go talk to my wife.

03:07:04.320 --> 03:07:06.320
Hey, what were

03:07:06.320 --> 03:07:08.320
we doing that day or what were

03:07:08.320 --> 03:07:10.320
we doing and we lived in that country and then

03:07:10.320 --> 03:07:12.320
summarize it, make grammatical mistakes,

03:07:12.320 --> 03:07:14.320
correct them, takes me time.

03:07:14.320 --> 03:07:16.320
Instead of just ask Bard, hey,

03:07:16.320 --> 03:07:18.320
tell me about Nilesh. It gives you a

03:07:18.320 --> 03:07:20.320
stupid answer. Then you are able to

03:07:20.320 --> 03:07:22.320
easily detect the mistakes. You fix

03:07:22.320 --> 03:07:24.320
them and you have a good summary.

03:07:24.320 --> 03:07:26.320
In like 10 minutes as opposed to taking

03:07:26.320 --> 03:07:28.320
two hours to write yourself.

03:07:28.320 --> 03:07:30.320
So that's the way you use AI.

03:07:30.320 --> 03:07:32.320
Is to push the envelope

03:07:32.320 --> 03:07:34.320
of speed versus

03:07:34.320 --> 03:07:42.320
accuracy.

03:07:42.320 --> 03:07:44.320
It's not going to take your job away.

03:07:44.320 --> 03:07:46.320
It's going to help you in speeding up

03:07:46.320 --> 03:07:48.320
things that you do.

03:07:48.320 --> 03:07:50.320
So you're writing JavaScript?

03:07:50.320 --> 03:07:52.320
Well, you can write a better JavaScript program

03:07:52.320 --> 03:07:54.320
faster than yourself alone by using

03:07:54.320 --> 03:07:56.320
Bard or ChatGPD

03:07:56.320 --> 03:07:58.320
or some other tool.

03:07:58.320 --> 03:08:00.320
To produce a result.

03:08:00.320 --> 03:08:04.320
It's like, yeah.

03:08:04.320 --> 03:08:06.320
Okay, now I got it right.

03:08:06.320 --> 03:08:08.320
So don't be afraid of AI.

03:08:08.320 --> 03:08:10.320
Use it.

03:08:10.320 --> 03:08:12.320
To speed yourself up.

03:08:12.320 --> 03:08:14.320
And even improve on what you

03:08:14.320 --> 03:08:26.320
already do.

03:08:26.320 --> 03:08:28.320
Okay. He'll be.

03:08:28.320 --> 03:08:32.320
Coming online.

03:08:32.320 --> 03:08:34.320
Yeah.

03:08:34.320 --> 03:08:36.320
Thank you.

03:08:36.320 --> 03:08:38.320
Hi, Shilpi.

03:08:38.320 --> 03:08:40.320
Hello, sir.

03:08:40.320 --> 03:08:42.320
Hi.

03:08:42.320 --> 03:08:44.320
So actually I wanted to ask

03:08:44.320 --> 03:08:46.320
a very typical Indian question.

03:08:48.320 --> 03:08:50.320
It's a very typical

03:08:50.320 --> 03:08:52.320
Indian question as you know.

03:08:52.320 --> 03:08:54.320
I'm

03:08:54.320 --> 03:08:56.320
you know.

03:08:56.320 --> 03:08:58.320
And audio went bad.

03:08:58.320 --> 03:09:00.320
Audio went bad.

03:09:00.320 --> 03:09:02.320
Stand by. Come back. Come again.

03:09:02.320 --> 03:09:04.320
Audio is bad.

03:09:04.320 --> 03:09:06.320
Hello.

03:09:06.320 --> 03:09:08.320
Try it again.

03:09:10.320 --> 03:09:12.320
Yes, Shilpi. Please try again.

03:09:18.320 --> 03:09:20.320
No.

03:09:20.320 --> 03:09:22.320
Yes, go ahead.

03:09:22.320 --> 03:09:24.320
Ask again.

03:09:32.320 --> 03:09:34.320
She's silent.

03:09:34.320 --> 03:09:36.320
So

03:09:36.320 --> 03:09:38.320
I think she had bad connection.

03:09:38.320 --> 03:09:40.320
Shilpi, you can text me, DM me

03:09:40.320 --> 03:09:42.320
whatever you feel like. It's okay.

03:09:42.320 --> 03:09:44.320
DM is okay.

03:09:44.320 --> 03:09:46.320
Hi, Shilpi.

03:09:46.320 --> 03:09:48.320
Yes, I'm so sorry.

03:09:48.320 --> 03:09:50.320
I disconnected with him.

03:09:50.320 --> 03:09:52.320
No problem.

03:09:52.320 --> 03:09:54.320
Yes, I was saying

03:09:54.320 --> 03:09:56.320
that one of my cousins just

03:09:56.320 --> 03:09:58.320
got a job

03:09:58.320 --> 03:10:00.320
in the employment sector.

03:10:00.320 --> 03:10:02.320
And so now

03:10:02.320 --> 03:10:04.320
my family and other

03:10:04.320 --> 03:10:06.320
people, like most of the people

03:10:06.320 --> 03:10:08.320
are, you know, obviously it's a proud thing

03:10:08.320 --> 03:10:10.320
and it's a good thing that he got a job.

03:10:10.320 --> 03:10:12.320
Even I'm very happy for him.

03:10:12.320 --> 03:10:14.320
But now, you know, parents start

03:10:14.320 --> 03:10:16.320
comparing your growth with

03:10:16.320 --> 03:10:18.320
other people. Like, you know, that

03:10:18.320 --> 03:10:20.320
person did this. What are you doing?

03:10:20.320 --> 03:10:22.320
You're doing nothing or something like that.

03:10:22.320 --> 03:10:24.320
So what should

03:10:24.320 --> 03:10:26.320
we do in this situation? I'm in

03:10:26.320 --> 03:10:28.320
a very difficult position right now.

03:10:28.320 --> 03:10:30.320
At my house.

03:10:30.320 --> 03:10:32.320
I think that was the first thing I answered

03:10:32.320 --> 03:10:34.320
at the beginning of the discussion

03:10:34.320 --> 03:10:36.320
about two and a half hours ago.

03:10:36.320 --> 03:10:38.320
It's okay. It's okay. No worries.

03:10:38.320 --> 03:10:40.320
But I'll answer it again.

03:10:40.320 --> 03:10:42.320
So what you should chase.

03:10:42.320 --> 03:10:44.320
What is your goal?

03:10:44.320 --> 03:10:46.320
You should not compare

03:10:46.320 --> 03:10:48.320
yourself with anybody else.

03:10:48.320 --> 03:10:50.320
That's the first thing I want you to remember.

03:10:50.320 --> 03:10:52.320
Don't compare yourself with Amitabh Bachchan

03:10:52.320 --> 03:10:54.320
or Latta Mangeshkar.

03:10:54.320 --> 03:10:56.320
Don't do that. Don't compare

03:10:56.320 --> 03:10:58.320
yourself with somebody else.

03:10:58.320 --> 03:11:00.320
Because you are Shilpi.

03:11:00.320 --> 03:11:02.320
So what you should compare

03:11:02.320 --> 03:11:04.320
and try to become.

03:11:04.320 --> 03:11:06.320
You try to become the

03:11:06.320 --> 03:11:08.320
future Shilpi.

03:11:08.320 --> 03:11:10.320
The future Shilpi is like

03:11:10.320 --> 03:11:12.320
10 years older. So if you like 21 years

03:11:12.320 --> 03:11:14.320
old right now, you want to compare

03:11:14.320 --> 03:11:16.320
yourself with the 31 year old Shilpi.

03:11:18.320 --> 03:11:20.320
And let me tell you, you will

03:11:20.320 --> 03:11:22.320
never succeed in

03:11:22.320 --> 03:11:24.320
chasing and catching up.

03:11:24.320 --> 03:11:26.320
Never. Because by the time

03:11:26.320 --> 03:11:28.320
you are 31, that Shilpi

03:11:28.320 --> 03:11:30.320
plus 10 is 41.

03:11:32.320 --> 03:11:34.320
So she will keep ahead of you all the time.

03:11:34.320 --> 03:11:36.320
But that's what you are chasing.

03:11:36.320 --> 03:11:38.320
Not chasing Latta Mangeshkar.

03:11:38.320 --> 03:11:40.320
Not chasing Vikas

03:11:40.320 --> 03:11:42.320
or anybody else for that matter.

03:11:42.320 --> 03:11:44.320
Or your cousin.

03:11:44.320 --> 03:11:46.320
They are different people. You want to chase

03:11:46.320 --> 03:11:48.320
your future self.

03:11:50.320 --> 03:11:52.320
Bada ho ke kya banungi?

03:11:52.320 --> 03:11:54.320
That is the question.

03:11:54.320 --> 03:11:56.320
Even today I ask the same question

03:11:56.320 --> 03:11:58.320
ki mai bada ho ke kya banunga?

03:11:58.320 --> 03:12:00.320
Bhi to bada ho hi nahi hai.

03:12:00.320 --> 03:12:02.320
That is the question. Ki mai bada ho ke kya

03:12:02.320 --> 03:12:04.320
banunga is what I try to become.

03:12:06.320 --> 03:12:08.320
That's what you should chase.

03:12:08.320 --> 03:12:10.320
Your future Shilpi.

03:12:12.320 --> 03:12:14.320
The problem is like

03:12:14.320 --> 03:12:16.320
I understand that I have to chase

03:12:16.320 --> 03:12:18.320
future Shilpi. But the problem is

03:12:18.320 --> 03:12:20.320
what do I tell my parents?

03:12:20.320 --> 03:12:22.320
What do I do about their concern?

03:12:22.320 --> 03:12:24.320
Ignore them.

03:12:24.320 --> 03:12:26.320
I am sorry. But that's how it should be.

03:12:28.320 --> 03:12:30.320
Unko bata do ki

03:12:30.320 --> 03:12:32.320
Yes, you are my parents.

03:12:32.320 --> 03:12:34.320
I appreciate. I understand.

03:12:34.320 --> 03:12:36.320
But this is what I think is the right

03:12:36.320 --> 03:12:38.320
and that's what I will do.

03:12:38.320 --> 03:12:40.320
I will not listen to you

03:12:40.320 --> 03:12:42.320
and do that in a polite manner of course.

03:12:42.320 --> 03:12:44.320
But that's how you

03:12:44.320 --> 03:12:46.320
should basically tell them. Is you are

03:12:46.320 --> 03:12:48.320
going to be chasing your future self.

03:12:48.320 --> 03:12:50.320
They will understand.

03:12:50.320 --> 03:12:52.320
You have to make them understand.

03:12:54.320 --> 03:12:56.320
So making them understand is a difficult

03:12:56.320 --> 03:12:58.320
task actually.

03:12:58.320 --> 03:13:00.320
I know. I know it is difficult.

03:13:00.320 --> 03:13:02.320
They will start crushing you

03:13:02.320 --> 03:13:04.320
or they will start being

03:13:04.320 --> 03:13:06.320
desperate for ideas

03:13:06.320 --> 03:13:08.320
for themselves and for their kids

03:13:08.320 --> 03:13:10.320
as well. I know it very well.

03:13:10.320 --> 03:13:12.320
I am from India.

03:13:12.320 --> 03:13:14.320
I understand.

03:13:14.320 --> 03:13:16.320
I know it absolutely very well how things

03:13:16.320 --> 03:13:18.320
operate.

03:13:18.320 --> 03:13:20.320
Yes. But that's what you overcome.

03:13:20.320 --> 03:13:22.320
That's the first roadblock.

03:13:22.320 --> 03:13:24.320
First roadblock is your family.

03:13:28.320 --> 03:13:30.320
First roadblock is your family.

03:13:30.320 --> 03:13:32.320
They are not bad

03:13:32.320 --> 03:13:34.320
thinking. They are actually thinking good

03:13:34.320 --> 03:13:36.320
for you by the way. Just so you know they are thinking

03:13:36.320 --> 03:13:38.320
good things for you. Yes I know.

03:13:38.320 --> 03:13:40.320
That's what I said. I even

03:13:40.320 --> 03:13:42.320
understand what they are trying to say.

03:13:42.320 --> 03:13:44.320
But by saying all

03:13:44.320 --> 03:13:46.320
these things it won't help you.

03:13:46.320 --> 03:13:48.320
I know. So you should find a way

03:13:48.320 --> 03:13:50.320
to understand them.

03:13:54.320 --> 03:13:56.320
And also

03:13:56.320 --> 03:13:58.320
people treat government job as

03:13:58.320 --> 03:14:00.320
awards.

03:14:00.320 --> 03:14:02.320
It is also frustrating.

03:14:02.320 --> 03:14:04.320
It's like you want something

03:14:04.320 --> 03:14:06.320
here you go.

03:14:06.320 --> 03:14:08.320
Give me a second. I am getting a phone call. So I need to

03:14:08.320 --> 03:14:10.320
just message them. Hold on. Please stand by.

03:14:24.320 --> 03:14:26.320
I am back.

03:14:26.320 --> 03:14:28.320
So basically it is lunchtime

03:14:28.320 --> 03:14:30.320
and my wife is calling me to come down

03:14:30.320 --> 03:14:32.320
and get lunch. So that's

03:14:32.320 --> 03:14:34.320
what I will be doing. But I'll let

03:14:34.320 --> 03:14:36.320
these hands that are seeing. I'll

03:14:36.320 --> 03:14:38.320
answer them first.

03:14:38.320 --> 03:14:40.320
So go ahead.

03:14:40.320 --> 03:14:42.320
Himanshu

03:14:42.320 --> 03:14:44.320
Is that Himanshu as well?

03:14:44.320 --> 03:14:46.320
And because there are

03:14:46.320 --> 03:14:48.320
two hands I see.

03:14:54.320 --> 03:14:56.320
My question was

03:14:56.320 --> 03:14:58.320
that only means that parents

03:14:58.320 --> 03:15:00.320
so means my parents are also

03:15:00.320 --> 03:15:02.320
forcing me to do this government

03:15:02.320 --> 03:15:04.320
jobs thing. But I explained them that

03:15:04.320 --> 03:15:06.320
you can see his example

03:15:06.320 --> 03:15:08.320
of who has

03:15:08.320 --> 03:15:10.320
already done so much things. And

03:15:10.320 --> 03:15:12.320
he is also thinking about progressing

03:15:12.320 --> 03:15:14.320
in the future. Means he is

03:15:14.320 --> 03:15:16.320
studying the technology of the future.

03:15:16.320 --> 03:15:18.320
I also don't want to get stuck in this.

03:15:18.320 --> 03:15:20.320
I explained them for half an hour

03:15:20.320 --> 03:15:22.320
and then they said

03:15:22.320 --> 03:15:24.320
okay we will not force you.

03:15:24.320 --> 03:15:26.320
You do this development, this technology

03:15:26.320 --> 03:15:28.320
whatever you want to do.

03:15:28.320 --> 03:15:30.320
And secondly

03:15:30.320 --> 03:15:32.320
it takes time for everybody to understand each other.

03:15:32.320 --> 03:15:34.320
It's not like a 30 minute thing.

03:15:34.320 --> 03:15:36.320
It takes a lot of time.

03:15:40.320 --> 03:15:42.320
Thank you sir.

03:15:42.320 --> 03:15:44.320
Was it Himanshu speaking or because?

03:15:44.320 --> 03:15:46.320
Who was the person who spoke? I think

03:15:46.320 --> 03:15:48.320
it was because. So go ahead Himanshu.

03:15:48.320 --> 03:15:50.320
Hello.

03:15:50.320 --> 03:15:52.320
Yes. Go ahead Himanshu.

03:15:52.320 --> 03:15:54.320
Last question.

03:15:54.320 --> 03:15:56.320
Yes.

03:15:56.320 --> 03:15:58.320
Okay. Good evening sir.

03:15:58.320 --> 03:16:00.320
Sir my question is after working

03:16:00.320 --> 03:16:02.320
so many leadership positions for many years

03:16:02.320 --> 03:16:04.320
in different fields, how do you identify your

03:16:04.320 --> 03:16:06.320
mediocre talent? So right now I am the janitor.

03:16:06.320 --> 03:16:08.320
Jhadu Karmachari.

03:16:08.320 --> 03:16:10.320
So

03:16:10.320 --> 03:16:12.320
that's the reality.

03:16:12.320 --> 03:16:14.320
So it's not leadership.

03:16:14.320 --> 03:16:16.320
Basically

03:16:16.320 --> 03:16:18.320
titles are bullshit.

03:16:18.320 --> 03:16:20.320
What I am telling you is titles

03:16:20.320 --> 03:16:22.320
are bullshit.

03:16:22.320 --> 03:16:24.320
Is what you do is what matters.

03:16:24.320 --> 03:16:26.320
So see if you remember

03:16:26.320 --> 03:16:28.320
and read my profile, I don't have a title there.

03:16:28.320 --> 03:16:30.320
It says

03:16:30.320 --> 03:16:32.320
founder. Founder is an action

03:16:32.320 --> 03:16:34.320
of doing things.

03:16:34.320 --> 03:16:36.320
It's not a title. CEO is a

03:16:36.320 --> 03:16:38.320
title. Or some other

03:16:38.320 --> 03:16:40.320
nonsense is a title.

03:16:40.320 --> 03:16:42.320
But what you do is the action.

03:16:42.320 --> 03:16:44.320
So investor

03:16:44.320 --> 03:16:46.320
is a title. No it is not.

03:16:46.320 --> 03:16:48.320
It is the action of investing.

03:16:48.320 --> 03:16:50.320
Owner is a

03:16:50.320 --> 03:16:52.320
title. No it is not. It is the action

03:16:52.320 --> 03:16:54.320
of owning something.

03:16:54.320 --> 03:16:56.320
Founder is the action of founding

03:16:56.320 --> 03:16:58.320
something, building something, doing

03:16:58.320 --> 03:17:00.320
something.

03:17:00.320 --> 03:17:02.320
CEO is a bullshit title.

03:17:04.320 --> 03:17:06.320
Yes sir.

03:17:06.320 --> 03:17:08.320
Sir but how you

03:17:08.320 --> 03:17:10.320
identify your mediocre talent?

03:17:10.320 --> 03:17:12.320
There is no such thing. This person is not suitable.

03:17:12.320 --> 03:17:14.320
There is no such thing. No one is

03:17:14.320 --> 03:17:16.320
mediocre. There is no such thing.

03:17:16.320 --> 03:17:18.320
There is no one is a mediocre thing.

03:17:18.320 --> 03:17:20.320
There is no person who is mediocre.

03:17:20.320 --> 03:17:22.320
You cannot define a person like that.

03:17:22.320 --> 03:17:24.320
Because even I am an idiot

03:17:24.320 --> 03:17:26.320
at some time. Total

03:17:26.320 --> 03:17:28.320
idiot.

03:17:28.320 --> 03:17:30.320
So this good and bad

03:17:30.320 --> 03:17:32.320
fluctuates.

03:17:32.320 --> 03:17:34.320
A person who is good becomes bad

03:17:34.320 --> 03:17:36.320
and becomes good again and becomes

03:17:36.320 --> 03:17:38.320
mediocre. One person

03:17:38.320 --> 03:17:40.320
cannot be mediocre all the time.

03:17:40.320 --> 03:17:42.320
There is no such thing.

03:17:42.320 --> 03:17:44.320
So how do we

03:17:44.320 --> 03:17:46.320
identify that we are suitable

03:17:46.320 --> 03:17:48.320
for this job or not? By doing it.

03:17:50.320 --> 03:17:52.320
But

03:17:52.320 --> 03:17:54.320
at what parameter we can define

03:17:54.320 --> 03:17:56.320
that we are doing good?

03:17:56.320 --> 03:17:58.320
So the reference parameter to measure

03:17:58.320 --> 03:18:00.320
is how happy and successful

03:18:00.320 --> 03:18:02.320
the audience, the user, the customer

03:18:02.320 --> 03:18:04.320
is.

03:18:08.320 --> 03:18:10.320
Shema.

03:18:10.320 --> 03:18:12.320
Hi.

03:18:12.320 --> 03:18:14.320
Yes, Nilesh.

03:18:14.320 --> 03:18:16.320
Thank you.

03:18:16.320 --> 03:18:18.320
So yes, what I wanted to say to

03:18:18.320 --> 03:18:20.320
Himanshu. We were all

03:18:20.320 --> 03:18:22.320
at some point mediocre.

03:18:22.320 --> 03:18:24.320
Believe me. And the mistake

03:18:24.320 --> 03:18:26.320
of people is that they say, yes

03:18:26.320 --> 03:18:28.320
maybe Nilesh could do this

03:18:28.320 --> 03:18:30.320
because he has experience or he

03:18:30.320 --> 03:18:32.320
is so odd or whatever. No, no, no.

03:18:32.320 --> 03:18:34.320
Like also Nilesh and everyone

03:18:34.320 --> 03:18:36.320
here at some point

03:18:36.320 --> 03:18:38.320
struggled to do something. So you

03:18:38.320 --> 03:18:40.320
first need to believe in yourself.

03:18:40.320 --> 03:18:42.320
This is the start point, right?

03:18:42.320 --> 03:18:44.320
And basically why I wanted to

03:18:44.320 --> 03:18:46.320
talk, it's for Shilpi and

03:18:46.320 --> 03:18:48.320
Vikas. When they said

03:18:48.320 --> 03:18:50.320
OK, parents, etc.

03:18:50.320 --> 03:18:52.320
I also had some situation where

03:18:52.320 --> 03:18:54.320
my cousins or my friends

03:18:54.320 --> 03:18:56.320
saying to me, Shema, my family is

03:18:56.320 --> 03:18:58.320
not supporting me or does not believe

03:18:58.320 --> 03:19:00.320
in me. What should I do? And the

03:19:00.320 --> 03:19:02.320
answer is like Nilesh exactly

03:19:02.320 --> 03:19:04.320
precise. Unfortunately

03:19:04.320 --> 03:19:06.320
you need to ignore. But

03:19:06.320 --> 03:19:08.320
with all the respect, you

03:19:08.320 --> 03:19:10.320
will say to me, what are concrete

03:19:10.320 --> 03:19:12.320
steps that I need to do to succeed?

03:19:12.320 --> 03:19:14.320
If my family is not

03:19:14.320 --> 03:19:16.320
encouraging me or motivating

03:19:16.320 --> 03:19:18.320
me. First, you

03:19:18.320 --> 03:19:20.320
need to ignore. Keep your

03:19:20.320 --> 03:19:22.320
eyes, ears, everything closed.

03:19:22.320 --> 03:19:24.320
Second,

03:19:24.320 --> 03:19:26.320
figure out what you want.

03:19:26.320 --> 03:19:28.320
What is your goal? What you want

03:19:28.320 --> 03:19:30.320
as Shilpi or what you want

03:19:30.320 --> 03:19:32.320
as Vikas? What you want exactly

03:19:32.320 --> 03:19:34.320
to have? This is

03:19:34.320 --> 03:19:36.320
your goal. This is not our goal.

03:19:36.320 --> 03:19:38.320
And third thing,

03:19:38.320 --> 03:19:40.320
make a plan. Because the difference

03:19:40.320 --> 03:19:42.320
between a dream and a goal is

03:19:42.320 --> 03:19:44.320
the plan. How can I reach

03:19:44.320 --> 03:19:46.320
this goal? Like if I want to take

03:19:46.320 --> 03:19:48.320
a job or whatever, I want to make my

03:19:48.320 --> 03:19:50.320
own company. What are the steps

03:19:50.320 --> 03:19:52.320
that I need to do in

03:19:52.320 --> 03:19:54.320
order to achieve this goal?

03:19:54.320 --> 03:19:56.320
And once you have this

03:19:56.320 --> 03:19:58.320
Shilpi, you said this is quite frustrating,

03:19:58.320 --> 03:20:00.320
etc. Once you reached

03:20:00.320 --> 03:20:02.320
your goal and you succeeded

03:20:02.320 --> 03:20:04.320
with no one help, then you can

03:20:04.320 --> 03:20:06.320
prove to everyone else

03:20:06.320 --> 03:20:08.320
that you succeeded. And at this point,

03:20:08.320 --> 03:20:10.320
also your parents and everyone

03:20:10.320 --> 03:20:12.320
around you will believe in you.

03:20:12.320 --> 03:20:14.320
And this will no longer be

03:20:14.320 --> 03:20:16.320
discussed because you proved by

03:20:16.320 --> 03:20:18.320
action and not by words.

03:20:18.320 --> 03:20:20.320
That's it.

03:20:20.320 --> 03:20:22.320
Thank you, Shema.

03:20:22.320 --> 03:20:24.320
Shema is, by the way, awesome.

03:20:24.320 --> 03:20:26.320
I heard her

03:20:26.320 --> 03:20:28.320
one time speak three

03:20:28.320 --> 03:20:30.320
sentences and I immediately

03:20:30.320 --> 03:20:32.320
liked her. She's beautiful.

03:20:32.320 --> 03:20:34.320
I mean, not just the looks.

03:20:34.320 --> 03:20:36.320
Thanks.

03:20:42.320 --> 03:20:44.320
So, yes, I hope that this

03:20:44.320 --> 03:20:46.320
at least answer or

03:20:46.320 --> 03:20:48.320
help to get people

03:20:48.320 --> 03:20:50.320
do something and to

03:20:50.320 --> 03:20:52.320
act about their situation,

03:20:52.320 --> 03:20:54.320
whatever it is.

03:20:54.320 --> 03:20:56.320
I think, I

03:20:56.320 --> 03:20:58.320
hope this was useful.

03:20:58.320 --> 03:21:00.320
I don't see any more questions

03:21:00.320 --> 03:21:02.320
and no more raised hands.

03:21:02.320 --> 03:21:04.320
There is a raised hand,

03:21:04.320 --> 03:21:06.320
Vikas. Hi. Go ahead.

03:21:06.320 --> 03:21:08.320
I just wanted

03:21:08.320 --> 03:21:10.320
to say have a nice dinner.

03:21:10.320 --> 03:21:12.320
It's lunch.

03:21:12.320 --> 03:21:14.320
Yes, but yes, I understand.

03:21:14.320 --> 03:21:16.320
Thank you.

03:21:16.320 --> 03:21:18.320
Thank you. So I

03:21:18.320 --> 03:21:20.320
think we should disconnect this then.

03:21:20.320 --> 03:21:22.320
And I will catch you guys on the Twitter tweets

03:21:22.320 --> 03:21:24.320
and maybe organize another

03:21:24.320 --> 03:21:26.320
session at some point. I don't know when.

03:21:26.320 --> 03:21:28.320
Thank you. There's a question by

03:21:28.320 --> 03:21:30.320
Deepbiyansh. Hi. Go ahead.

03:21:32.320 --> 03:21:34.320
No, sir. There is no question. Thank you for

03:21:34.320 --> 03:21:36.320
your session and you motivate

03:21:36.320 --> 03:21:38.320
us a lot. That's it.

03:21:38.320 --> 03:21:40.320
We will not delay your lunch.

03:21:40.320 --> 03:21:42.320
You can eat.

03:21:42.320 --> 03:21:44.320
I will ask questions in the next session.

03:21:44.320 --> 03:21:46.320
Thank you. Thank you very much. Thank you, everybody,

03:21:46.320 --> 03:21:48.320
for joining. It was awesome.

03:21:48.320 --> 03:21:50.320
I appreciate you and your time.

03:21:50.320 --> 03:21:52.320
I'll catch you later. I'm disconnecting

03:21:52.320 --> 03:21:54.320
this now. Thank you and bye bye, Akshay

03:21:54.320 --> 03:21:56.320
for co-hosting.

03:21:56.320 --> 03:22:24.320
Thank you, Bhavuk. Thanks. Bye bye.

Show more...
2 years ago

The Cloud Seminar
Running Custom Images in Any Cloud #0005

Summary:

In this session, I build a trivial but custom docker image, push it to a custom self-hosted registry and also to docker hub.

Next, I create a machine in some arbitrary cloud, (I used Hetzner), get it pre-installed with Ubuntu 22.04. Then refer to the official docker install installation to properly setup docker on that machine. Next, I pull that custom image from registry, install, and run the container. Test to verify.

AI Generated Transcript

WEBVTT

00:00.000 --> 00:04.960
We are going to continue our discussion of the last time,

00:04.960 --> 00:08.480
which is, I think last time we discussed creating

00:08.480 --> 00:10.800
Docker file and Docker images and building them up and

00:10.800 --> 00:14.560
putting them in a Docker registry.

00:14.560 --> 00:17.040
So you saw that in a live session the last time it is

00:17.040 --> 00:23.640
recorded and it's available to you on what is we call Spotify.

00:23.640 --> 00:26.080
If you go to Spotify on a particular location,

00:26.080 --> 00:29.720
you will find the Cloud Seminar and it looks like this.

00:29.720 --> 00:31.960
I'm opening up Spotify right now.

00:31.960 --> 00:36.480
That's how it looks like and on a screen it looks like this.

00:36.480 --> 00:38.980
So that's the location where you can find.

00:38.980 --> 00:42.400
You will probably find links for this on my website.

00:42.400 --> 00:46.480
Last time we were discussing this thing called building custom images.

00:46.480 --> 00:48.640
So that thing that you see,

00:48.640 --> 00:50.720
by the way, this video of me,

00:50.720 --> 00:52.640
I think I should just disappear.

00:52.640 --> 00:57.040
So I will hide myself completely as opposed to obstructing the screen.

00:57.040 --> 01:00.800
Now what are you seeing is this series of videos here.

01:00.800 --> 01:02.800
They are on Spotify and yes,

01:02.800 --> 01:04.480
Spotify does have videos.

01:04.480 --> 01:06.640
So that's what these are videos by the way, just so you know.

01:06.640 --> 01:11.200
So that's where the new recording will pop up at the end of 24 hours from now.

01:11.200 --> 01:15.080
You will see that happening. It will go here.

01:15.080 --> 01:17.760
Next, what did we do the last time?

01:17.760 --> 01:23.880
We will continue that same thing and extend it and take it to a real Cloud this time.

01:23.880 --> 01:27.720
Last time we ran it locally completely in my office right here,

01:27.720 --> 01:31.040
and I'll describe to you summary what did we do last time,

01:31.040 --> 01:33.720
and then I'll do the thing for today.

01:33.720 --> 01:35.540
I want to repeat that.

01:35.540 --> 01:38.460
If you have any question at any time, just speak.

01:38.460 --> 01:42.800
No issues. There is no exam,

01:42.800 --> 01:46.880
as you know, so you can just speak to me like a friend and ask the question.

01:46.880 --> 01:49.800
Anything. No problem at all.

01:49.800 --> 01:53.360
Anytime. You can interrupt me and I welcome that.

01:53.360 --> 01:56.120
In fact, if you don't interrupt me, I feel bad.

01:56.120 --> 01:59.760
I feel that I'm not communicating or that you're not understanding.

01:59.760 --> 02:00.880
That's a concern I have.

02:00.880 --> 02:05.920
So please tell me that you get it or tell me that you don't get it either way.

02:05.920 --> 02:11.880
So begin. So what do we have in my hand is a computer here.

02:11.880 --> 02:14.000
I call it my Macintosh.

02:14.000 --> 02:16.720
This runs the Mac OS.

02:16.720 --> 02:18.640
That's what I'm using right now.

02:18.640 --> 02:22.440
I use this to connect to another machine that runs Docker.

02:22.440 --> 02:28.120
This machine, I actually call it iMac because it is an iMac,

02:28.120 --> 02:32.320
but it runs Linux and it also has Docker.

02:32.320 --> 02:34.760
So that's the machine I've been using all along in

02:34.760 --> 02:37.640
all these sessions like three or four sessions up till now.

02:37.640 --> 02:39.880
We are doing a particular exercise.

02:39.880 --> 02:44.600
That exercise is available in a Git repository publicly.

02:44.600 --> 02:47.960
So I'm going to go there and show you,

02:47.960 --> 02:51.320
and you can actually pull it up right there.

02:51.320 --> 02:54.280
That's the Git repo and I'll paste a link for you in the chat.

02:54.280 --> 02:57.360
So you have it. Where is the chat?

02:57.360 --> 03:01.280
There. So you have the link in the chat and I'll also post it

03:01.280 --> 03:07.520
outside on the Spotify podcast, video podcast.

03:07.520 --> 03:10.600
So that's the link which has the code that I will be

03:10.600 --> 03:15.040
using on this Git repository.

03:15.640 --> 03:20.400
That code is available somewhere here already.

03:20.400 --> 03:22.960
On this Linux machine.

03:22.960 --> 03:25.360
So I'm sitting here and I will be

03:25.360 --> 03:27.600
connecting there and then work here.

03:27.600 --> 03:31.360
Then today, we'll extend whatever we build here,

03:31.360 --> 03:33.560
like Docker image and something,

03:33.560 --> 03:36.600
we'll take that application that be a very tiny,

03:36.600 --> 03:38.620
simple example application, we'll take it,

03:38.620 --> 03:43.320
but then take it to a real cloud, some cloud.

03:43.320 --> 03:45.720
You get to choose which cloud you want me to use.

03:45.720 --> 03:48.720
So you can just tell me, go to that cloud, we'll go there.

03:48.720 --> 03:51.240
And run the same thing.

03:51.240 --> 03:52.680
Somebody is showing up.

03:52.680 --> 03:53.920
So I'm going to let them in.

03:53.920 --> 03:58.200
Somebody just showed up and I admitted them in.

03:58.200 --> 04:01.960
So that's the scenario today.

04:01.960 --> 04:06.440
Here's what we will do is what I just described.

04:06.440 --> 04:10.080
I'm checking my video layout just a minute.

04:10.080 --> 04:12.160
I think it is good.

04:12.160 --> 04:22.000
So tell me if this is better or this.

04:22.000 --> 04:23.160
Tell me what do you prefer?

04:23.160 --> 04:28.840
That's the question. So this is A and then I'll show you now B.

04:28.840 --> 04:32.240
So this is B. What do you prefer?

04:32.240 --> 04:40.040
That's the question. B or A. Any comments?

04:40.040 --> 04:43.920
Do you see anything changing at all?

04:43.920 --> 04:47.280
Let me show you A again.

04:47.280 --> 04:52.960
This is A. I'm going to change it now.

04:52.960 --> 04:58.640
This is B. Do you see anything different at all?

04:58.640 --> 05:02.800
No difference? Okay, fine.

05:02.800 --> 05:06.600
Then I think it's just what I see here is something different.

05:06.600 --> 05:09.040
So the layout is different for some reason.

05:09.040 --> 05:11.920
So let's recap quickly.

05:11.920 --> 05:20.120
We have this code sitting right here and I will hold on.

05:20.120 --> 05:23.000
Is somebody projecting something or what?

05:23.000 --> 05:28.920
Somebody started projecting or maybe I'm confused.

05:28.920 --> 05:32.520
Are you seeing my screen or something else?

05:32.520 --> 05:42.200
Exit Spotlight and check Spotlight for everyone.

05:42.200 --> 05:50.240
Me. Hey Sanjay, do you see my screen?

05:50.240 --> 05:52.320
Yeah, I see yellow screen.

05:52.320 --> 05:54.240
Yeah, okay, good, good, good, good.

05:54.240 --> 05:55.480
Yellow not red.

05:55.480 --> 05:56.680
Yeah, nice, nice.

05:56.680 --> 06:02.760
So let's continue.

06:02.760 --> 06:08.640
So let's bring up that terminal, the command line, the code.

06:08.640 --> 06:11.920
So here is the code command line coming up,

06:11.920 --> 06:13.800
and here is the editor for that.

06:13.800 --> 06:16.800
So I'm going to open the editor right here,

06:16.800 --> 06:18.560
bring it to the side,

06:18.560 --> 06:22.080
and this is the terminal and this is the code editor.

06:22.080 --> 06:23.640
As you probably know,

06:23.640 --> 06:30.600
this is VS Codeium and I'm going to connect to that iMac that I mentioned.

06:30.600 --> 06:32.600
This is the Mac which contains,

06:32.600 --> 06:37.640
this is the Linux machine that contains my code and I will go there,

06:37.640 --> 06:39.960
and that's what I've connected to.

06:39.960 --> 06:44.480
That code that we are using is called Docker files,

06:44.480 --> 06:47.360
and for clarity,

06:47.360 --> 06:49.360
I can delete the whole thing and bring it up again.

06:49.360 --> 06:51.440
I think that works better for most people

06:51.440 --> 06:53.880
because you don't know what I have in my computer

06:53.880 --> 06:55.640
and even I don't remember what I have.

06:55.640 --> 06:59.240
So I'll take this code link from here,

06:59.240 --> 07:03.200
from GitHub, and go to that computer here,

07:03.200 --> 07:07.880
that iMac computer that I mentioned, like that,

07:07.880 --> 07:12.200
and there I have this folder called Docker files.

07:13.200 --> 07:17.920
I will completely erase it, so it's gone.

07:17.920 --> 07:20.520
You can see that it disappears in

07:20.520 --> 07:23.480
the screen on the right half.

07:23.480 --> 07:25.760
There is no Docker files anymore.

07:25.760 --> 07:30.040
I'm going to now clone it, like that.

07:30.040 --> 07:32.320
So it comes down, brings the whole thing,

07:32.320 --> 07:38.000
and it should show up in that code editor somewhere here.

07:38.000 --> 07:41.200
Where is that? Docker files showed up right there.

07:41.200 --> 07:43.920
So that's the exercise that we will be using today,

07:43.920 --> 07:45.120
like we did last time,

07:45.120 --> 07:49.400
and continue our discussion around what we did,

07:49.400 --> 07:51.440
extending what we did last time,

07:51.440 --> 07:55.040
is to build an image and then run it in a real Cloud.

07:55.040 --> 07:56.160
That's the idea today.

07:56.160 --> 07:59.520
So let's see what did we do last time.

07:59.520 --> 08:00.840
If I remember right,

08:00.840 --> 08:05.720
we were dealing with something like one of these files.

08:05.720 --> 08:09.000
What was it? Let me cross-check.

08:09.000 --> 08:10.760
Let me cross-check and I'll identify

08:10.760 --> 08:12.440
exactly what we are going to do today so that

08:12.440 --> 08:15.720
you will go and be able to do the same thing.

08:15.720 --> 08:19.560
So let's go find it. Not this,

08:19.560 --> 08:22.840
not this, not this.

08:22.840 --> 08:25.560
Is it in step-by-step? I think so.

08:25.560 --> 08:28.480
I think this is it.

08:28.840 --> 08:35.240
So this is something we can use.

08:35.240 --> 08:37.320
But I think the last time, if you remember,

08:37.320 --> 08:38.720
we created a very simple,

08:38.720 --> 08:44.560
small NGINX server using a custom-created Docker file.

08:44.560 --> 08:46.000
So I think that's what we should do

08:46.000 --> 08:47.560
with the simple understanding of

08:47.560 --> 08:50.040
clarity and build everything from scratch

08:50.040 --> 08:53.280
with nothing in our hand to begin with, completely empty.

08:53.280 --> 08:55.360
So here I go with empty screen,

08:55.360 --> 08:58.680
create a new file, and I'll save it as empty.

08:58.680 --> 09:04.800
I'll call it Docker something, test, I think.

09:04.800 --> 09:07.480
Let me give it a new name.

09:07.480 --> 09:09.800
So I'll create a folder here.

09:09.800 --> 09:13.160
Let's call that folder today's date,

09:13.160 --> 09:15.840
May 16th. Today is May 16th.

09:15.840 --> 09:19.160
I'll call it May 16th. It is called May 17th in India.

09:19.160 --> 09:22.600
It's a different day. So let's go to May 16th folder,

09:22.600 --> 09:27.000
and there we have to create a new file.

09:27.000 --> 09:29.400
So I will go to that May 16th folder

09:29.400 --> 09:32.000
here and then create a new file.

09:32.000 --> 09:34.640
I'll call it Docker file,

09:34.640 --> 09:36.720
just simple Docker file like that.

09:36.720 --> 09:38.600
That new file is empty.

09:38.600 --> 09:40.440
So I'll begin with something like

09:40.440 --> 09:43.840
from NGINX as a beginning step.

09:43.840 --> 09:47.000
Basic beginning step, pull one image to begin with,

09:47.000 --> 09:50.160
and then we'll modify this image to run exactly what we want,

09:50.160 --> 09:53.760
and my goal with this particular exercise I'm about to

09:53.760 --> 09:58.280
begin is to create a simple NGINX web server

09:58.280 --> 10:02.920
that says something like hello Sanjay, for example.

10:02.920 --> 10:06.280
So I need to have a file that says hello Sanjay.

10:06.280 --> 10:09.360
So I'll create that file pretty much like this.

10:09.360 --> 10:12.000
In that same folder, rather I may 16 folder,

10:12.000 --> 10:14.960
I'll right-click new file, index.html,

10:14.960 --> 10:17.880
and in that file I'll create hello Sanjay.

10:17.880 --> 10:20.680
That's it. That's the output that we would like to see in

10:20.680 --> 10:25.760
a website running our own Docker file in some Cloud for real.

10:25.760 --> 10:27.440
The actual Cloud, actual file,

10:27.440 --> 10:29.680
everything from scratch, building it right now.

10:29.680 --> 10:31.440
So that's the beginning point. Hello Sanjay is

10:31.440 --> 10:33.360
the output that you will see eventually.

10:33.360 --> 10:35.720
So the result will be,

10:35.720 --> 10:41.080
rather what I would like the result to be is some Cloud.

10:41.080 --> 10:46.280
We'll go to that Cloud.http colon slash slash number,

10:46.280 --> 10:49.400
and then you will see hello Sanjay.

10:51.480 --> 10:54.480
This Cloud will run Docker,

10:54.480 --> 11:00.160
and it will run our own custom image right there.

11:00.160 --> 11:04.120
That's the output that I'm building towards it.

11:04.120 --> 11:06.320
So I have the hello Sanjay file,

11:06.320 --> 11:08.480
and I have from nginx,

11:08.480 --> 11:12.440
the beginning point, and I will add this hello Sanjay file,

11:12.440 --> 11:20.240
index.html file into the location

11:20.240 --> 11:24.160
inside where the nginx thing is running.

11:24.160 --> 11:28.960
If you remember the last time it was like, where html?

11:28.960 --> 11:31.560
If you know Namit,

11:31.560 --> 11:35.000
do you recall, was it this location or something else?

11:35.160 --> 11:39.040
Was it this? Namit, do you recall?

11:39.040 --> 11:40.520
I think so.

11:40.520 --> 11:42.680
But it's a shortcut.

11:42.680 --> 11:43.920
Sorry, say again.

11:43.920 --> 11:46.200
It has to be that. You're adding

11:46.200 --> 11:52.600
an index.html onto that directory.

11:52.600 --> 11:57.240
I think last time I assumed it is going to be this thing,

11:57.240 --> 12:00.960
and then it turned out to be something else.

12:00.960 --> 12:02.720
I assumed to be line number 3,

12:02.720 --> 12:05.240
but it turned out to be line number 2.

12:05.680 --> 12:08.520
That was the case the last time.

12:08.520 --> 12:10.720
So I'm going to ignore or comment,

12:10.720 --> 12:12.000
the line number 3 is commented out.

12:12.000 --> 12:13.200
It's not going to be effective.

12:13.200 --> 12:15.160
I'm putting it as a reference.

12:15.160 --> 12:17.480
Then what do we have?

12:17.480 --> 12:22.040
An nginx server that needs to run the nginx application for which

12:22.040 --> 12:25.920
we need to invoke some command to actually run nginx,

12:25.920 --> 12:28.160
something like this. I don't remember the syntax,

12:28.160 --> 12:32.080
but that's how it should be with some more flags,

12:32.080 --> 12:34.200
some additional things that go here.

12:34.200 --> 12:35.440
I don't remember that.

12:35.440 --> 12:37.560
So we will go and do a Google search

12:37.560 --> 12:39.400
to find out what that should be.

12:39.400 --> 12:42.520
I think the second parameter also will be double quotes.

12:42.520 --> 12:44.280
This thing runs for real.

12:44.280 --> 12:49.280
So we'll go to Firefox and say docker file,

12:49.280 --> 12:53.200
nginx, cmd, and find out what comes up.

12:53.680 --> 12:56.840
There should be some answer somewhere in one of the forums,

12:56.840 --> 13:02.240
we'll find it, or some cheating.

13:02.240 --> 13:04.680
This is how you actually work in real life.

13:04.680 --> 13:07.160
You won't cheat. That's what I'm doing.

13:07.160 --> 13:10.520
Cheating, because I don't want to remember or memorize anything,

13:10.520 --> 13:12.760
and so I think this is the right way.

13:12.760 --> 13:16.360
You know how to find out what the right way,

13:16.360 --> 13:18.120
and that is through experience.

13:18.120 --> 13:22.680
Experience of dealing with these things multiple times in your life.

13:22.680 --> 13:26.400
Then you get experience and used to how things work and what is the right answer.

13:26.400 --> 13:30.080
This is probably the right answer to put in terms of a command

13:30.080 --> 13:32.400
to actually execute the nginx process

13:32.400 --> 13:37.240
when this image that I will be building will run.

13:37.240 --> 13:39.800
So that's the docker file ready.

13:39.800 --> 13:45.320
I want to now build this docker file and create a new docker image.

13:45.320 --> 13:49.920
I will now save this file.

13:49.920 --> 13:52.760
Saved, and close.

13:52.760 --> 13:55.480
And then I'll open up terminal,

13:55.480 --> 13:58.320
and then I'll go to that May 16 folder.

13:58.320 --> 14:01.280
There I have these two files,

14:01.280 --> 14:03.720
and I will cat the docker file here.

14:03.720 --> 14:04.760
You see it?

14:04.760 --> 14:06.960
I'll also cat the index.html file.

14:06.960 --> 14:07.920
You see that?

14:07.920 --> 14:10.280
And I will now build the docker image.

14:10.280 --> 14:14.120
Docker image building is simply docker build and then dot.

14:14.120 --> 14:16.560
This dot basically means look in this folder,

14:16.560 --> 14:17.840
like right here, right now.

14:17.840 --> 14:24.280
Look at that folder and look for a file called docker file inside that folder.

14:24.280 --> 14:29.640
And then basically it's going to look at this file here, docker file,

14:29.640 --> 14:33.760
and then build that docker file into a docker image.

14:33.760 --> 14:37.480
So we will build it simply by running docker build dot.

14:37.480 --> 14:38.520
It builds.

14:38.520 --> 14:39.800
It's very fast.

14:39.800 --> 14:41.440
It has already built.

14:41.440 --> 14:42.600
Finished.

14:42.600 --> 14:44.480
But we don't know what the name is for this,

14:44.480 --> 14:46.320
so we need to assign a name to it.

14:46.320 --> 14:48.640
And I did not, so I should.

14:48.640 --> 14:52.040
So I'll build it again with a name this time.

14:52.040 --> 14:57.560
And what I'm going to do is open another editor so I can make notes

14:57.560 --> 15:00.840
as to what commands I'll be using, because again, I don't remember.

15:00.840 --> 15:03.320
I don't memorize anything, and I always cheat.

15:03.320 --> 15:04.680
That's my way.

15:04.680 --> 15:06.200
And so cheating is the best way.

15:06.200 --> 15:07.840
Cheating is how you should work.

15:07.840 --> 15:11.320
In real life, that's how things work, is you go Google search.

15:11.320 --> 15:13.680
You go do Stack Overflow.

15:13.680 --> 15:15.360
You do Chat GPT.

15:15.360 --> 15:17.560
You do Bard or whatever comes to your hand.

15:17.560 --> 15:21.280
Like the whole internet is available to you, so you go and cheat.

15:21.280 --> 15:22.200
That's how real life is.

15:22.200 --> 15:23.200
So that's what I'm doing.

15:23.200 --> 15:24.560
I'm doing the same thing.

15:24.560 --> 15:25.920
No different.

15:25.920 --> 15:31.920
So the way to build an image was simply line number 3,

15:31.920 --> 15:34.560
like right there, docker build dot.

15:34.560 --> 15:37.400
But I want to assign it a name.

15:37.400 --> 15:39.440
Hello, Sanjay.

15:39.440 --> 15:40.720
Line number 1.

15:40.720 --> 15:42.520
So that's what I will do now.

15:42.520 --> 15:44.240
I am going to change positions here.

15:44.240 --> 15:47.120
So I did line number 1, docker build dot.

15:47.120 --> 15:48.480
That builds the image.

15:48.480 --> 15:51.360
I will now assign it a name.

15:51.360 --> 15:54.280
Like this.

15:54.280 --> 15:57.880
I think, Sanjay, I'm going to mute you.

15:57.880 --> 15:58.920
Or you mute yourself.

15:58.920 --> 15:59.440
I muted, sorry.

15:59.440 --> 15:59.960
My bad.

15:59.960 --> 16:01.320
OK, no problem.

16:01.320 --> 16:07.400
So the idea next here is this line, which I will take.

16:07.400 --> 16:10.520
And then build again.

16:10.520 --> 16:11.680
So it builds.

16:11.680 --> 16:14.880
But this time, it has a name assigned to it.

16:14.880 --> 16:16.520
Now, how did I choose a name?

16:16.520 --> 16:18.120
You can choose whatever name you like.

16:18.120 --> 16:19.360
Doesn't matter.

16:19.360 --> 16:22.880
But there are some requirements to choosing a name.

16:22.880 --> 16:26.440
It actually is dictated by the place

16:26.440 --> 16:29.440
where you will store these images.

16:29.440 --> 16:33.840
And as you know, there are places to store images.

16:33.840 --> 16:36.760
So I'll talk briefly about that.

16:36.760 --> 16:38.920
Let's go check what name I assigned.

16:38.920 --> 16:41.920
I assigned the name in line number 2.

16:41.920 --> 16:46.280
And my name was this name.

16:46.280 --> 16:48.800
Let's dissect that name a little bit.

16:48.800 --> 16:51.760
The name I chose for the image is this.

16:51.760 --> 16:54.200
And the full name.

16:54.200 --> 16:57.840
The short name is just, hello, Sanjay.

16:57.840 --> 17:00.480
And what is this line number 6?

17:00.480 --> 17:01.880
That is dictated to you.

17:01.880 --> 17:04.600
You cannot just randomly choose it.

17:04.600 --> 17:08.160
Unless you build your own place to store.

17:08.160 --> 17:09.960
In that case, you choose it.

17:09.960 --> 17:12.440
And I built my own place to store images.

17:12.440 --> 17:14.480
And that is why I chose what I want.

17:14.480 --> 17:16.400
And so that line number 6 is a reference

17:16.400 --> 17:19.600
to my own location to store images, which

17:19.600 --> 17:22.320
is called a Docker registry.

17:22.320 --> 17:26.840
A Docker registry is where you put your images.

17:26.840 --> 17:29.720
There are many registries available on the internet.

17:29.720 --> 17:30.960
Docker Hub is one of them.

17:33.840 --> 17:36.280
Amazon.

17:36.280 --> 17:42.920
No, Azure Container Registry is another Azure, Microsoft.

17:42.920 --> 17:47.120
Elastic Container Registry is from Amazon.

17:47.120 --> 17:51.480
Google Container Registry is from Google.

17:51.480 --> 17:53.960
And then there is this Quay.

17:53.960 --> 17:55.720
And there are more.

17:55.720 --> 17:57.600
Every cloud provider will give you

17:57.600 --> 17:59.880
a place to store Docker images.

17:59.880 --> 18:02.240
And they are called registry locations.

18:02.240 --> 18:09.120
In my company, in my home, I built my own registry.

18:09.120 --> 18:12.560
And that's what I call line number 6.

18:12.560 --> 18:15.840
It is actually a machine running right here.

18:15.840 --> 18:18.000
And only I can use it.

18:18.000 --> 18:20.120
I don't allow anybody else to use that.

18:20.120 --> 18:22.960
So I have my own registry.

18:22.960 --> 18:25.160
My own.

18:25.160 --> 18:28.280
The name I chose is this, line number 6.

18:28.280 --> 18:30.960
And only I can use it.

18:30.960 --> 18:33.400
So you have a choice as to where will you.

18:33.400 --> 18:36.000
There is a question here for people waiting or something.

18:36.000 --> 18:38.480
Oh, OK.

18:38.480 --> 18:39.320
Let them in.

18:39.320 --> 18:40.800
I'll let them in.

18:40.800 --> 18:43.280
So hello.

18:43.280 --> 18:44.720
I hope you can hear me.

18:44.720 --> 18:45.520
Sahil.

18:45.520 --> 18:47.320
Sahil just joined.

18:47.320 --> 18:48.440
Can you?

18:48.440 --> 18:49.800
You can talk.

18:49.800 --> 18:53.400
You can unmute and interrupt me any time you feel like.

18:53.400 --> 18:57.120
So I was talking about creating an image to put in a place.

18:57.120 --> 18:58.920
And the place is called a Docker registry.

18:58.920 --> 19:01.000
And so I have my own registry.

19:01.000 --> 19:03.560
You can choose wherever you feel like.

19:03.560 --> 19:05.200
And each of these companies will dictate

19:05.200 --> 19:09.120
what you will name your images, including this.

19:09.120 --> 19:10.880
Docker Hub also has a registry.

19:10.880 --> 19:14.120
And Docker Hub is free for certain cases,

19:14.120 --> 19:15.680
certain use cases.

19:15.680 --> 19:18.080
So if you are using Docker Hub, your name

19:18.080 --> 19:26.600
should be something like your username slash.

19:26.600 --> 19:29.320
That's how it should be.

19:29.320 --> 19:32.240
Other clouds will have some other naming conventions.

19:32.240 --> 19:34.160
The fully qualified name for Docker registry

19:34.160 --> 19:40.440
should be something like Docker.io slash username slash.

19:40.440 --> 19:41.280
Hello, Sanjay.

19:41.280 --> 19:46.920
And then you can assign a tag number or tag string at the end.

19:46.920 --> 19:50.160
So that's how you fully qualify an image

19:50.160 --> 19:55.240
with the registry location and references associated with that.

19:55.240 --> 19:58.880
So if you look at this pattern carefully,

19:58.880 --> 20:07.520
you will find that this portion is the registry company name,

20:07.520 --> 20:12.760
Docker.io, or ACR, or ECR, or this or that.

20:12.760 --> 20:15.520
This is your username with that company.

20:15.520 --> 20:18.440
And this is your image name that you chose.

20:18.440 --> 20:20.040
You can choose whatever you want.

20:20.040 --> 20:22.240
And this is the tag name that you can choose.

20:22.240 --> 20:26.680
So that's how a name of an image is constructed.

20:26.680 --> 20:29.400
And so depending on the cloud company you want to use

20:29.400 --> 20:31.040
to store your images, you need to assign

20:31.040 --> 20:36.880
your name of the image in the creation step properly.

20:36.880 --> 20:40.440
I'm going to use my name.

20:40.440 --> 20:44.440
And so my name as in my company's registry.

20:44.440 --> 20:47.760
That is the name that I dictate for me.

20:47.760 --> 20:49.360
So that's the name I will be choosing.

20:49.360 --> 20:51.200
And I'll give you other examples.

20:51.200 --> 20:53.720
I'll probably also push the same exact image,

20:53.720 --> 20:55.800
build another image, copy, rename it

20:55.800 --> 20:59.160
to some other cloud, push it to that cloud service provider

20:59.160 --> 21:02.280
for that registry, for example, and do that way also

21:02.280 --> 21:04.000
so that you get a clear idea about how

21:04.000 --> 21:06.120
things work when you don't have Nilesh there with you.

21:09.760 --> 21:11.880
And that's what I will be doing also.

21:11.880 --> 21:14.840
So first, let me attempt my own registry.

21:14.840 --> 21:17.240
And I assigned a name to this.

21:17.240 --> 21:18.680
And I build that image.

21:18.680 --> 21:22.640
I need to push it to give it to the registry.

21:22.640 --> 21:23.800
So I'll push that.

21:23.800 --> 21:27.040
Pushing happens like this.

21:27.040 --> 21:35.960
So I'll erase the ink and then modify the name to Hello Sanjay.

21:35.960 --> 21:39.240
And so here is Hello Sanjay.

21:39.240 --> 21:39.760
There we go.

21:43.640 --> 21:49.000
And so that's the name I'm using for our images today.

21:49.000 --> 21:50.800
So back to the terminal.

21:50.800 --> 21:54.000
I have already created the image and assigned it

21:54.000 --> 21:56.720
my name in line number 2 on the right side.

21:56.720 --> 21:58.080
I already did that.

21:58.080 --> 22:00.760
What I need to do now is to take that image

22:00.760 --> 22:07.240
that I have here, Docker images, and then you grab it for Hello

22:07.240 --> 22:10.280
Sanjay.

22:10.280 --> 22:12.440
And you will see that the image is there, available created

22:12.440 --> 22:13.440
seven minutes ago.

22:13.440 --> 22:15.560
You can see it.

22:15.560 --> 22:19.280
So I will take that image and push it to my own cloud,

22:19.280 --> 22:22.640
like line number 14.

22:22.640 --> 22:26.480
I'll cut that line, put it right here in line number 4,

22:26.480 --> 22:29.760
and then push.

22:29.760 --> 22:31.200
It says push something, something,

22:31.200 --> 22:33.320
certificate expired.

22:33.320 --> 22:36.400
That's a problem from my own registry.

22:36.400 --> 22:38.880
It says certificate expired.

22:38.880 --> 22:40.360
Current time, something happened.

22:40.360 --> 22:42.400
So maybe I can fix the certificate

22:42.400 --> 22:47.400
or just ignore my registry for now because in a live setup,

22:47.400 --> 22:50.160
I don't want to be debugging certificate expirations

22:50.160 --> 22:52.440
for my own Docker registry.

22:52.440 --> 22:53.640
So I'm not doing that now.

22:53.640 --> 22:57.600
I just figured out it says registry certificate expired.

22:57.600 --> 22:59.520
If there's a quick fix, I'll implement that.

22:59.520 --> 23:03.720
Otherwise, I'll just go to Docker Hub and push it there.

23:03.720 --> 23:16.240
So let's see if I can fix my own certificate quickly.

23:16.240 --> 23:23.720
And that fix should be simply restarting my load balancer.

23:26.720 --> 23:27.560
That should fix.

23:37.240 --> 23:38.760
I think it did.

23:38.760 --> 23:40.520
So it fixed the certificate.

23:40.520 --> 23:44.400
So I'm going to push it again, and it's pushing.

23:44.400 --> 23:46.360
So I validate my certificate.

23:46.360 --> 23:48.480
Some problem in setting up the way

23:48.480 --> 23:52.000
the registry is expecting a HTTPS SSL certificate.

23:52.000 --> 23:53.560
That was fixed.

23:53.560 --> 23:56.200
And so we talk about how to set up

23:56.200 --> 23:59.480
registry in a separate session, not right now.

23:59.480 --> 24:01.000
We are going to use it right now.

24:01.000 --> 24:02.560
So I just pushed it.

24:02.560 --> 24:04.080
If you want to create a Docker image

24:04.080 --> 24:08.200
and push it to Docker Hub, well, you can do that.

24:08.200 --> 24:12.960
What you need to do is go to Docker Hub, like this.

24:12.960 --> 24:16.600
Docker Hub.

24:16.600 --> 24:17.560
And log in there.

24:20.520 --> 24:23.640
Log in, sign in button.

24:23.640 --> 24:25.920
Type in the username.

24:25.920 --> 24:28.440
Type in the password.

24:28.440 --> 24:29.960
And then authentication code.

24:35.280 --> 24:36.200
And verify.

24:36.200 --> 24:38.160
So you get inside Docker Hub.

24:38.160 --> 24:42.200
And here, you can push whatever you want.

24:42.200 --> 24:46.680
So what I have is, let's see.

24:46.680 --> 24:49.640
I'm going to pick the company name, Cloud Genius,

24:49.640 --> 24:52.800
and then push it to that name, or that namespace,

24:52.800 --> 24:53.840
I should say.

24:53.840 --> 24:56.080
Which means, like line number two,

24:56.080 --> 25:04.280
I need to create an image tag that Docker expects, like this.

25:04.280 --> 25:06.520
If your username is something like this,

25:06.520 --> 25:08.320
it will be that username.

25:08.320 --> 25:10.040
So basically, whatever your username is,

25:10.040 --> 25:12.600
that's the name of that image.

25:12.600 --> 25:15.760
So you need to build that Docker image one more time

25:15.760 --> 25:18.840
with the proper tags, like this.

25:18.840 --> 25:21.240
Hello, Sanjay, with the Docker specified,

25:21.240 --> 25:23.960
Docker registry specified naming convention.

25:23.960 --> 25:26.120
So we're building it, built it.

25:26.120 --> 25:29.720
Now we need to take this image, which is a different name,

25:29.720 --> 25:34.560
and push it, just like this, but with a different name

25:34.560 --> 25:37.640
that Docker Hub expects.

25:37.640 --> 25:40.960
So here we go.

25:40.960 --> 25:44.080
And I'm going to push using line number seven.

25:44.080 --> 25:47.840
What it will do is actually push my image from my machine

25:47.840 --> 25:51.680
to Docker Hub, somewhere here.

25:51.680 --> 25:54.920
And so if you look for, hello, Sanjay, it's not there yet.

25:54.920 --> 25:59.920
But if I push, it should attempt to push and might fail,

25:59.920 --> 26:04.000
because it requires you to log in.

26:04.000 --> 26:07.560
It succeeded, because I probably already logged in.

26:07.560 --> 26:11.560
If you are not logged in, you need to say Docker login,

26:11.560 --> 26:15.840
and then type in your username and get a password from them.

26:15.840 --> 26:17.280
These guys don't give you passwords.

26:17.280 --> 26:20.320
These days, they expect you to go to account settings

26:20.320 --> 26:24.480
and security profile and create a Docker access token.

26:24.480 --> 26:26.720
A new token is needed on the command line.

26:26.720 --> 26:28.560
You cannot use password.

26:28.560 --> 26:31.440
So you need to type the Docker login, login name, password,

26:31.440 --> 26:33.960
token, and then it logs in.

26:33.960 --> 26:35.520
Once you're logged in already, then you

26:35.520 --> 26:38.760
can push and pull from that Docker registry.

26:38.760 --> 26:39.840
Now I've pushed it.

26:39.840 --> 26:41.160
So let's go check with Docker Hub.

26:41.160 --> 26:44.040
Do you see my image there?

26:44.040 --> 26:46.800
If I go to account, Docker Hub, and my name, hello, Sanjay

26:46.800 --> 26:49.840
pops up right there.

26:49.840 --> 26:51.600
And it was just pushed.

26:51.600 --> 26:53.280
So the image is there.

26:53.280 --> 26:55.120
I'm going to use both these ones, the one I

26:55.120 --> 26:57.640
have in my own registry in my home,

26:57.640 --> 26:59.240
as well as the one I just put.

26:59.240 --> 27:02.560
They're basically identical images, different names,

27:02.560 --> 27:05.440
like number six and seven.

27:05.440 --> 27:06.440
Same thing.

27:06.440 --> 27:09.120
Line number two and three, same thing.

27:09.120 --> 27:11.480
The building process is actually line number one.

27:11.480 --> 27:12.360
It actually builds.

27:12.360 --> 27:14.720
And then you're just assigning tags in line number three

27:14.720 --> 27:18.120
and four, or tags, tag means name.

27:18.120 --> 27:19.960
And line number seven and eight are

27:19.960 --> 27:22.800
pushing those tags with the image associated

27:22.800 --> 27:24.400
to the appropriate registry.

27:24.400 --> 27:28.200
Six goes to my home, and seven goes to Docker Hub.

27:28.200 --> 27:30.440
You can have customized it further

27:30.440 --> 27:33.160
to, say, Google Container Registry, something

27:33.160 --> 27:38.480
like gcr.io, slash god knows what, slash something else,

27:38.480 --> 27:40.440
slash something, give you a random convention.

27:40.440 --> 27:43.320
And then you follow, and you put your own name.

27:43.320 --> 27:45.200
That's how other companies work.

27:45.200 --> 27:46.960
So they'll dictate what you put here.

27:46.960 --> 27:47.760
I don't know.

27:47.760 --> 27:50.520
You have to go there and find out in your account

27:50.520 --> 27:51.560
what should that name be.

27:51.560 --> 27:54.000
Some string they will give you to put here.

27:54.000 --> 27:55.840
So that's how it works.

27:55.840 --> 27:57.200
This is unknown right now.

27:57.200 --> 27:59.520
I don't care.

27:59.520 --> 28:00.800
So we created the image.

28:00.800 --> 28:03.720
We pushed it.

28:03.720 --> 28:07.520
Now is the time to run it locally first, right here

28:07.520 --> 28:08.960
on the Mac.

28:08.960 --> 28:11.840
Oh, sorry, on the Ubuntu machine, I should say.

28:11.840 --> 28:14.560
I should not call it a Mac.

28:14.560 --> 28:18.200
This, as you know, is an Ubuntu machine.

28:18.200 --> 28:20.080
It has the image that I just built.

28:24.560 --> 28:28.720
And there are two names to the same image.

28:28.720 --> 28:33.840
One is for my local registry, and the other is for Docker Hub.

28:33.840 --> 28:37.080
What I will do now is to see if I can run these images locally

28:37.080 --> 28:38.400
right here, right now.

28:38.400 --> 28:40.080
How do you run them?

28:40.080 --> 28:43.520
You go here and find out cheat code.

28:43.520 --> 28:45.480
I have such a bad memory.

28:45.480 --> 28:47.640
I don't remember anything whatsoever.

28:47.640 --> 28:49.160
I have to cheat every single time.

28:49.160 --> 28:52.920
So I go and refer to my notes, or go and do Google search.

28:52.920 --> 28:55.160
These days, barred search, chat GPT search.

28:55.160 --> 28:56.080
God knows whatever.

28:56.080 --> 28:58.280
Just don't memorize stuff.

28:58.280 --> 29:00.360
That's the thing I'm trying to tell you.

29:00.360 --> 29:02.480
Do not memorize anything.

29:02.480 --> 29:04.000
Always forget everything.

29:04.000 --> 29:05.360
It's a great thing to do.

29:05.360 --> 29:06.720
Just don't remember anything.

29:06.720 --> 29:08.320
Don't have to.

29:08.320 --> 29:10.560
There are computers to help you with that.

29:10.560 --> 29:13.120
So never memorize anything, whatever.

29:13.120 --> 29:15.200
Absolutely never.

29:15.200 --> 29:18.360
So what you need to understand is more important

29:18.360 --> 29:21.480
is what are you doing, and how will you get that done?

29:21.480 --> 29:23.800
What that actual process is, what the command is,

29:23.800 --> 29:25.840
what the syntax is, nobody cares.

29:25.840 --> 29:27.880
Because we have internet with us.

29:27.880 --> 29:29.320
And these days, AI with us.

29:29.320 --> 29:31.240
So you'd use that.

29:31.240 --> 29:33.400
Don't worry about remembering, memorizing.

29:33.400 --> 29:34.400
It is nonsense.

29:34.400 --> 29:36.160
So don't do that.

29:36.160 --> 29:41.320
Having said, this step, line number 14 is kind of useless.

29:41.320 --> 29:43.720
We already did that.

29:43.720 --> 29:47.280
This we talked about, line number 12.

29:47.280 --> 29:49.480
This, we should now run it locally.

29:49.480 --> 29:50.720
So let's go run.

29:50.720 --> 29:54.480
Line number 23 is how you run it to begin with, to test it out.

29:54.480 --> 29:58.240
So let us go test and see how it responds.

29:58.240 --> 29:59.640
Yeah, it is running.

29:59.640 --> 30:02.360
Let us see the process is running inside.

30:02.360 --> 30:03.600
Command P has not found.

30:03.600 --> 30:04.400
OK, that's OK.

30:04.400 --> 30:05.800
That's expected.

30:05.800 --> 30:08.320
This is expected.

30:08.320 --> 30:18.880
So the next thing we will do is run it properly

30:18.880 --> 30:21.320
without this bash thing at the end.

30:21.320 --> 30:22.680
When you want to run it properly,

30:22.680 --> 30:25.640
you want to actually assign a port

30:25.640 --> 30:27.160
on which it will expose itself.

30:27.160 --> 30:30.920
So that is going to be in line number 27, if I remember right.

30:30.920 --> 30:36.720
Line number 27 should do it the way I want, like that.

30:36.720 --> 30:38.920
Now, there is this esoteric thing

30:38.920 --> 30:41.480
that I have here, which is 8760.

30:41.480 --> 30:43.200
It's a custom port.

30:43.200 --> 30:46.320
I'm using a custom port on my Ubuntu machine

30:46.320 --> 30:49.560
because my port number 80 is taken.

30:49.560 --> 30:53.600
When you will run in the cloud, you will go like this,

30:53.600 --> 30:55.560
directly to the port number 80 on the cloud,

30:55.560 --> 30:57.920
because that is not taken by anything else.

30:57.920 --> 31:00.840
You'll be able to run it just like line number 25 is.

31:00.840 --> 31:04.400
But for my setup, my port number 80 is occupied.

31:04.400 --> 31:06.240
So I need to modify a little bit,

31:06.240 --> 31:08.720
and I need to go something like this to make

31:08.720 --> 31:13.320
it run on my machine, on port number 8760.

31:13.320 --> 31:15.840
And so I'll take that line number 27 here locally

31:15.840 --> 31:18.120
on my machine and run it.

31:18.120 --> 31:20.560
When I run it, it runs.

31:20.560 --> 31:21.800
Let us see what is running.

31:25.720 --> 31:27.600
And you will see that some things are running here,

31:27.600 --> 31:29.720
apparently.

31:29.720 --> 31:32.280
Yeah, one thing is running, one is exited.

31:32.280 --> 31:37.520
So this exited thing about a minute ago, I can clean it up.

31:37.520 --> 31:38.360
How do you clean up?

31:38.360 --> 31:43.480
You get this number from here, the initial few letters

31:43.480 --> 31:49.960
of that, PC07, as long as it is unambiguous, you can kill it.

31:49.960 --> 31:53.200
And then you have only one Sanjay process running

31:53.200 --> 31:54.880
in the form of a container.

31:54.880 --> 31:56.680
And you can examine it.

31:56.680 --> 32:02.000
It shows you that it is actually running exactly as you expect.

32:02.000 --> 32:08.120
Port number 8760 on the machine, Ubuntu machine, map to the container,

32:08.120 --> 32:13.280
port 80 in the container, running nginx.

32:13.280 --> 32:14.760
And this is your Ubuntu machine.

32:18.320 --> 32:21.520
So that mapping is taken care of.

32:21.520 --> 32:23.080
Let us go actually test.

32:23.080 --> 32:28.200
For which I need to go and visit a browser.

32:28.200 --> 32:31.080
And in that browser, I will type the address for that location

32:31.080 --> 32:33.560
where the machine is located.

32:33.560 --> 32:36.080
On line number 27, the address should be

32:36.080 --> 32:40.800
http colon slash slash, the machine's IP address.

32:40.800 --> 32:45.440
And then followed by, this is the IP address for the machine.

32:45.440 --> 32:48.360
And then I will type the address for the machine.

32:48.360 --> 32:52.960
It's IP address, and then followed by, this is the IP address,

32:52.960 --> 32:56.680
followed by port number 8760.

32:56.680 --> 32:59.160
That's where it should be running.

32:59.160 --> 33:02.280
So the IP address happens to be this name.

33:07.120 --> 33:12.080
So I'll take that name and put it right there.

33:12.080 --> 33:17.280
And it shows me not what I expect.

33:17.280 --> 33:20.280
We expect it to see, hello, Sanjay.

33:20.280 --> 33:23.440
And we get the default page.

33:23.440 --> 33:25.480
That's not what we wanted.

33:25.480 --> 33:28.480
And so that means our Dockerfile location

33:28.480 --> 33:33.280
that I chose in line number three

33:33.280 --> 33:34.840
is probably the right one.

33:34.840 --> 33:37.880
I don't know why things change, but we had to find it out.

33:37.880 --> 33:39.320
So let's go change it.

33:39.320 --> 33:42.360
There's a short method, quick and short dirty method.

33:42.360 --> 33:43.360
Change it.

33:43.360 --> 33:45.520
I did.

33:45.520 --> 33:46.680
And then save it.

33:46.680 --> 33:49.000
And then quickly build the entire process.

33:53.400 --> 33:54.360
How do you build?

33:54.360 --> 34:00.840
You take that name there and build it again.

34:00.840 --> 34:07.680
Then you run it, just like line number 27 was, like line 27.

34:07.680 --> 34:08.840
Here.

34:08.840 --> 34:22.160
And you kill the older processes first.

34:22.160 --> 34:25.480
Hold on, is it running or what?

34:25.480 --> 34:28.600
Docker ps-a-pipe grep.

34:34.120 --> 34:36.040
No, it is not running.

34:36.040 --> 34:39.640
So what is this showing us then?

34:39.640 --> 34:40.600
Where is it coming from?

34:43.800 --> 34:46.480
Something is running, but I don't see anything running.

34:46.480 --> 34:47.280
That's strange.

34:53.160 --> 34:55.200
Something is running there.

34:55.200 --> 34:58.200
And you need to kill it.

34:58.200 --> 35:00.280
So this must be something old running

35:00.280 --> 35:02.520
from my previous attempt at running this.

35:02.520 --> 35:03.840
So I'm going to kill that process.

35:03.840 --> 35:08.360
Docker rm-f b861.

35:08.360 --> 35:09.760
So it kills.

35:09.760 --> 35:11.920
That should go and check in the browser.

35:11.920 --> 35:13.160
It should say unable to connect.

35:13.160 --> 35:14.000
That's good.

35:14.000 --> 35:17.760
Now I will run our command to actually run

35:17.760 --> 35:22.160
this image one more time, which is line number 27.

35:22.160 --> 35:25.840
At the port I'm choosing is 8760.

35:25.840 --> 35:28.360
And so here it should run.

35:28.360 --> 35:32.280
And then we go open the browser and refresh.

35:32.280 --> 35:34.080
And we see, hello, Sanjay.

35:34.080 --> 35:35.600
That is the expected result. So I

35:35.600 --> 35:38.040
think something stale was there running in the background

35:38.040 --> 35:39.760
that I forgot to kill.

35:39.760 --> 35:42.200
So I found it, killed it, ran a refresh,

35:42.200 --> 35:44.400
and the result is available.

35:44.400 --> 35:52.280
What I want to do now is quickly build the image for Docker Hub

35:52.280 --> 35:53.080
also.

35:53.080 --> 35:55.720
Same idea, terminal.

35:55.720 --> 35:58.160
And we build this image last time

35:58.160 --> 36:00.440
using this name convention.

36:00.440 --> 36:02.720
So I'll build that image this time with the Docker Hub

36:02.720 --> 36:05.200
convention.

36:05.200 --> 36:07.040
And it builds.

36:07.040 --> 36:08.320
Then we'll say Docker push.

36:13.640 --> 36:17.640
And it pushes to Docker Hub.

36:17.640 --> 36:19.600
Access denied, it says.

36:19.600 --> 36:20.560
Strange.

36:20.560 --> 36:21.560
It says access denied.

36:21.560 --> 36:24.360
That means it is asking me to log in.

36:24.360 --> 36:26.920
So I'll try one more time.

36:26.920 --> 36:28.440
And it says access denied.

36:28.440 --> 36:32.440
That means I need to go Docker login.

36:32.440 --> 36:34.880
And it says Docker login succeeded

36:34.880 --> 36:39.280
because it previously picked up the Docker login

36:39.280 --> 36:41.160
from a cache location.

36:41.160 --> 36:44.240
It was cached locally in this location.

36:44.240 --> 36:48.360
And it says authenticating with existing credentials.

36:48.360 --> 36:51.040
Using a credential helper will remove this warning.

36:51.040 --> 36:52.400
Login succeeded.

36:52.400 --> 36:53.800
OK, fine.

36:53.800 --> 36:56.320
So please push it.

36:56.320 --> 36:58.680
So access is denied.

36:58.680 --> 37:01.680
And I have to go identify with a Docker login succeed,

37:01.680 --> 37:03.200
but the pushing is not allowed.

37:03.200 --> 37:04.880
What is going on?

37:04.880 --> 37:06.400
That is something I have to find out.

37:09.360 --> 37:11.600
Pushing is disallowed.

37:11.600 --> 37:16.280
So we will, I think, yeah.

37:16.280 --> 37:20.760
I think it's some kind of quota issue, apparently.

37:20.760 --> 37:25.560
It says I'm using four out of one private repositories, OK?

37:25.560 --> 37:28.120
What does that mean?

37:28.120 --> 37:29.080
Four out of one.

37:29.080 --> 37:31.160
I don't even want to use a private repository.

37:31.160 --> 37:33.320
I'm going to make it public.

37:33.320 --> 37:33.760
So settings.

37:36.600 --> 37:38.040
Let's go delete this.

37:38.040 --> 37:45.000
And so that's the reason why I don't

37:45.000 --> 37:47.200
like to use public repositories.

37:47.200 --> 37:50.360
Like this Docker hub company, they dictate things on you.

37:50.360 --> 37:53.000
Do this, don't do that, all that nonsense.

37:53.000 --> 37:54.280
So I run my own registry.

37:54.280 --> 37:56.040
I don't care.

37:56.040 --> 37:57.840
So I deleted that.

37:57.840 --> 38:01.240
So I hope that goes away.

38:01.240 --> 38:03.240
Still there, some deleting.

38:03.240 --> 38:05.280
It says deleting, which is fine.

38:05.280 --> 38:08.160
So let it delete.

38:08.160 --> 38:12.480
And I can maybe delete something else also.

38:12.480 --> 38:16.120
This was like two or three or four years ago.

38:16.120 --> 38:17.920
These images are not used and sitting here.

38:17.920 --> 38:19.400
I don't use this registry.

38:19.400 --> 38:22.000
That's why they have the old images sitting there.

38:22.000 --> 38:25.640
And so let's go let it delete first successfully.

38:25.640 --> 38:27.040
Deleting.

38:27.040 --> 38:30.400
So let's try pushing it.

38:30.400 --> 38:31.520
Access denied.

38:31.520 --> 38:33.600
Some policy issue here, apparently,

38:33.600 --> 38:36.080
that is preventing me from pushing.

38:36.080 --> 38:39.480
And they seem to have a bug of some solid type,

38:39.480 --> 38:41.000
which is very weird.

38:41.000 --> 38:44.040
It says four out of one private registry.

38:44.040 --> 38:45.880
This is mathematically incorrect.

38:45.880 --> 38:49.720
OK, so since I did not succeed with this Docker registry,

38:49.720 --> 38:52.400
by the way, you will succeed, because you may not

38:52.400 --> 38:53.800
have any images there.

38:53.800 --> 38:56.160
So there will be a quota of like one.

38:56.160 --> 39:00.840
So it's very, very minimal free quota they give you.

39:00.840 --> 39:04.320
And so that should work for the first image.

39:04.320 --> 39:06.280
And I'm trying to delete my existing images,

39:06.280 --> 39:08.120
and it is still stuck on deleting.

39:08.120 --> 39:09.840
It says depository being deleted.

39:09.840 --> 39:12.600
It should not take that long for deletions.

39:12.600 --> 39:14.600
But apparently, that was a mistake.

39:14.600 --> 39:17.640
But apparently, that's the state.

39:17.640 --> 39:19.560
So finally disappeared.

39:19.560 --> 39:21.040
OK, great.

39:21.040 --> 39:22.600
So I'm going to create a new repository.

39:22.600 --> 39:25.120
I'll call it Hello Sanjay.

39:25.120 --> 39:29.600
And make it public, clearly.

39:29.600 --> 39:31.560
And then create.

39:31.560 --> 39:33.760
So it is a public repository is empty.

39:33.760 --> 39:36.440
I'm going to now push it to that empty repository.

39:36.440 --> 39:38.320
And I hope this should succeed.

39:38.320 --> 39:39.840
This should push.

39:39.840 --> 39:40.560
Yes, it's pushing.

39:40.560 --> 39:41.600
Something happening.

39:41.600 --> 39:42.440
Different.

39:42.440 --> 39:45.480
So by default, I think it assumes

39:45.480 --> 39:47.400
that it is a private repository, and it's

39:47.400 --> 39:49.640
going to be limiting me for some budget criteria.

39:49.640 --> 39:51.040
I don't know what criteria.

39:51.040 --> 39:53.760
But if you create a repository manually

39:53.760 --> 39:58.960
like this on the Docker website, mark it public.

39:58.960 --> 40:00.720
I hope that will work.

40:00.720 --> 40:02.320
I'm hoping, because we don't know.

40:02.320 --> 40:04.680
So these are third-party companies

40:04.680 --> 40:09.400
that we depend on, but they're not sometimes dependable.

40:09.400 --> 40:12.000
And so that's why I tend to run everything myself

40:12.000 --> 40:14.280
in my own control.

40:14.280 --> 40:18.040
And then you run into issues like, I, certificate failed.

40:18.040 --> 40:18.680
That's OK.

40:18.680 --> 40:20.080
I know how to fix it.

40:20.080 --> 40:21.120
So I fixed it.

40:21.120 --> 40:22.680
And this thing, by the way, succeeded.

40:22.680 --> 40:25.520
So I pushed that image off to Docker Hub.

40:25.520 --> 40:26.680
That should show up here.

40:29.640 --> 40:32.240
And it does say pushed a few seconds ago.

40:32.240 --> 40:33.000
That's nice.

40:33.000 --> 40:34.880
It's a nice sign.

40:34.880 --> 40:37.560
OK, the image got pushed.

40:37.560 --> 40:40.760
So now that we have our image in two places, one of them

40:40.760 --> 40:46.480
is my home in line number six.

40:46.480 --> 40:49.400
And then also this Docker push to line number seven

40:49.400 --> 40:50.840
to Docker Hub also succeeded.

40:50.840 --> 40:54.640
We are not doing line number eight.

40:54.640 --> 40:56.640
OK, now what?

40:56.640 --> 40:57.880
So we have created an image.

40:57.880 --> 41:00.240
We need to use it now to some cloud.

41:00.240 --> 41:04.720
So let us go to some cloud here.

41:04.720 --> 41:11.240
The cloud I want to use today is, what's the cloud name?

41:11.240 --> 41:12.520
I forget the name.

41:12.520 --> 41:13.800
Headsner.

41:13.800 --> 41:16.120
So the random cloud, I just go to any cloud.

41:16.120 --> 41:18.760
I have accounts with every cloud.

41:18.760 --> 41:22.280
Headsner cloud, this is what I will be using.

41:22.280 --> 41:26.720
The reason for this is because it's a new cloud.

41:26.720 --> 41:33.280
And it is also pretty decent in terms of performance

41:33.280 --> 41:39.560
because it is local to our area, almost like to our drive.

41:39.560 --> 41:42.920
And I will be able to reach that location.

41:42.920 --> 41:44.640
So that's the Headsner cloud.

41:44.640 --> 41:46.680
It's actually a German company.

41:46.680 --> 41:48.040
And they have a location right here.

41:54.080 --> 41:58.400
So I think I should succeed in logging in.

41:58.400 --> 42:01.440
Maintenance work, what's new?

42:01.440 --> 42:03.280
Don't run your maintenance right now.

42:06.400 --> 42:10.360
Maintenance work on mirror, fine.

42:10.360 --> 42:12.200
When is it going to end?

42:12.200 --> 42:16.320
End at, OK, some maintenance happening.

42:16.320 --> 42:17.120
Whatever.

42:17.120 --> 42:21.400
So I will now go create a, sorry, select a project.

42:21.400 --> 42:22.440
I already have a project.

42:22.440 --> 42:24.240
Project is just the namespace.

42:24.240 --> 42:27.520
I will add a new machine there.

42:27.520 --> 42:29.640
And I will put that in Hillsboro, Oregon,

42:29.640 --> 42:34.560
which is almost two hours away from here, two, three hours.

42:34.560 --> 42:35.720
Maybe more than three.

42:35.720 --> 42:36.880
I don't know how far it is.

42:36.880 --> 42:38.760
But it's proximity.

42:38.760 --> 42:43.400
I will use this location.

42:43.400 --> 42:49.800
I will use an image called Ubuntu OS as the image, Ubuntu 22.04.

42:49.800 --> 42:54.640
And then we'll choose a cheap, small machine.

42:54.640 --> 42:55.960
Cheap is good.

42:55.960 --> 42:58.000
Small is better.

42:58.000 --> 43:01.280
And even better is free.

43:01.280 --> 43:03.440
You can get a free machine from many cloud companies,

43:03.440 --> 43:04.840
just so you know.

43:04.840 --> 43:08.040
And so free machine for certain conditions apply.

43:08.040 --> 43:09.600
And you need to read the conditions

43:09.600 --> 43:11.160
and then get the free machine.

43:11.160 --> 43:12.720
For me, it is not free.

43:12.720 --> 43:14.280
For you, it is going to be likely free

43:14.280 --> 43:17.000
if you are using it first time.

43:17.000 --> 43:20.080
And here I will make sure that I am providing them

43:20.080 --> 43:23.000
with my SSH key.

43:23.000 --> 43:27.520
So what I need to do is go to my machine

43:27.520 --> 43:30.360
and somebody also logging in again.

43:30.360 --> 43:33.760
So I'm going to let them in in the meeting.

43:33.760 --> 43:35.440
So they are coming into the meeting.

43:35.440 --> 43:39.120
And I am going to let them in.

43:39.120 --> 43:42.640
So hello, people who just joined.

43:42.640 --> 43:44.120
I am continuing.

43:44.120 --> 43:45.240
You can speak, by the way.

43:45.240 --> 43:47.600
So people who just joined, you can speak at any time.

43:47.600 --> 43:49.000
Open your mic and speak.

43:49.000 --> 43:51.760
There's no problem at all.

43:51.760 --> 43:54.560
So what I am doing next is take our image

43:54.560 --> 43:56.720
and push it out to the cloud, for which

43:56.720 --> 43:59.320
I need to, sorry, I already did that.

43:59.320 --> 44:03.560
What I need to get is a key pair from my computer

44:03.560 --> 44:05.840
and give to these guys, the cloud company.

44:05.840 --> 44:09.200
They need to know who I am.

44:09.200 --> 44:17.000
So I need to grab my key pair from here.

44:17.000 --> 44:20.080
That is my public key.

44:20.080 --> 44:23.680
So I need to grab that public key and give it to this company.

44:23.680 --> 44:32.400
So I'll cat that public key and then copy it.

44:39.520 --> 44:44.000
And then here onto the cloud company,

44:44.000 --> 44:49.880
I'll add a new key and paste it in.

44:49.880 --> 44:53.760
And it says, this SSH key already exists in the project.

44:53.760 --> 44:56.840
That means my key, they already know me.

44:56.840 --> 44:58.120
But that's how you do it.

44:58.120 --> 45:02.760
You get your public key, put it there, and then paste it in,

45:02.760 --> 45:03.760
and then save.

45:03.760 --> 45:05.600
Apparently, I already have my key there.

45:05.600 --> 45:07.000
I don't need to paste it.

45:07.000 --> 45:08.720
I just need to select it.

45:08.720 --> 45:11.200
So I selected it.

45:11.200 --> 45:22.400
And then scroll, scroll, scroll, and give it a name.

45:22.400 --> 45:24.840
We'll call it some cloud, or Sanjay cloud.

45:24.840 --> 45:25.480
How about that?

45:25.480 --> 45:27.440
Sanjay cloud.

45:27.440 --> 45:29.120
Or just Sanjay, or it doesn't matter.

45:29.120 --> 45:30.520
The name is not that relevant.

45:30.520 --> 45:32.640
So just put in some name for the machine.

45:32.640 --> 45:35.800
And then you have to purchase.

45:35.800 --> 45:39.400
Basically, you have to rent this machine from them.

45:39.400 --> 45:40.960
So I'm going to rent it.

45:40.960 --> 45:43.760
I will be spending some money on this activity.

45:43.760 --> 45:46.720
And I will be, if I keep this machine up and running

45:46.720 --> 45:53.240
for about one month, they will charge me $4.35.

45:53.240 --> 45:56.360
If you don't run it for a day, if you run it for a day,

45:56.360 --> 45:59.020
they'll divide it by 30, approximately.

45:59.020 --> 46:01.200
So create and buy.

46:01.200 --> 46:01.920
I purchased.

46:01.920 --> 46:03.680
The machine is getting ready.

46:03.680 --> 46:06.640
And I got this IP address.

46:06.640 --> 46:12.440
Grab it, copy it, and put it in my notes.

46:12.440 --> 46:16.280
So that's the IP address for my machine.

46:16.280 --> 46:18.280
Now that machine runs Ubuntu.

46:18.280 --> 46:21.280
It doesn't have Docker.

46:21.280 --> 46:23.960
So we need to put Docker in there.

46:23.960 --> 46:25.800
So this machine IP address that I have,

46:25.800 --> 46:28.680
it's called Sanjay cloud.

46:28.680 --> 46:31.040
That has the IP address right there.

46:31.040 --> 46:34.960
And it does not have anything else apart from basic Ubuntu

46:34.960 --> 46:35.760
OS.

46:35.760 --> 46:37.000
That's it.

46:37.000 --> 46:39.120
So we need to put everything we need there

46:39.120 --> 46:42.520
to make it run Docker, and then run our Docker

46:42.520 --> 46:43.840
image in that machine.

46:43.840 --> 46:45.440
And then you will see, hello, Sanjay,

46:45.440 --> 46:47.440
showing up as a result. That's what we're

46:47.440 --> 46:50.080
expecting to see at the end.

46:50.080 --> 46:53.160
So what are we going to do next?

46:53.160 --> 46:56.280
We are going to connect to that Sanjay cloud machine using

46:56.280 --> 46:58.880
this IP address.

46:58.880 --> 47:00.080
So we'll do that.

47:00.080 --> 47:12.240
I am going to take my command line again.

47:12.240 --> 47:15.000
This is the project we are working on, May 16.

47:15.000 --> 47:18.200
And here, I will SSH into that machine,

47:18.200 --> 47:23.080
into that remote head in a cloud machine in Hillsboro, Oregon.

47:23.080 --> 47:25.320
And the login name is root.

47:25.320 --> 47:26.600
And so it says, are you sure?

47:26.600 --> 47:30.000
And I say, yes, and it connects.

47:30.000 --> 47:31.200
Nice.

47:31.200 --> 47:32.200
What do we do now?

47:32.200 --> 47:33.960
Do you have Docker in there?

47:33.960 --> 47:35.400
No.

47:35.400 --> 47:40.520
Can you install Docker by typing these commands?

47:40.520 --> 47:41.880
Yes.

47:41.880 --> 47:44.720
Should you install Docker by typing these commands?

47:44.720 --> 47:46.000
Probably no.

47:46.000 --> 47:47.240
You don't.

47:47.240 --> 47:55.480
Because what you should do is go to the official documentation

47:55.480 --> 48:00.840
and search how to install Docker on Ubuntu 22.04.

48:00.840 --> 48:04.160
And that's how the DigitalOcean guys tell you.

48:04.160 --> 48:06.120
But that's DigitalOcean.

48:06.120 --> 48:08.440
I want to read the official documentation.

48:08.440 --> 48:10.840
So I go here.

48:10.840 --> 48:12.480
Install Docker engine on Ubuntu.

48:12.480 --> 48:15.720
That's the official documentation for Docker.

48:15.720 --> 48:18.440
So I'll follow that, not follow these commands.

48:18.440 --> 48:20.560
They give you a shortcut cheat method.

48:20.560 --> 48:21.960
You can use that.

48:21.960 --> 48:23.480
It's not illegal.

48:23.480 --> 48:25.720
You can totally use these methods, like these two methods

48:25.720 --> 48:28.000
they provide you.

48:28.000 --> 48:31.520
These two, one and two, they're OK.

48:31.520 --> 48:33.600
And it's not bad.

48:33.600 --> 48:36.960
But this is the official method.

48:36.960 --> 48:41.960
So we'll use the official method, not the shortcut method,

48:41.960 --> 48:44.760
which means you have to read.

48:44.760 --> 48:47.960
First thing, remove any old Docker that you have.

48:47.960 --> 48:49.840
I don't have any.

48:49.840 --> 48:53.280
Next, set up the app repository.

48:53.280 --> 49:00.720
So go copy this, run it, and then copy this.

49:00.720 --> 49:04.320
It should be fast, because it's a cloud-connected machine.

49:04.320 --> 49:06.360
My home is equally fast, I guess.

49:06.360 --> 49:07.080
So it's not bad.

49:07.080 --> 49:10.760
But if you're running from a different location

49:10.760 --> 49:13.360
and you do not have high-speed internet,

49:13.360 --> 49:16.560
that may be a bit slow if you run things locally,

49:16.560 --> 49:19.360
like.compile Docker images and pull down Docker images

49:19.360 --> 49:21.120
from cloud services.

49:21.120 --> 49:23.680
But this guy is actually the cloud itself.

49:23.680 --> 49:25.520
It's very high bandwidth, high-speed internet

49:25.520 --> 49:26.920
available to us.

49:26.920 --> 49:29.840
So we are following instructions line by line.

49:32.800 --> 49:35.680
No rocket science, just copy paste, nothing else.

49:39.120 --> 49:41.400
But just don't miss a step.

49:41.400 --> 49:42.800
That's the key.

49:42.800 --> 49:44.840
Don't miss it, and you should be OK.

49:47.880 --> 49:50.560
Then we install app update, and then install

49:50.560 --> 49:53.800
the Docker engine in the next step, like this.

49:57.040 --> 50:00.080
And this will install Docker, Docker compose,

50:00.080 --> 50:03.480
and any associated plugins needed.

50:03.480 --> 50:04.040
It'll do it.

50:06.760 --> 50:08.040
Then you have Docker.

50:08.040 --> 50:08.560
That's it.

50:08.560 --> 50:10.120
That's how the official method is.

50:10.120 --> 50:11.440
So you follow the official method

50:11.440 --> 50:15.640
as opposed to whatever else you read on some internet website.

50:15.640 --> 50:17.600
Don't do that.

50:17.600 --> 50:19.040
Always follow the official method.

50:19.040 --> 50:19.760
It's much better.

50:19.760 --> 50:26.080
Let me mute it.

50:32.480 --> 50:36.520
So I think Docker got installed.

50:36.520 --> 50:40.480
Then we will run, test it to see if it runs.

50:40.480 --> 50:41.640
I think it should run.

50:41.640 --> 50:44.320
But this pseudo thing is what I don't like.

50:44.320 --> 50:48.360
So I don't want to run pseudo for common usage.

50:48.360 --> 50:51.080
You should not use pseudo, generally speaking.

50:51.080 --> 50:52.840
Pseudo is avoidable.

50:52.840 --> 50:56.320
Pseudo is like what is called Superman, no, no, no.

50:56.320 --> 50:58.600
Spider-Man, Spider-Man.

50:58.600 --> 51:02.280
Uncle Ben says to Spider-Man.

51:02.280 --> 51:05.600
This challenge, I just went a couple of minutes back.

51:05.600 --> 51:08.680
I've asked my colleague also to join Sumit Muchhal.

51:08.680 --> 51:10.360
He is in the waiting room.

51:10.360 --> 51:10.840
I see.

51:10.840 --> 51:11.880
OK, let him in.

51:11.880 --> 51:16.400
I don't hear the, I admitted him.

51:16.400 --> 51:18.240
So he's coming in.

51:18.240 --> 51:19.440
OK, sure.

51:19.440 --> 51:20.760
I think he should be in now.

51:20.760 --> 51:25.600
So what I was talking to you about is pseudo.

51:25.600 --> 51:30.080
And pseudo is Uncle Ben telling Spider-Man,

51:30.080 --> 51:34.200
with great power comes great responsibility.

51:34.200 --> 51:36.800
So pseudo is like a superpower.

51:36.800 --> 51:38.480
Don't abuse it.

51:38.480 --> 51:41.400
Don't misuse it.

51:41.400 --> 51:42.280
That's the key.

51:42.280 --> 51:44.560
So that's what I want to talk about next,

51:44.560 --> 51:48.120
is this command asks you to run pseudo.

51:48.120 --> 51:49.160
You can run it.

51:49.160 --> 51:50.920
It doesn't hurt.

51:50.920 --> 51:52.640
So let's go run it first.

51:52.640 --> 51:55.000
So it says I'm unable to find Docker image,

51:55.000 --> 51:56.040
and so something happened.

51:56.040 --> 51:57.760
And it succeeded, by the way.

51:57.760 --> 52:00.680
Whatever it wanted to do, Docker ran successfully.

52:00.680 --> 52:04.240
But if you run Docker like this, it runs.

52:04.240 --> 52:10.760
So the idea of pseudo is simply this xkcd pseudo.

52:10.760 --> 52:13.520
Let's read this comic.

52:13.520 --> 52:14.720
The comic is like this.

52:14.720 --> 52:16.320
It's a cartoon, by the way.

52:16.320 --> 52:20.200
It's a meme in there.

52:20.200 --> 52:24.000
Make me a sandwich.

52:24.000 --> 52:27.040
This person on the sofa says, make me a sandwich.

52:27.040 --> 52:29.720
The other person says, what?

52:29.720 --> 52:33.040
Make it yourself.

52:33.040 --> 52:34.560
Then the other person on the sofa says,

52:34.560 --> 52:37.040
pseudo, make me a sandwich.

52:37.040 --> 52:39.400
And the other person says, OK.

52:39.400 --> 52:42.120
You see the difference with pseudo?

52:42.120 --> 52:44.360
This is a classic pseudo joke, by the way,

52:44.360 --> 52:45.480
if you do not know.

52:45.480 --> 52:48.280
That's what pseudo is, super power.

52:48.280 --> 52:50.640
And so with great power comes great responsibility.

52:50.640 --> 52:54.960
And so we just finished installing Docker.

52:54.960 --> 52:58.240
You can, there are some post installation steps here.

52:58.240 --> 53:01.200
After you install, there are good things to do.

53:01.200 --> 53:03.080
You should do that.

53:03.080 --> 53:05.400
Take, for example, here.

53:09.520 --> 53:13.880
Then here.

53:13.880 --> 53:15.480
There is meaning to every action you do.

53:15.480 --> 53:17.000
So you have to understand what these meanings are.

53:17.000 --> 53:18.760
So I'm not going into detail about what

53:18.760 --> 53:19.760
those things actually do.

53:19.760 --> 53:22.240
If you ask me a question, I will answer them.

53:22.240 --> 53:24.240
If you don't ask me, you have to read yourself.

53:28.440 --> 53:32.200
And I think that concludes our setup and installation

53:32.200 --> 53:34.760
and also the post installation steps of installing Docker

53:34.760 --> 53:37.960
Engine using the formal documentation.

53:37.960 --> 53:43.440
Having seen that, I will now proceed to the next step.

53:43.440 --> 53:45.920
Now that we have Docker in this machine

53:45.920 --> 53:48.080
and we have one image called hello world there already

53:48.080 --> 53:49.640
on that cloud machine.

53:49.640 --> 53:53.240
I want to bring my image there to the cloud machine.

53:53.240 --> 53:55.640
So how do I bring my image?

53:55.640 --> 54:00.880
I go to my registry, Docker Hub, line number 7,

54:00.880 --> 54:03.360
and make a copy of that.

54:03.360 --> 54:05.160
These two lines, 6 and 7.

54:05.160 --> 54:07.920
And instead of push, I'll say, pull.

54:10.840 --> 54:12.280
Like that.

54:12.280 --> 54:18.280
And so let's begin bringing that image from Docker Hub.

54:18.280 --> 54:20.480
It should pull.

54:20.480 --> 54:21.880
It pulled.

54:21.880 --> 54:24.280
That means we have two images now.

54:24.280 --> 54:26.800
One image is called hello world and the other one

54:26.800 --> 54:28.960
is hello Sanjay.

54:28.960 --> 54:31.920
Actually, the full name for that is not just hello Sanjay.

54:31.920 --> 54:37.760
It is my login name in Docker Hub followed by hello Sanjay.

54:37.760 --> 54:41.040
That's what you see here.

54:41.040 --> 54:45.880
So that image that I created in my home sent to Docker Hub.

54:45.880 --> 54:48.320
Docker Hub was able to pull it.

54:48.320 --> 54:49.800
Sorry, our machine in the cloud was

54:49.800 --> 54:52.080
able to pull it from Docker Hub.

54:52.080 --> 54:53.240
How did these things flow?

54:53.240 --> 54:54.160
Let's go check.

54:54.160 --> 54:57.080
I'll draw a picture.

54:57.080 --> 55:02.440
I created an image here in my home.

55:02.440 --> 55:03.800
And I pushed it to Docker Hub.

55:07.160 --> 55:09.280
Then I went to a cloud.

55:09.280 --> 55:11.920
Let's call it Headsnod.

55:11.920 --> 55:13.480
Created a machine there.

55:13.480 --> 55:16.880
And in that machine, I said, pull it.

55:16.880 --> 55:19.680
So it pulls.

55:19.680 --> 55:25.440
I also pushed this image to my own registry.

55:25.440 --> 55:30.760
Can I pull that image from my registry to the cloud?

55:30.760 --> 55:33.360
The answer is yes.

55:33.360 --> 55:37.800
As long as I'm able to pass a login and password.

55:37.800 --> 55:40.600
Because this is my own private registry

55:40.600 --> 55:43.560
that I run it myself locally here.

55:43.560 --> 55:47.040
And it is accessible only to me with a login and password

55:47.040 --> 55:50.320
that I have chosen for here.

55:50.320 --> 55:52.520
And so just like you have a Docker Hub login password,

55:52.520 --> 55:55.960
you will use that to pull and push and all that.

55:55.960 --> 56:00.200
Everything I do is like my own setup.

56:00.200 --> 56:03.680
It's completely disconnected from anything on the planet.

56:03.680 --> 56:04.840
I have my own cloud.

56:04.840 --> 56:06.520
Think of it that way.

56:06.520 --> 56:10.360
And so more people coming in, apparently.

56:10.360 --> 56:13.480
I think people get up whenever they feel like it.

56:13.480 --> 56:15.760
That's OK.

56:15.760 --> 56:18.400
I think it is kind of too early in India.

56:18.400 --> 56:18.920
So it's OK.

56:18.920 --> 56:21.000
It's accepted.

56:21.000 --> 56:25.800
So this image flew from here to here,

56:25.800 --> 56:27.200
and then from here to there.

56:27.200 --> 56:28.840
So we have it here now.

56:28.840 --> 56:33.040
So before I go into this other route, we'll do that later.

56:33.040 --> 56:37.640
Let's go play with this what we have in our hand first.

56:37.640 --> 56:43.720
So we have that image available to us in our cloud machine.

56:43.720 --> 56:45.200
We want to run it.

56:45.200 --> 56:46.520
How do you run it?

56:46.520 --> 56:47.880
Running is the same way.

56:47.880 --> 56:52.000
Like line numbers, where is that?

56:56.360 --> 56:58.640
32, 32.

56:58.640 --> 57:01.280
Well, I modify a little bit.

57:01.280 --> 57:08.520
Let's call it this.

57:08.520 --> 57:11.680
That's how you run it in a cloud setup.

57:11.680 --> 57:17.920
I run it locally, like 36, line 36.

57:17.920 --> 57:19.560
And I have some custom modifications

57:19.560 --> 57:21.280
from my home setup, so I don't want

57:21.280 --> 57:23.400
to worry about those aspects late right now.

57:23.400 --> 57:27.920
I will just run it like line number 32 in the cloud,

57:27.920 --> 57:29.600
like that.

57:29.600 --> 57:32.120
And then check what is running.

57:32.120 --> 57:34.160
And you see that there is a hello Docker that

57:34.160 --> 57:37.720
exited five minutes ago because I ran that command.

57:37.720 --> 57:39.720
And we have something else here running,

57:39.720 --> 57:41.720
which we wanted it to run.

57:41.720 --> 57:45.200
It is running currently and up and running for like two

57:45.200 --> 57:46.440
seconds.

57:46.440 --> 57:49.000
And it is currently mapped to port number 80

57:49.000 --> 57:51.240
as we expect it to be.

57:51.240 --> 57:52.560
Beautiful.

57:52.560 --> 57:54.240
So what's the next idea?

57:54.240 --> 57:56.280
It apparently is running.

57:56.280 --> 57:57.600
So let's go test it.

57:57.600 --> 58:03.600
Is it actually running in this machine at that IP address?

58:03.600 --> 58:05.320
Is it running for real?

58:05.320 --> 58:06.880
That's what I want to check.

58:06.880 --> 58:10.000
Are you just telling me something that should be

58:10.000 --> 58:11.080
or is it actually running?

58:11.080 --> 58:12.800
So show me what you have.

58:12.800 --> 58:17.560
So I'll open up that IP address with an HTTP protocol

58:17.560 --> 58:19.360
and hit it.

58:19.360 --> 58:22.040
And we get the result we expect.

58:22.040 --> 58:24.240
Hello, Sanjay.

58:24.240 --> 58:27.440
So it ran in the cloud.

58:27.440 --> 58:33.800
Now, what I want to say is that you

58:33.800 --> 58:38.520
can change whatever you want in your design and do it again.

58:38.520 --> 58:44.000
For example, I will go to my index.

58:44.000 --> 58:51.280
And this time, say, hello.

58:51.280 --> 58:53.360
Who's the new person just joined?

58:53.360 --> 58:54.160
What's his name?

58:54.160 --> 58:55.280
Sumit.

58:55.280 --> 58:56.920
Sumit.

58:56.920 --> 58:57.560
Hello, Sumit.

58:57.560 --> 58:59.280
I'll make it hello, Sumit now.

58:59.280 --> 59:02.840
So I did modify my code, the index file.

59:02.840 --> 59:07.480
And then I will execute the steps

59:07.480 --> 59:10.960
that I have in mind, which is simple.

59:10.960 --> 59:16.160
Build the Docker image with the Docker hub name line number 4.

59:16.160 --> 59:17.800
I will come out of that heads not cloud,

59:17.800 --> 59:20.000
by the way, exit from the cloud.

59:20.000 --> 59:29.520
But before I exit, let me clean up Docker RM-F.

59:29.520 --> 59:32.440
Typing mistake.

59:32.440 --> 59:33.800
And it kills some things.

59:33.800 --> 59:37.040
Let's go see what it killed.

59:37.040 --> 59:38.120
Did it kill properly?

59:38.120 --> 59:39.200
Yes, it did.

59:39.200 --> 59:41.440
And what are the images available there?

59:41.440 --> 59:42.040
Two images.

59:42.040 --> 59:43.440
Let's go delete both these images

59:43.440 --> 59:44.640
so that there's no confusion.

59:44.640 --> 59:50.760
So Docker RMI, this image ID, and also that image ID.

59:50.760 --> 59:52.760
So let's kill them all.

59:52.760 --> 59:53.600
Nice.

59:53.600 --> 59:55.000
And what do we have there?

59:55.000 --> 59:58.880
No images and no processes.

59:58.880 --> 01:00:00.000
Clean.

01:00:00.000 --> 01:00:01.320
OK, exit.

01:00:01.320 --> 01:00:03.560
Back to my machine.

01:00:03.560 --> 01:00:06.000
In this machine, what do I have?

01:00:06.000 --> 01:00:09.200
I have an old image, which contains hello, Sanjay.

01:00:09.200 --> 01:00:13.280
I want to make it hello, Sumit, like this.

01:00:13.280 --> 01:00:16.680
So I will have to build new images.

01:00:16.680 --> 01:00:18.920
How do you build a new image?

01:00:18.920 --> 01:00:24.560
You run line number 4 like that and take it to the command line

01:00:24.560 --> 01:00:25.800
and run it.

01:00:25.800 --> 01:00:27.200
It builds.

01:00:27.200 --> 01:00:28.360
Nice.

01:00:28.360 --> 01:00:31.600
What do we do next?

01:00:31.600 --> 01:00:36.480
We push that image to wherever we feel like,

01:00:36.480 --> 01:00:38.840
like we are currently dealing with Docker Hub.

01:00:38.840 --> 01:00:41.840
So we'll push it to Docker Hub, like line number 7.

01:00:41.840 --> 01:00:44.760
And this time, the push will contain the name Sumit

01:00:44.760 --> 01:00:47.040
as opposed to Sanjay.

01:00:47.040 --> 01:00:50.040
So it pushes.

01:00:50.040 --> 01:00:52.360
You will see most of the layers already exist.

01:00:52.360 --> 01:00:57.120
The only thing that is pushed is just this layer.

01:00:59.840 --> 01:01:02.600
Every other layer already exists because it's

01:01:02.600 --> 01:01:05.080
identical between Sumit and Sanjay.

01:01:05.080 --> 01:01:09.240
So what it did here is removed Sanjay and put Sumit there.

01:01:09.240 --> 01:01:11.560
That's the only layer that was pushed.

01:01:11.560 --> 01:01:14.560
Everything else already existed because we did not change any,

01:01:14.560 --> 01:01:16.120
just one layer.

01:01:16.120 --> 01:01:17.280
So pushing was efficient.

01:01:20.960 --> 01:01:25.160
Next, I want to take that image and send it

01:01:25.160 --> 01:01:28.880
to the cloud, for which I need to go to the cloud.

01:01:28.880 --> 01:01:30.960
So here is how you go.

01:01:30.960 --> 01:01:32.200
SSH to the cloud.

01:01:32.200 --> 01:01:33.800
Now we are connected there.

01:01:33.800 --> 01:01:36.200
In that cloud, we have this image.

01:01:36.200 --> 01:01:37.560
I already deleted them.

01:01:37.560 --> 01:01:39.360
So we have no images there.

01:01:39.360 --> 01:01:43.240
So I want to bring that image from Docker Hub over to my cloud.

01:01:43.240 --> 01:01:44.520
How do I do that?

01:01:44.520 --> 01:01:48.560
I pull line number 11.

01:01:48.560 --> 01:01:49.760
And I run it.

01:01:49.760 --> 01:01:51.240
So it pulls.

01:01:51.240 --> 01:01:54.640
When it pulls this time, it will come with Sumit.

01:01:54.640 --> 01:01:56.520
And it came.

01:01:56.520 --> 01:01:58.720
And I will run now.

01:01:58.720 --> 01:02:00.000
I will run.

01:02:00.000 --> 01:02:00.520
How do you run?

01:02:05.040 --> 01:02:07.960
How do you run?

01:02:07.960 --> 01:02:12.160
You run it like line number 32, like this.

01:02:12.160 --> 01:02:17.600
So you copy and execute.

01:02:17.600 --> 01:02:25.240
It is running on port number 80 on the machine in the cloud,

01:02:25.240 --> 01:02:29.200
Heznar cloud, Heznar cloud.

01:02:29.200 --> 01:02:32.000
This is the port on the container.

01:02:32.000 --> 01:02:32.800
Which container?

01:02:32.800 --> 01:02:34.320
This container.

01:02:34.320 --> 01:02:38.280
It is running our custom created image.

01:02:38.280 --> 01:02:41.520
And it's up and running for two seconds or more.

01:02:41.520 --> 01:02:45.680
And this mapping is between port on the machine,

01:02:45.680 --> 01:02:47.880
port on the container.

01:02:47.880 --> 01:02:49.280
That's the mapping.

01:02:49.280 --> 01:02:51.520
So now we should see, hello, Sumit,

01:02:51.520 --> 01:02:56.960
when we visit that IP address on a HTTP protocol.

01:02:56.960 --> 01:03:00.240
So let's open browser and refresh.

01:03:00.240 --> 01:03:01.640
And you see Sumit.

01:03:01.640 --> 01:03:03.360
That's simple as that.

01:03:03.360 --> 01:03:04.440
Any questions?

01:03:09.000 --> 01:03:12.080
No questions?

01:03:12.080 --> 01:03:14.840
Was I absolutely clear about what I was doing?

01:03:14.840 --> 01:03:15.520
That was amazing.

01:03:19.400 --> 01:03:22.560
Nobody wants to say anything, and that's OK.

01:03:22.560 --> 01:03:25.880
Let's check time, because I tend to forget

01:03:25.880 --> 01:03:29.040
what time we have spent.

01:03:29.040 --> 01:03:31.360
So it is 8.39.

01:03:31.360 --> 01:03:33.120
We started at 7.30.

01:03:33.120 --> 01:03:35.040
And so it's about an hour, more than an hour.

01:03:35.040 --> 01:03:38.200
So if you have a specific question about something else,

01:03:38.200 --> 01:03:40.720
like how do you build a complex application,

01:03:40.720 --> 01:03:44.440
or how do you use something different, ask that.

01:03:44.440 --> 01:03:46.720
If you don't ask, I'll do whatever I feel like.

01:03:46.720 --> 01:03:48.120
OK, go ahead.

01:03:48.120 --> 01:03:52.000
So this is Sumit.

01:03:52.000 --> 01:03:52.960
Hi.

01:03:52.960 --> 01:03:54.440
So I have a complex question.

01:03:54.440 --> 01:03:57.040
Basically, let's say we have a legacy application which

01:03:57.040 --> 01:03:59.600
is deployed to WebSphere.

01:03:59.600 --> 01:04:02.440
We don't want to migrate that to Tomcat for documentation

01:04:02.440 --> 01:04:04.560
purpose, but we want to dockerize that application

01:04:04.560 --> 01:04:07.920
and run it in a WebSphere itself as a Docker image.

01:04:07.920 --> 01:04:09.680
How should we approach that?

01:04:09.680 --> 01:04:10.680
Don't.

01:04:10.680 --> 01:04:12.120
That's not how you do it.

01:04:12.120 --> 01:04:13.160
You actually consider it.

01:04:13.160 --> 01:04:14.760
I know.

01:04:14.760 --> 01:04:18.400
But that's the expectation from our customers.

01:04:18.400 --> 01:04:20.520
So we got to fulfill and work with the customer

01:04:20.520 --> 01:04:23.240
until they migrated to Tomcat, and everyone has a budget

01:04:23.240 --> 01:04:24.800
and other things.

01:04:24.800 --> 01:04:27.520
So definitely, we are actually doing a couple

01:04:27.520 --> 01:04:29.800
of applications like this, and we are

01:04:29.800 --> 01:04:31.320
categorizing it for a WebSphere.

01:04:31.320 --> 01:04:33.960
But I just wanted to know your opinion.

01:04:33.960 --> 01:04:35.880
I understand one part is we shouldn't do it.

01:04:35.880 --> 01:04:36.440
We agree.

01:04:36.440 --> 01:04:39.080
But if we have to approach for some reason,

01:04:39.080 --> 01:04:41.440
what should be the strategy?

01:04:41.440 --> 01:04:42.120
I'll answer it.

01:04:42.120 --> 01:04:42.720
I'll answer it.

01:04:42.720 --> 01:04:43.240
Hold on.

01:04:43.240 --> 01:04:43.760
Hold on.

01:04:43.760 --> 01:04:46.640
I think somebody is calling me from India.

01:04:46.640 --> 01:04:47.600
These are my parents.

01:04:47.600 --> 01:04:49.280
So I'll just tell them briefly.

01:04:49.280 --> 01:04:50.000
We'll stand by.

01:04:50.000 --> 01:04:50.500
Sure.

01:04:50.500 --> 01:04:51.000
Mm-hmm.

01:04:54.200 --> 01:04:54.920
Hello.

01:04:54.920 --> 01:04:55.880
I'm in a meeting.

01:04:55.880 --> 01:04:56.960
I'll talk to you later.

01:04:56.960 --> 01:04:57.560
I'm in a meeting.

01:04:57.560 --> 01:04:58.480
I'll talk to you later.

01:04:58.480 --> 01:05:02.040
OK.

01:05:02.040 --> 01:05:03.600
So let me understand the question.

01:05:03.600 --> 01:05:06.720
The question you're asking me is like this.

01:05:06.720 --> 01:05:09.160
It's like this.

01:05:09.160 --> 01:05:11.760
And correct me if I'm wrong.

01:05:11.760 --> 01:05:12.720
Notes.

01:05:12.720 --> 01:05:14.840
Where are the notes?

01:05:14.840 --> 01:05:15.520
Here.

01:05:15.520 --> 01:05:17.920
The question you're asking me is you have some application

01:05:17.920 --> 01:05:18.200
under it.

01:05:18.200 --> 01:05:19.960
You don't want to dockerize it, but still

01:05:19.960 --> 01:05:22.000
want to run it in a container, right?

01:05:22.000 --> 01:05:22.880
Is that what you want?

01:05:22.880 --> 01:05:24.280
No, we want to dockerize it.

01:05:24.280 --> 01:05:24.800
No, no, no.

01:05:24.800 --> 01:05:28.600
So what I have is an app which is running on a WebSphere

01:05:28.600 --> 01:05:29.960
server today.

01:05:29.960 --> 01:05:31.480
Mm-hmm.

01:05:31.480 --> 01:05:33.000
OK.

01:05:33.000 --> 01:05:33.920
And what's underneath?

01:05:33.920 --> 01:05:38.680
We want to containerize and run in a WebSphere container

01:05:38.680 --> 01:05:39.640
as an image, basically.

01:05:39.640 --> 01:05:41.840
Basically, we want to dockerize the application

01:05:41.840 --> 01:05:45.360
and use WebSphere as a server, as a docker image,

01:05:45.360 --> 01:05:48.080
so that we don't need to use the full feature of WebSphere.

01:05:48.080 --> 01:05:51.160
But we can use their servers, which

01:05:51.160 --> 01:05:53.240
comes for a Liberty server, basically,

01:05:53.240 --> 01:05:56.320
which comes from a WebSphere as a docker purpose.

01:05:56.320 --> 01:05:56.920
Hold on, hold on.

01:05:56.920 --> 01:05:58.680
I think I understand a little bit more.

01:05:58.680 --> 01:06:00.360
Tell me a little bit what you have.

01:06:00.360 --> 01:06:02.160
So I think I have a solution for you.

01:06:02.160 --> 01:06:03.520
So you have an application.

01:06:03.520 --> 01:06:04.560
You have a WebSphere.

01:06:04.560 --> 01:06:07.360
What do you have underneath?

01:06:07.360 --> 01:06:10.480
So we have a DB2 as a database, let's say,

01:06:10.480 --> 01:06:12.880
which is our applications are connecting.

01:06:12.880 --> 01:06:15.560
And this is pretty much a pretty simple web application, right?

01:06:15.560 --> 01:06:19.720
So you have either you can say Spring Boot or a simple JSP

01:06:19.720 --> 01:06:23.960
servlet application, that's the application architecture, right?

01:06:23.960 --> 01:06:24.840
And it's a pure play.

01:06:24.840 --> 01:06:28.080
You will have some UI, some back end services, and database.

01:06:28.080 --> 01:06:28.800
That's it.

01:06:28.800 --> 01:06:31.880
Nothing more complex than that.

01:06:31.880 --> 01:06:34.640
What else is below that, like up to the hardware level?

01:06:34.640 --> 01:06:36.600
Go down.

01:06:36.600 --> 01:06:41.920
So these are basically deployed on on-prem servers, basically.

01:06:41.920 --> 01:06:44.480
So you will have a machine with a Linux machine,

01:06:44.480 --> 01:06:46.680
and WebSphere are installed on that.

01:06:46.680 --> 01:06:49.360
And then you will just go to the WebSphere console

01:06:49.360 --> 01:06:52.920
and deploy those applications in the current environment.

01:06:52.920 --> 01:06:55.880
So this is OS that you have, and then you put WebSphere

01:06:55.880 --> 01:07:00.080
directly on the OS is the current design.

01:07:00.080 --> 01:07:00.760
That's true.

01:07:00.760 --> 01:07:02.840
Yeah, and I may not be 100% sure,

01:07:02.840 --> 01:07:05.280
because WebSphere is managed by an infrastructure team.

01:07:05.280 --> 01:07:07.000
So how they put it on the servers,

01:07:07.000 --> 01:07:09.680
that I may not be aware, but it is deployed on a,

01:07:09.680 --> 01:07:13.160
I will say, Linux server, where we have a console access,

01:07:13.160 --> 01:07:15.440
where we go and deploy our application once we build it.

01:07:15.440 --> 01:07:17.240
It's a manual process today.

01:07:17.240 --> 01:07:17.760
Yes.

01:07:17.760 --> 01:07:20.760
So now, in the other scenario, what do you want?

01:07:20.760 --> 01:07:22.840
Let me understand that piece also.

01:07:22.840 --> 01:07:23.400
Yes.

01:07:23.400 --> 01:07:27.040
So basically, we are reaching to the end of life for WebSphere.

01:07:27.040 --> 01:07:30.880
So that's our aim to remove the WebSphere dependency.

01:07:30.880 --> 01:07:35.080
So what we want to do is, as we have a lot of legacy

01:07:35.080 --> 01:07:38.400
applications, we cannot convert them to Tomcat today,

01:07:38.400 --> 01:07:40.440
because that will take a lot of time.

01:07:40.440 --> 01:07:43.000
With the limited time, we want to containerize

01:07:43.000 --> 01:07:46.000
these applications so that even from on-prem,

01:07:46.000 --> 01:07:49.000
we can run it on an AWS cloud using a Liberty server.

01:07:49.000 --> 01:07:50.880
That's our aim.

01:07:50.880 --> 01:07:53.880
So I'll tell you a trick to experiment with.

01:07:53.880 --> 01:07:55.960
I'll tell you how to experiment.

01:07:55.960 --> 01:07:57.840
What you can consider experimenting,

01:07:57.840 --> 01:08:02.480
begin experimenting, is take your WebSphere, simple thing,

01:08:02.480 --> 01:08:06.880
and run it in a Docker container by writing a Docker file.

01:08:06.880 --> 01:08:08.360
OK.

01:08:08.360 --> 01:08:10.800
And then you add your app on top.

01:08:10.800 --> 01:08:14.760
So write this Docker file containing WebSphere itself.

01:08:14.760 --> 01:08:16.440
I have never done this action this way,

01:08:16.440 --> 01:08:20.320
but this is something I want you to test, is to experiment

01:08:20.320 --> 01:08:23.920
and figure out if you can run WebSphere in a Docker file.

01:08:23.920 --> 01:08:25.320
How do you do that?

01:08:25.320 --> 01:08:27.000
You cheat.

01:08:27.000 --> 01:08:37.400
And you say, run WebSphere in Docker file.

01:08:37.400 --> 01:08:38.840
And there it is.

01:08:38.840 --> 01:08:40.400
IBM says something, something.

01:08:40.400 --> 01:08:42.800
So you read IBM's methods.

01:08:42.800 --> 01:08:45.480
So there is some write-up here, right?

01:08:45.480 --> 01:08:47.560
IBM Cloud, God knows what.

01:08:47.560 --> 01:08:51.160
But this is big company nonsense.

01:08:51.160 --> 01:08:53.680
So I'll go away from that.

01:08:53.680 --> 01:08:54.880
I'll go with Docker Hub.

01:08:54.880 --> 01:08:57.360
It's much cleaner, usually.

01:08:57.360 --> 01:09:00.520
So somebody is running traditional Docker WebSphere,

01:09:00.520 --> 01:09:02.600
and they have a Docker build method.

01:09:02.600 --> 01:09:05.760
And then let's go click the Docker build.

01:09:05.760 --> 01:09:09.200
And so let's select some version number that you like.

01:09:09.200 --> 01:09:11.880
Do you have a version number in mind?

01:09:11.880 --> 01:09:13.520
Yeah, version nine should be fine.

01:09:13.520 --> 01:09:14.480
Yeah, nine.

01:09:14.480 --> 01:09:16.240
So here is your Docker file.

01:09:16.240 --> 01:09:19.720
You copy, paste, and experiment.

01:09:19.720 --> 01:09:22.120
That's how you build it, right?

01:09:22.120 --> 01:09:25.640
So you take this, use this Docker file, experiment.

01:09:25.640 --> 01:09:27.400
Let's see what it does at the end.

01:09:27.400 --> 01:09:32.320
Yeah, it is running your server for you.

01:09:32.320 --> 01:09:34.000
So this is the cheat code.

01:09:34.000 --> 01:09:38.880
You see if this, so by the way, I should clarify this.

01:09:38.880 --> 01:09:39.800
This is legalese.

01:09:39.800 --> 01:09:42.960
So I'm going to say that out.

01:09:42.960 --> 01:09:45.040
If you work for a company, if you're

01:09:45.040 --> 01:09:46.720
a student learning something, you

01:09:46.720 --> 01:09:48.360
don't have to worry about these things.

01:09:48.360 --> 01:09:50.600
But if you're a company, it sounds like you are.

01:09:50.600 --> 01:09:53.480
So you should worry about talking to your attorney.

01:09:53.480 --> 01:09:54.680
Don't listen to what I say.

01:09:54.680 --> 01:09:56.920
Because I speak like whatever I feel like.

01:09:56.920 --> 01:10:00.040
I am not your attorney, and I'm not even your advisor.

01:10:00.040 --> 01:10:03.160
So just stating that very clearly,

01:10:03.160 --> 01:10:06.840
that I am not representing you or your company or your whatever.

01:10:06.840 --> 01:10:08.800
I'm not your attorney.

01:10:08.800 --> 01:10:10.800
And have you understood that?

01:10:10.800 --> 01:10:15.720
Talk to your attorney whether you should copy this file.

01:10:15.720 --> 01:10:19.480
Because what I am telling you is how to potentially experiment.

01:10:19.480 --> 01:10:23.040
So talk to your lawyers and see if you can use this file,

01:10:23.040 --> 01:10:27.400
modify it, test it, run it, and ask me questions.

01:10:27.400 --> 01:10:28.560
I'll answer them.

01:10:28.560 --> 01:10:32.600
But I'll answer only questions as to what can be done,

01:10:32.600 --> 01:10:35.720
how to fix a problem, how to get it to work,

01:10:35.720 --> 01:10:40.040
but whether you should do it or you should not is not my problem.

01:10:40.040 --> 01:10:42.000
Don't come after me.

01:10:42.000 --> 01:10:43.160
I totally understand.

01:10:43.160 --> 01:10:43.920
I totally understand.

01:10:43.920 --> 01:10:45.400
Yeah, definitely.

01:10:45.400 --> 01:10:48.320
So I was looking for if you have done this type of work

01:10:48.320 --> 01:10:50.720
and if you have suggestions.

01:10:50.720 --> 01:10:53.200
So basically, I think it is more of an experiment which

01:10:53.200 --> 01:10:58.400
everybody needs to do as a part of this forum, which I totally

01:10:58.400 --> 01:10:58.920
agree.

01:10:58.920 --> 01:11:01.320
So I got my answer, Nilesh.

01:11:01.320 --> 01:11:03.440
Usually, I don't talk to company people.

01:11:03.440 --> 01:11:05.440
I usually talk to individuals.

01:11:05.440 --> 01:11:08.720
I did not know you were going to ask me a business question.

01:11:08.720 --> 01:11:11.320
It's not a business question, but it's more of a design

01:11:11.320 --> 01:11:11.960
question.

01:11:11.960 --> 01:11:14.480
How do you solve those type of problems?

01:11:14.480 --> 01:11:16.040
It's a thought process I'm trying to.

01:11:16.040 --> 01:11:17.480
It's not that something we are going

01:11:17.480 --> 01:11:18.840
to copy paste from somewhere.

01:11:18.840 --> 01:11:21.200
We have already done this type of project.

01:11:21.200 --> 01:11:22.720
But I wanted to understand if you

01:11:22.720 --> 01:11:27.080
have a better way of approaching this problem.

01:11:27.080 --> 01:11:28.800
The ideal way is to take straight

01:11:28.800 --> 01:11:32.360
to a proper Java solution or whatever languages

01:11:32.360 --> 01:11:36.560
you are using and run it the native way that Oracle

01:11:36.560 --> 01:11:37.360
would recommend.

01:11:37.360 --> 01:11:39.720
That's the right way.

01:11:39.720 --> 01:11:42.160
It's a JSP Java application, right?

01:11:42.160 --> 01:11:43.520
That's correct, yeah.

01:11:43.520 --> 01:11:46.080
So do the right way is what I would recommend.

01:11:46.080 --> 01:11:47.960
But interim hacks and experimentation,

01:11:47.960 --> 01:11:50.640
you can go like copy from this and put something,

01:11:50.640 --> 01:11:53.600
get the Tomcat running, put your application on top,

01:11:53.600 --> 01:11:56.360
connect it to the DB2 database, and get things to work.

01:11:56.360 --> 01:12:00.120
That's the interim step for experimentation in-house.

01:12:00.120 --> 01:12:00.720
Got it.

01:12:00.720 --> 01:12:01.640
It is possible.

01:12:01.640 --> 01:12:03.440
You can experiment totally.

01:12:03.440 --> 01:12:05.680
But check with your company, check with your attorney,

01:12:05.680 --> 01:12:09.560
check with the owners of your company, and figure it out.

01:12:09.560 --> 01:12:12.560
Don't bring my name in the company business.

01:12:12.560 --> 01:12:14.440
That's what I'm really telling you.

01:12:14.440 --> 01:12:15.280
OK?

01:12:15.280 --> 01:12:16.280
I hope you understand.

01:12:16.280 --> 01:12:16.800
Yes.

01:12:16.800 --> 01:12:18.520
Yes, I do.

01:12:18.520 --> 01:12:20.680
Awesome.

01:12:20.680 --> 01:12:24.120
Shailendra Gupta, this name sounds like a GSTI name.

01:12:24.120 --> 01:12:24.720
Is that right?

01:12:28.080 --> 01:12:29.120
Shailendra?

01:12:29.120 --> 01:12:31.880
Nilesh, I'm from Bhopal.

01:12:31.880 --> 01:12:34.560
Yeah.

01:12:34.560 --> 01:12:41.280
So if you go back, I'll say 25, 30 years back,

01:12:41.280 --> 01:12:47.320
I'm from Bhopal and met a couple of times earlier as well.

01:12:47.320 --> 01:12:48.840
OK, OK, OK, OK.

01:12:48.840 --> 01:12:50.120
Good, good.

01:12:50.120 --> 01:12:52.080
Maybe we are recording these things.

01:12:52.080 --> 01:12:56.080
So maybe we'll talk separately after the recordings are over.

01:12:56.080 --> 01:12:59.840
So let me then conclude the session discussion for today

01:12:59.840 --> 01:13:02.640
with a cautionary word again for Sumit,

01:13:02.640 --> 01:13:06.080
is whatever I just told you, it is purely for education

01:13:06.080 --> 01:13:08.560
and understanding and not for actual implementation.

01:13:08.560 --> 01:13:10.680
Don't take my advice as business advice.

01:13:10.680 --> 01:13:11.680
I am not your attorney.

01:13:11.680 --> 01:13:13.680
I am not your consultant.

01:13:13.680 --> 01:13:16.600
It's purely for educational and understanding purposes.

01:13:16.600 --> 01:13:20.040
Having said, I will now summarize and then

01:13:20.040 --> 01:13:21.000
close the recording.

01:13:21.000 --> 01:13:23.080
So summary was we took an image, sorry,

01:13:23.080 --> 01:13:27.560
we created an image from scratch like this, Docker file,

01:13:27.560 --> 01:13:31.200
build something, put an image, put an index file there,

01:13:31.200 --> 01:13:34.360
build our own image, post it to some Docker registry.

01:13:34.360 --> 01:13:37.600
I did not run my own registry right now,

01:13:37.600 --> 01:13:41.360
but I did at least half the way we were using my own registry.

01:13:41.360 --> 01:13:46.280
But then we switched to Docker Hub and the whole thing ran.

01:13:46.280 --> 01:13:52.160
And what you see as the end result is simply this.

01:13:52.160 --> 01:13:53.160
That's what we wanted.

01:13:53.160 --> 01:13:54.280
That's what we got.

01:13:54.280 --> 01:13:56.680
So with that, I will conclude the session for today,

01:13:56.680 --> 01:13:57.920
stop the recording.

01:13:57.920 --> 01:14:02.040
You should suggest to me what should be the session topic

01:14:02.040 --> 01:14:03.840
for the next week meeting.

01:14:03.840 --> 01:14:05.360
We run it every week.

01:14:05.360 --> 01:14:09.800
At the same time, whatever time is in your time zone,

01:14:09.800 --> 01:14:12.240
the same time every week, that's what we do.

01:14:12.240 --> 01:14:16.000
And the recordings show up in a Spotify podcast,

01:14:16.000 --> 01:14:17.120
in a video form.

01:14:17.120 --> 01:14:18.160
So that's what happens.

01:14:18.160 --> 01:14:20.680
With that, I will now stop the recording

01:14:20.680 --> 01:14:22.480
and we'll continue our conversation

01:14:22.480 --> 01:14:24.800
if you have a specific question of some sorts.

01:14:24.800 --> 01:14:26.160
So stopping the recording now.

01:14:26.160 --> 01:14:26.960
Thank you very much.

01:14:26.960 --> 01:14:27.640
Bye bye.

01:14:27.640 --> 01:14:51.080
I mean, don't go away, but bye bye.

Show more...
2 years ago

The Cloud Seminar
Building Custom Docker Images #0004

Summary:

In this session, I describe how WordPress builds their official images by traversing through its official Dockerfile and it's series of dependencies on php-apache, debian docker images all way down to scratch.

Next, I build a custom Dockerfile that would create our own custom docker image containing a customized runtime output. I then push our image to our own custom docker registry while describing how one could use Azure, Google, or Amazon container registries apart from Docker Hub.

AI Generated Transcript

WEBVTT

00:00.000 --> 00:10.440
And the recording will become available as a podcast in a location that you may or may

00:10.440 --> 00:11.440
not know.

00:11.440 --> 00:16.140
But if you go to my Twitter profile, you will see that there is this button right there

00:16.140 --> 00:17.640
meeting video recordings.

00:17.640 --> 00:20.560
If you hit on that button, it takes you to the podcast.

00:20.560 --> 00:23.980
That's where the recordings show up in Spotify.

00:23.980 --> 00:27.760
So today's recording will show up right here in like 24 hours.

00:27.760 --> 00:30.560
So that's where you can see the recording later on.

00:30.560 --> 00:33.480
And I am beginning our discussion.

00:33.480 --> 00:37.320
We are not streaming today for some technical reasons.

00:37.320 --> 00:45.600
Having said the topic for today is this, which you can read and it is about taking any application

00:45.600 --> 00:48.720
in any language that you have.

00:48.720 --> 00:55.560
And I will containerize it and run it in some cloud.

00:55.560 --> 00:56.840
That's the idea.

00:56.840 --> 00:58.400
So what is containerization?

00:58.400 --> 01:02.320
I think you probably kind of sort of know, but I will demonstrate that by doing it and

01:02.320 --> 01:04.720
then also describe as we go along.

01:04.720 --> 01:10.880
Now to containerize something, we need to have an application already that we will then

01:10.880 --> 01:14.960
run it directly first on the computer if you want.

01:14.960 --> 01:16.100
But that's not the goal.

01:16.100 --> 01:21.320
The goal is to containerize it and then run it inside a Docker container so that we can

01:21.320 --> 01:24.660
take that container image and put that in a cloud.

01:24.660 --> 01:30.640
So that's the portions that we will basically deal with where to get an app already.

01:30.640 --> 01:32.280
If you have an app, give it to me.

01:32.280 --> 01:37.760
If you don't have an app, I will get an app from somewhere open source.

01:37.760 --> 01:43.520
And then containerize it like that's the meat of the discussion today is taking an app and

01:43.520 --> 01:44.520
how do you do that?

01:44.520 --> 01:46.280
That's the most of the discussion.

01:46.280 --> 01:52.560
And then once you have it containerized, running it in any cloud is a subsequent step.

01:52.560 --> 01:56.080
We'll do that also later on.

01:56.080 --> 01:57.080
Probably not.

01:57.080 --> 01:58.080
It may not happen today.

01:58.080 --> 02:00.040
Just so you know, it may extend into another session.

02:00.040 --> 02:04.160
So we'll take this application and begin the direction.

02:04.160 --> 02:08.160
Apparently, you don't have any app to give it to me, which is fine.

02:08.160 --> 02:10.840
So I'll just pick an app myself.

02:10.840 --> 02:16.000
What I intend to pick is what we discussed briefly in the last session about an application

02:16.000 --> 02:19.600
known as WordPress.

02:19.600 --> 02:23.800
This is a open source product.

02:23.800 --> 02:25.400
It's available from here.

02:25.400 --> 02:30.080
You can download it and install it.

02:30.080 --> 02:31.160
And how do you install it?

02:31.160 --> 02:34.200
You read the installation guide.

02:34.200 --> 02:37.920
And this is the installation instructions.

02:37.920 --> 02:43.840
So we'll basically follow these instructions in a manner that will help us run this application

02:43.840 --> 02:49.920
in a container, in a Docker container, not directly on a computer, but in a container.

02:49.920 --> 02:52.680
That's the idea.

02:52.680 --> 02:55.200
So we will begin doing that.

02:55.200 --> 03:01.960
The easiest way, the cheat way, the cheating way is to not bother about containerization,

03:01.960 --> 03:08.720
but actually just use an existing image that these guys already created for us.

03:08.720 --> 03:12.640
So there is the WordPress Docker image.

03:12.640 --> 03:15.840
It's readily available already right there.

03:15.840 --> 03:19.600
You can just pull it if you like.

03:19.600 --> 03:21.760
And that's what I will be doing the first time.

03:21.760 --> 03:26.160
What I will do now is go to a Linux computer.

03:26.160 --> 03:29.200
By the way, what I'm working on is not Linux.

03:29.200 --> 03:31.880
This is a Macintosh.

03:31.880 --> 03:36.320
As you can see, it's a Macintosh computer.

03:36.320 --> 03:38.740
It says Darwin.

03:38.740 --> 03:41.960
And so I need to go to a Linux machine.

03:41.960 --> 03:46.600
I already have a Linux machine at my hand right below my feet.

03:46.600 --> 03:50.720
And that machine is a iMac that runs Ubuntu.

03:50.720 --> 03:56.560
I will connect to it simply by typing this, like that.

03:56.560 --> 04:02.040
That takes me to an Ubuntu machine that is available.

04:02.040 --> 04:09.640
It has Docker already installed and lots of containers running already.

04:09.640 --> 04:16.120
What I want to do is get this ready-made container image already available.

04:16.120 --> 04:25.620
I want to pull it and bring it down to my Ubuntu machine so it's coming down.

04:25.620 --> 04:27.180
And then I have it locally.

04:27.180 --> 04:30.640
So that's the easiest cheating method.

04:30.640 --> 04:31.640
I already got it.

04:31.640 --> 04:34.200
I can just run it simply.

04:34.200 --> 04:36.440
And you already saw me running it in the last session.

04:36.440 --> 04:42.400
So that's how you can run it if you like a WordPress image running your own inside your

04:42.400 --> 04:43.920
Docker containers.

04:43.920 --> 04:45.520
But this is the cheating method.

04:45.520 --> 04:50.620
The easiest method is to use the ready-made images like this.

04:50.620 --> 04:52.840
But that's not what you're talking about.

04:52.840 --> 04:55.640
What we're talking about is to understand how they build these images.

04:55.640 --> 04:58.760
And so we can build our own.

04:58.760 --> 05:03.920
And so building our own images basically is a good idea to look at how people build images.

05:03.920 --> 05:07.580
These are smart people that make the software called WordPress.

05:07.580 --> 05:13.280
And they have built various image versions.

05:13.280 --> 05:21.800
And let's go find out the latest version that they have and look at what they built.

05:21.800 --> 05:29.960
So here is the latest Docker image that I just downloaded like that.

05:29.960 --> 05:35.880
And let us go see how they build this particular WordPress Docker latest image by looking at

05:35.880 --> 05:37.800
what is called a Docker file.

05:37.800 --> 05:40.960
So we'll go and examine what did they do to build that image.

05:40.960 --> 05:46.440
And the way to do that is to go to the source code for how they build this Docker image

05:46.440 --> 05:49.880
for this application, WordPress.

05:49.880 --> 05:55.540
So what I will do is go to GitHub, which is the place to usually find source code.

05:55.540 --> 06:03.200
And there I will look for WordPress Docker image GitHub.

06:03.200 --> 06:09.440
That should take us to the Docker library WordPress, where the code is to work for how

06:09.440 --> 06:14.080
WordPress people create this Docker image.

06:14.080 --> 06:17.020
Which one?

06:17.020 --> 06:18.560
This one.

06:18.560 --> 06:21.440
That's place called this place is called Docker Hub.

06:21.440 --> 06:26.560
That's where WordPress people are storing Docker images.

06:26.560 --> 06:30.200
And this is how they build it.

06:30.200 --> 06:32.120
This is the source code.

06:32.120 --> 06:36.800
So we're going to examine the source code and understand how they build it and then

06:36.800 --> 06:42.200
modify it to begin with slight small simple modifications we can make so that we can understand

06:42.200 --> 06:44.400
how this image is being built.

06:44.400 --> 06:48.880
And then as we go deeper, we can build everything from scratch our own.

06:48.880 --> 06:56.000
And let's first understand how did these guys build the Docker image on the left side using

06:56.000 --> 06:59.320
the source code on the right side.

06:59.320 --> 07:01.960
That's what I want to understand.

07:01.960 --> 07:23.960
So it is a file called latest that uses a Docker file here.

07:23.960 --> 07:27.360
That's the file, by the way, that they use to create the image on the left.

07:27.360 --> 07:30.520
So this is a fairly detailed file.

07:30.520 --> 07:34.840
So I don't want to scare you by going into straight into the details, but I want to simplify

07:34.840 --> 07:37.240
the understanding of how they built it.

07:37.240 --> 07:41.600
And then we'll begin small to construct our own images and then reach up to this level

07:41.600 --> 07:45.080
of understanding level of complexity needed to make this happen.

07:45.080 --> 07:50.320
I'm not scaring you by showing you a giant Docker file like this.

07:50.320 --> 07:53.720
It can be daunting to read and understand, so I'll simplify it.

07:53.720 --> 07:57.760
Make very small simple images to begin us begin, you know, take us the journey towards

07:57.760 --> 08:07.480
building complex setups to create our own Docker images that you can put on Docker hub.

08:07.480 --> 08:19.120
But you need to have a Docker file that you basically build to create this.

08:19.120 --> 08:23.240
So this is an image.

08:23.240 --> 08:26.200
And this is a source code for that image.

08:26.200 --> 08:31.080
Here are the instructions, step by step.

08:31.080 --> 08:39.860
It has a beginning point and subsequent steps like that.

08:39.860 --> 08:48.840
So I will now look at the beginning step for this particular Docker file.

08:48.840 --> 08:50.620
Where does it begin?

08:50.620 --> 08:53.400
It begins from something.

08:53.400 --> 08:55.400
What is that something?

08:55.400 --> 08:56.400
PHP.

08:56.400 --> 08:59.120
Why PHP?

08:59.120 --> 09:07.560
Because this guy, the instructions for basic instructions require you to have PHP.

09:07.560 --> 09:11.280
In fact, that's a requirement for this application.

09:11.280 --> 09:13.640
It requires PHP.

09:13.640 --> 09:17.700
And requires MySQL database or some other database.

09:17.700 --> 09:25.760
And it requires some kind of, it's called, you know, an application server to render

09:25.760 --> 09:29.780
what you see on the website that you create using WordPress.

09:29.780 --> 09:34.040
So it's called Apache as an example, is one of the web servers that you can use.

09:34.040 --> 09:36.140
There are other servers you can also use like NGINX.

09:36.140 --> 09:40.300
So basically you need a couple of things for this to run.

09:40.300 --> 09:46.680
You need something like Apache, which is a web server.

09:46.680 --> 09:50.440
You also need PHP, the language.

09:50.440 --> 09:53.880
That's what these guys are using.

09:53.880 --> 09:58.920
And you need some database like MySQL is recommended.

09:58.920 --> 10:01.320
And these needs to run on some Linux machine.

10:01.320 --> 10:05.240
You can also run it on other places, by the way, but we'll be using Linux.

10:05.240 --> 10:09.640
So that's the requirement for this Docker, sorry, WordPress application.

10:09.640 --> 10:13.400
One, two, three.

10:13.400 --> 10:21.440
And these two things, the first one and two are taken care of right here.

10:21.440 --> 10:29.560
So they're beginning with something ready-made, PHP and Apache already included.

10:29.560 --> 10:39.520
And they add certain things like WordPress itself in here to create the image needed

10:39.520 --> 10:41.720
for WordPress to run successfully.

10:41.720 --> 10:46.160
And then they add another container running MySQL separately, like just like we did the

10:46.160 --> 10:48.240
last time.

10:48.240 --> 10:51.320
So let us go investigate what this thing is.

10:51.320 --> 10:56.080
It contains two things, PHP and Apache.

10:56.080 --> 10:59.320
So let's go see what that image is.

10:59.320 --> 11:06.000
It is actually a separate image created by somebody else, not WordPress, not these guys.

11:06.000 --> 11:07.160
Somebody else created it.

11:07.160 --> 11:08.160
Who creates it?

11:08.160 --> 11:09.160
Let's go find out.

11:09.160 --> 11:11.800
Let's go find out who created this image.

11:11.800 --> 11:19.840
So we'll take that name, copy it, search it in Docker Hub, like that.

11:19.840 --> 11:25.520
We'll take this name, go to Docker Hub and search who created this.

11:25.520 --> 11:28.160
Oh, sorry, I copy pasted incorrectly.

11:28.160 --> 11:39.280
So who creates the PHP Apache image?

11:39.280 --> 11:40.280
Let's go.

11:40.280 --> 11:44.720
If it tells us the result, probably it doesn't give us a direct answer.

11:44.720 --> 11:50.840
So we're going to break it into parts and look for the PHP Docker image.

11:50.840 --> 11:59.660
And here is the PHP Docker image, which has a tag, which you will find 8.2 Apache.

11:59.660 --> 12:01.840
That should be there, like right there.

12:01.840 --> 12:02.840
That's a tag.

12:02.840 --> 12:06.960
So that's what we are interested in, because that's what the WordPress guys use to begin

12:06.960 --> 12:09.840
their WordPress image creation.

12:09.840 --> 12:13.640
So this happens to be a completely different image that gives you two things already to

12:13.640 --> 12:15.880
begin with.

12:15.880 --> 12:20.360
So you can see the layers and layers and layers of how we are going to go deep all the way

12:20.360 --> 12:29.200
to ground zero, which is nothing, which is also known as scratch, empty space.

12:29.200 --> 12:32.720
We'll reach there soon.

12:32.720 --> 12:37.360
So we began with understanding what WordPress uses to create the WordPress image by looking

12:37.360 --> 12:39.320
at the WordPress Docker file.

12:39.320 --> 12:42.600
And we found out that it begins with this.

12:42.600 --> 12:50.760
If you look at this particular Docker image, we'll have to go and hunt down its Docker file.

12:50.760 --> 12:53.800
And you will see that it contains these two things, PHP and Apache.

12:53.800 --> 12:55.960
So let's go hunt.

12:55.960 --> 12:59.280
Where is the Docker file for this?

12:59.280 --> 13:08.560
And we'll go hunt simply by clicking the link somewhere here to find it.

13:08.560 --> 13:14.760
And so we can just hit on maybe this, not this.

13:14.760 --> 13:21.960
So if you don't find it, just take that code or take that string and look for Docker file

13:21.960 --> 13:26.060
for PHP and that code number 8.2.

13:26.060 --> 13:30.440
And there you will have and also put GitHub.

13:30.440 --> 13:37.840
So you'll find a Docker file reference to that particular PHP image.

13:37.840 --> 13:39.720
There it is, by the way.

13:39.720 --> 13:42.600
So what are you looking at now?

13:42.600 --> 13:48.320
On the left side is the image that we are interested in, which is PHP 8.2.

13:48.320 --> 13:57.480
And on this right side, 8.2 Buster Apache Docker file.

13:57.480 --> 14:05.620
That's the Docker file that was used to create the image on the left side here.

14:05.620 --> 14:09.980
It contains PHP version 8.2 and also includes Apache.

14:09.980 --> 14:16.360
And that's the Docker file that creates this image that WordPress Docker file uses.

14:16.360 --> 14:19.760
It begins with this beginning point.

14:19.760 --> 14:28.340
But this beginning point itself has another beginning point, which is right there.

14:28.340 --> 14:35.880
This image uses another image called Buster Slim, Debian OS.

14:35.880 --> 14:37.960
Debian is a Linux OS.

14:37.960 --> 14:45.460
It uses another image to construct this image.

14:45.460 --> 14:50.200
So we'll go deeper and understand where this thing comes from.

14:50.200 --> 14:52.560
This thing comes from Debian Buster.

14:52.560 --> 14:58.100
So let's go hunt and find out where does Debian Buster comes from.

14:58.100 --> 15:10.580
So we'll go copy this and look at Docker Hub, and then search for Debian Buster Slim.

15:10.580 --> 15:15.240
And you don't find it like that, so just look for Debian alone.

15:15.240 --> 15:17.720
And then you find it.

15:17.720 --> 15:24.600
And then look for the tag reference and search for it, like Buster Slim, and you will find

15:24.600 --> 15:25.600
it there.

15:25.600 --> 15:28.060
So that's the image.

15:28.060 --> 15:32.280
That PHP Apache Docker file uses.

15:32.280 --> 15:34.360
But where is the source code for this?

15:34.360 --> 15:38.200
We go to another hunting on GitHub.

15:38.200 --> 15:39.520
And then I will summarize this whole thing.

15:39.520 --> 15:44.920
We are going down the deep, all the way to the rabbit hole, all the way to ground zero.

15:44.920 --> 15:47.900
That's where we are reaching slowly, step by step.

15:47.900 --> 15:56.040
So we'll go GitHub and look for Debian Buster Docker file.

15:56.040 --> 16:00.720
And here it is, the source code for that.

16:00.720 --> 16:08.200
Library Debian, hold on, let me go full screen.

16:08.200 --> 16:13.840
This is not the Docker file, but we're going to go and look for that particular Docker

16:13.840 --> 16:22.000
file in Debian, which is not readily visible here.

16:22.000 --> 16:30.760
Docker file is in a different location apparently here.

16:30.760 --> 16:36.320
So they give you a link here, somebody else is maintaining it apparently.

16:36.320 --> 16:40.000
So that's the Docker file somewhere, it's just a Docker generator.

16:40.000 --> 16:41.800
So stack-brewed library generator.

16:41.800 --> 16:46.320
So you will see that this is a generator to generator Docker file.

16:46.320 --> 16:52.960
So there's lots of variations here to basically lead to a situation which creates a Docker

16:52.960 --> 16:56.480
file to build a Debian Buster.

16:56.480 --> 17:05.200
And to create a Debian Buster Docker file, we have to begin from literally, let's see

17:05.200 --> 17:10.840
if we can find a separate simple example of how they build Debian images.

17:10.840 --> 17:20.920
Debian Docker file and then scratch.

17:20.920 --> 17:24.120
I'm going to select an alternative example.

17:24.120 --> 17:36.560
How do you create a simple Docker file that contains basically nothing to begin with?

17:36.560 --> 17:41.760
And so that's what I'm trying to hunt.

17:41.760 --> 17:47.040
Not in this page, scratch, and I think this is the beginning point.

17:47.040 --> 17:52.460
This scratch basically contains nothing, Docker pulls scratch.

17:52.460 --> 17:54.560
It has literally nothing.

17:54.560 --> 18:01.120
And then you add the Debian OS artifacts, which is the operating system itself.

18:01.120 --> 18:05.720
So now I will draw a picture and help you understand the whole game.

18:05.720 --> 18:09.840
For that, I need to bring up a sheet of paper.

18:09.840 --> 18:13.040
And here it is.

18:13.040 --> 18:20.040
In this sheet of paper, I will draw a picture of how we begin creating step by step the

18:20.040 --> 18:21.720
things that we need.

18:21.720 --> 18:28.120
At the foundation, we will have nothing also known as scratch.

18:28.120 --> 18:34.840
This is the scratch thing that I mentioned.

18:34.840 --> 18:36.320
That basically means a beginning point.

18:36.320 --> 18:38.000
It has nothing in it.

18:38.000 --> 18:42.120
Then on top, you add the Debian OS.

18:42.120 --> 18:43.720
In our example, we are using Debian.

18:43.720 --> 18:48.160
You can use any OS, the Debian OS artifacts.

18:48.160 --> 18:52.320
By the way, these things are already done for you.

18:52.320 --> 18:55.360
Most of the time, you will not be beginning from here and here.

18:55.360 --> 18:57.920
You will begin at a higher level.

18:57.920 --> 19:01.120
It's easier as we begin working.

19:01.120 --> 19:05.800
I'm showing you the ground-up, bottom-up approach of how people build these things so that you

19:05.800 --> 19:07.120
will understand.

19:07.120 --> 19:09.160
You don't need to start here at all.

19:09.160 --> 19:12.960
This is not your starting point right now.

19:12.960 --> 19:20.080
But the Debian OS artifacts, when these artifacts get added, then you get the Debian image.

19:20.080 --> 19:26.640
Debian image, which you can, you know, version of the operating system here can be Buster

19:26.640 --> 19:29.540
is a code name for Debian.

19:29.540 --> 19:35.800
So that Buster becomes a tag for that image, Debian Buster and the Slim variation.

19:35.800 --> 19:42.440
The smaller, simple variation of Debian Buster Slim is the operating system image that is

19:42.440 --> 19:49.540
added on to scratch, to nothing, to get us a Debian Docker image.

19:49.540 --> 19:57.340
That is used by PHP people, the people who write PHP code, the language, PHP.

19:57.340 --> 20:02.260
And they are using, what, 8.2 version of PHP.

20:02.260 --> 20:10.280
And then they also add Apache, the web server, on top of this ready-made image that you can

20:10.280 --> 20:12.680
just use.

20:12.680 --> 20:20.440
And this image is used by the WordPress people to create WordPress colon latest image.

20:20.440 --> 20:28.680
So if you now see, typically, if you want to go ready-made, you go use this.

20:28.680 --> 20:32.480
You want to customize a little bit, you go one step below.

20:32.480 --> 20:37.080
You want to modify PHP 8.2 and make it 8.1.

20:37.080 --> 20:42.360
You can do that by just changing the image, or you can modify by changing the operator

20:42.360 --> 20:48.160
underlying Docker file itself to get the right version of operating system, the right version

20:48.160 --> 20:53.240
of your PHP language, the right version of Apache, or whatever you need under the hood

20:53.240 --> 20:56.840
is how you begin creating whatever you need.

20:56.840 --> 21:01.120
So Docker file needs to be rewritten.

21:01.120 --> 21:03.560
So that was the example of WordPress.

21:03.560 --> 21:08.720
So this was multiple levels of abstraction beginning from scratch.

21:08.720 --> 21:14.280
Add the operating system, choose a specific version, add a language, choose the language

21:14.280 --> 21:21.080
version, add a web server, then create the application on top to create the WordPress

21:21.080 --> 21:22.080
image.

21:22.080 --> 21:25.160
Lots of detail here involved.

21:25.160 --> 21:26.480
It's a complex application.

21:26.480 --> 21:35.240
I'll simplify it to the simple possible example I will now take, which is let's choose Nginx

21:35.240 --> 21:44.200
as an application, which is a web server.

21:44.200 --> 21:50.820
And we will add this on top of an operating system called Ubuntu, which is built on top

21:50.820 --> 21:55.760
of scratch, basically nothing.

21:55.760 --> 21:59.480
So empty slate, you add Ubuntu operating system.

21:59.480 --> 22:05.080
And then on top, we will add our application Nginx.

22:05.080 --> 22:10.100
And then we'll add something else on top to make it visible to us so we can see what we

22:10.100 --> 22:12.560
are doing and understand it and make use of.

22:12.560 --> 22:19.240
So this is a slightly simple example of what we will be doing actually in a hands-on exercise.

22:19.240 --> 22:25.480
So we'll begin here because I don't want to unnecessarily complicate things by helping

22:25.480 --> 22:29.040
you understand how do you begin from scratch and add the operating system.

22:29.040 --> 22:32.800
That's unnecessarily complicated to begin with as the first thing you do.

22:32.800 --> 22:34.400
So don't do that.

22:34.400 --> 22:40.240
Begin simpler by beginning from Ubuntu and then add Nginx.

22:40.240 --> 22:42.560
So let's go see how you do that.

22:42.560 --> 22:43.920
So we have to get Ubuntu first.

22:43.920 --> 22:45.820
Where do you get Ubuntu?

22:45.820 --> 22:53.600
You get it from Docker Hub, Ubuntu.

22:53.600 --> 22:56.000
There it is.

22:56.000 --> 23:04.480
So that is the place where you can pull Ubuntu image from somebody waiting apparently on

23:04.480 --> 23:05.480
the meeting.

23:05.480 --> 23:11.260
So we let them in and they are coming in.

23:11.260 --> 23:14.600
And so hello, hello.

23:14.600 --> 23:15.600
Somebody just joined.

23:15.600 --> 23:16.600
Hi, Suraj.

23:16.600 --> 23:17.600
Hi.

23:17.600 --> 23:23.520
So we're talking about this thing called using the Ubuntu image as the foundation and add

23:23.520 --> 23:26.000
an application on top.

23:26.000 --> 23:30.400
So what I will now do is Docker pull Ubuntu.

23:30.400 --> 23:35.400
So it brings down the latest version of Ubuntu operating system container image available

23:35.400 --> 23:38.120
to me on my Linux machine.

23:38.120 --> 23:40.000
I now have it.

23:40.000 --> 23:43.840
It just pulled a Docker image.

23:43.840 --> 23:45.560
So now I have that image.

23:45.560 --> 23:51.400
What I want to be able to do now is to create a Docker file that uses that image.

23:51.400 --> 23:53.680
How do you create that?

23:53.680 --> 23:58.640
Simply you start a.

23:58.640 --> 24:03.760
A empty file and start typing in the beginning point.

24:03.760 --> 24:06.880
Beginning point happens to be in our case Ubuntu.

24:06.880 --> 24:11.140
So what I want to do is go to that Linux machine.

24:11.140 --> 24:16.440
So I will go to that Linux machine called iMac and hit that button.

24:16.440 --> 24:19.800
So I enter that machine remotely.

24:19.800 --> 24:25.720
And there I will create a separate folder for us to play with.

24:25.720 --> 24:28.680
And in there I will create a separate folder.

24:28.680 --> 24:29.680
Let's call it.

24:29.680 --> 24:31.320
What do you want to call today?

24:31.320 --> 24:34.840
So let's let's create a new folder.

24:34.840 --> 24:37.960
And we'll call it.

24:37.960 --> 24:40.760
Docker test.

24:40.760 --> 24:44.200
And in that folder will create a new file.

24:44.200 --> 24:47.320
I'll call it Docker file.

24:47.320 --> 24:48.560
And it's an empty file.

24:48.560 --> 24:51.640
I want to begin from Ubuntu.

24:51.640 --> 24:52.840
That's my beginning point.

24:52.840 --> 24:53.840
That's it.

24:53.840 --> 24:54.840
That's my Docker file.

24:54.840 --> 24:57.720
It's a complete Docker file, by the way, so close it.

24:57.720 --> 25:00.200
I can see it again and it's there.

25:00.200 --> 25:05.840
I can now go back here in the machine and say CD Docker test.

25:05.840 --> 25:08.440
And there I will find the Docker file that I created.

25:08.440 --> 25:10.440
I can see and inspect it.

25:10.440 --> 25:14.960
And I see that it has the content that I created.

25:14.960 --> 25:17.880
It says from Ubuntu.

25:17.880 --> 25:19.500
That's the beginning point.

25:19.500 --> 25:21.600
So now I have the Docker file created.

25:21.600 --> 25:26.120
It has one line, which is this line from Ubuntu.

25:26.120 --> 25:28.840
And I want to create a Docker image using that.

25:28.840 --> 25:30.440
How do you do that?

25:30.440 --> 25:33.280
The Docker build.

25:33.280 --> 25:37.280
And then put a dot.

25:37.280 --> 25:43.560
The dot basically means a reference to location where the Docker file exists.

25:43.560 --> 25:48.040
The Docker file exists in this location right here.

25:48.040 --> 25:53.320
And so I want to say Docker build whatever you have in this folder.

25:53.320 --> 25:55.720
The dot means right here.

25:55.720 --> 25:59.480
So it builds and it builds successfully.

25:59.480 --> 26:02.720
It was easy for it to build because there was nothing much to do.

26:02.720 --> 26:05.900
Just use an existing image called Ubuntu.

26:05.900 --> 26:06.900
So it builds.

26:06.900 --> 26:10.120
Now we have a new image created already.

26:10.120 --> 26:12.520
We can even run it if you like.

26:12.520 --> 26:18.060
But it is the same thing as running our own image as same thing as running Ubuntu image.

26:18.060 --> 26:23.680
So we have the images that we created right now like that.

26:23.680 --> 26:29.520
We can give it a name, a specific name I want to give, like this, dash T, and call it Docker

26:29.520 --> 26:30.520
test.

26:30.520 --> 26:32.560
That's the name I want to give.

26:32.560 --> 26:40.360
But a proper way to name is not just the name, but a place to store the image eventually,

26:40.360 --> 26:45.560
like a library where you can push your images and store them, for example, Docker Hub.

26:45.560 --> 26:50.800
So Docker Hub has a name of, let's go see what names that these guys use.

26:50.800 --> 26:55.800
So every company that provides you a place to store images will have a name, a way to

26:55.800 --> 26:58.040
represent that name.

26:58.040 --> 27:03.560
And so these guys have a name called Docker pull Ubuntu, but the right way to say that

27:03.560 --> 27:07.960
is actually Docker dot IO library reference.

27:07.960 --> 27:14.080
I'm forgetting what the name reference is.

27:14.080 --> 27:21.520
So I'm going to search it container name reference, and that should show us the pull reference

27:21.520 --> 27:26.160
as to how you write the name of an image.

27:26.160 --> 27:36.400
So the way to write an example Docker image when you pull from Docker Hub is just the

27:36.400 --> 27:41.400
name library Debian or library Ubuntu.

27:41.400 --> 27:47.600
And when you pull from other locations, it is not clear as to which location are you

27:47.600 --> 27:49.400
coming from.

27:49.400 --> 27:54.600
So just like Docker Hub, there are other places to store container registry images, and those

27:54.600 --> 28:05.240
are Azure Container Registry, not this ACR, but Azure.

28:05.240 --> 28:08.540
So Azure Container Registry is right there.

28:08.540 --> 28:12.800
And so here you can also find certain images available.

28:12.800 --> 28:17.600
Similar to that, there is this Amazon Container Registry from Amazon Cloud.

28:17.600 --> 28:21.720
They provide you a place to store images just like Docker Hub does.

28:21.720 --> 28:25.160
Similar to that, there is Google Container Registry from Google.

28:25.160 --> 28:28.560
And they also provide a place to store images like this.

28:28.560 --> 28:34.440
So lots of people, lots of companies provide you a place to store images.

28:34.440 --> 28:40.920
And my company, I have my own place to store images, and that thing is simply this location.

28:40.920 --> 28:47.600
I do not show you anything because it is actually accessible through an API call.

28:47.600 --> 28:49.080
And you have to log in and so on.

28:49.080 --> 29:05.520
Let me see if I can log in.

29:05.520 --> 29:13.800
Yes, I logged in.

29:13.800 --> 29:20.440
And here are some images that I have stored in my own local registry.

29:20.440 --> 29:26.280
So I can push my image that I create into this registry that I hold in my company.

29:26.280 --> 29:33.520
That's just my own registry, very, very similar to these guys, or these guys, or these guys.

29:33.520 --> 29:36.040
It looks different, but functions the same way.

29:36.040 --> 29:40.720
This is mine, like hosted in my company.

29:40.720 --> 29:49.440
So an example of this thing called Photo Prism is an image that I have pushed to my registry.

29:49.440 --> 29:53.680
And the way I reference my registry is with the name that I have given it.

29:53.680 --> 30:04.120
And the name that I chose to give my registry is simply the URL that you go to.

30:04.120 --> 30:15.540
This is the name of my registry.

30:15.540 --> 30:35.120
And so the way I recommend naming my employees to use a Docker image name is like this.

30:35.120 --> 30:47.640
So for example, we can use something like reg.home.cloudgenie.us.

30:47.640 --> 30:51.400
And you can call it Ubuntu test, like that.

30:51.400 --> 30:57.320
So that's the proper way to name an image that you want to store in a registry location

30:57.320 --> 30:59.540
provided to you by some company.

30:59.540 --> 31:03.040
You can run your own registry, like I run myself.

31:03.040 --> 31:06.680
So this is a way, we'll talk about how to create your own registry later on, not right

31:06.680 --> 31:07.840
now.

31:07.840 --> 31:10.960
But this is my registry, here is how you name it.

31:10.960 --> 31:17.080
So if you have a thing stored in Google Cloud, it is something like this, gcr.io slash and

31:17.080 --> 31:23.520
some other names that Google will dictate, followed by Ubuntu test.

31:23.520 --> 31:26.640
That's how you will store it in Google Cloud.

31:26.640 --> 31:32.960
In Azure Cloud, it will be very similar, followed by some name that Azure will want you to use.

31:32.960 --> 31:41.840
And then your name of the image in Elastic Cloud from Amazon, it will be ECR.

31:41.840 --> 31:46.400
So various companies will have their own naming conventions, you need to follow their conventions.

31:46.400 --> 31:51.760
I will follow my company's conventions, which is line number four.

31:51.760 --> 31:56.400
If you don't follow any convention that is also legally acceptable, you can just go with

31:56.400 --> 31:58.040
line number one.

31:58.040 --> 32:00.680
I will choose line number three.

32:00.680 --> 32:07.360
I will choose that and actually go to my command line and give that name to my image and build

32:07.360 --> 32:10.300
that same image one more time.

32:10.300 --> 32:12.240
And here it goes, it builds.

32:12.240 --> 32:18.840
It also assigns it a name like that, what I chose.

32:18.840 --> 32:24.240
And what I can do now is push this image to my own registry, I created a new image, you

32:24.240 --> 32:30.260
can see it, it did create, let's go see Docker images and then look for the name and it shows

32:30.260 --> 32:36.400
up created and then I will now talk or push this image.

32:36.400 --> 32:44.520
So it goes to my registry in my home and it did and it succeeded.

32:44.520 --> 32:52.640
Let's go back to that website and here you don't see Ubuntu test yet, but when I refresh,

32:52.640 --> 32:55.000
you see it.

32:55.000 --> 32:59.240
So that is how I push images to a registry.

32:59.240 --> 33:06.720
Same exact method, you can push it to this cloud, this Google cloud or to this cloud,

33:06.720 --> 33:10.800
Amazon cloud or to this cloud, Azure cloud or to some other cloud, who knows what.

33:10.800 --> 33:14.640
It doesn't matter, anybody and everybody can bring in their own registry.

33:14.640 --> 33:18.640
So I bring my own homemade registry and I pushed it.

33:18.640 --> 33:21.880
Once I have it in my registry, I can pull it from there and push it to there and do

33:21.880 --> 33:22.880
whatever I want.

33:22.880 --> 33:23.880
But that's an image.

33:23.880 --> 33:24.880
I can consume it.

33:24.880 --> 33:26.660
I have assigned it a name.

33:26.660 --> 33:35.160
My name is line number three.

33:35.160 --> 33:39.160
I will ignore line number five, six, seven, eight, all that.

33:39.160 --> 33:42.880
And that number one is a simple name to the same thing.

33:42.880 --> 33:56.360
I build it using this instruction in line number two.

33:56.360 --> 34:12.800
You can also build the same thing without a name at all.

34:12.800 --> 34:13.800
Just like that.

34:13.800 --> 34:17.920
Or you can build it with a simple name like that.

34:17.920 --> 34:23.240
There is the same thing, except if you properly name it like line number one, you can push

34:23.240 --> 34:28.440
it and pull from by using these commands, dot or push.

34:28.440 --> 34:33.120
And then give it a reference name to the exact fully qualified name of the image.

34:33.120 --> 34:34.120
And it pushes.

34:34.120 --> 34:38.720
You want to pull, it pulls from that location that you have.

34:38.720 --> 34:43.280
And of course, it requires login name and password and some permission because I don't

34:43.280 --> 34:47.480
allow anybody and everybody to be able to push and pull from my home.

34:47.480 --> 34:51.840
It is my property and I don't allow other people to consume it.

34:51.840 --> 34:55.640
So line seven and eight requires permission from me.

34:55.640 --> 35:05.540
Similarly, these guys, they require permission from you, require permission from them.

35:05.540 --> 35:08.940
And same thing with this guy, Docker Hub.

35:08.940 --> 35:12.640
They also need you to log in and put some.

35:12.640 --> 35:15.680
I think most of it is free, but sometimes they charge you money.

35:15.680 --> 35:18.160
So we do sometimes need a credit card.

35:18.160 --> 35:20.600
Most of it is free, by the way, as you begin learning.

35:20.600 --> 35:23.000
So it's not a problem at all.

35:23.000 --> 35:26.900
However, we have created an image and we pushed it.

35:26.900 --> 35:30.400
Now let us see if you can run that image.

35:30.400 --> 35:31.840
How do you run an image?

35:31.840 --> 35:38.640
You simply go like this.

35:38.640 --> 35:44.160
Here and say.

35:44.160 --> 35:52.120
Docker run an image interactively and put in an image name like line number 13 is the

35:52.120 --> 35:54.880
name of my image.

35:54.880 --> 35:57.040
And then give me a badge prompt.

35:57.040 --> 36:01.400
So that's the command you want to be able to run to execute to run that container that

36:01.400 --> 36:03.920
you just created.

36:03.920 --> 36:07.160
So we use this Docker file.

36:07.160 --> 36:14.240
And command in line number one to build the image command in line number seven to push

36:14.240 --> 36:16.020
the image.

36:16.020 --> 36:20.880
And then command in line number 17 to run the image.

36:20.880 --> 36:22.880
Here's how it runs.

36:22.880 --> 36:25.480
Sorry, I didn't copy properly.

36:25.480 --> 36:27.840
Here's how it runs.

36:27.840 --> 36:30.860
It is running now.

36:30.860 --> 36:37.640
You can see that the version number of this particular Linux, the kernel version is 515,

36:37.640 --> 36:40.480
which is the same thing as the kernel I have.

36:40.480 --> 36:58.400
You can see that this version is also hold on.

36:58.400 --> 37:02.900
Let's put something in this container for us to make use of it in a in a slightly better

37:02.900 --> 37:03.900
fashion.

37:03.900 --> 37:11.980
Let's go back to the notes here and what I have done up till now, sorry.

37:11.980 --> 37:18.120
In this context, what I have done up till now is that I was able to use the Ubuntu image

37:18.120 --> 37:23.240
and create my own Docker file to create my own image, which is basically identical to

37:23.240 --> 37:26.200
the Ubuntu image because I haven't even modified anything.

37:26.200 --> 37:36.440
The next thing I want to be able to do is add nginx to my basic foundation of Ubuntu

37:36.440 --> 37:42.160
for which I need to add a line to my Docker file and I will do that right now.

37:42.160 --> 37:52.280
So I will go back to my Docker file and here I will say add nginx in the way you add in

37:52.280 --> 38:09.400
a Ubuntu image is you need to first of all run apt update and then run apt install nginx.

38:09.400 --> 38:13.360
That's how you run it in a actual Ubuntu machine.

38:13.360 --> 38:17.800
So in a Docker file context, you add the run commands in line number two and three to make

38:17.800 --> 38:19.460
things happen.

38:19.460 --> 38:24.880
Now I have expanded my Docker file, added two layers to it to create nine line number

38:24.880 --> 38:29.520
two and line number three, and I will use this Docker file to build my own image one

38:29.520 --> 38:30.520
more time.

38:30.520 --> 38:33.040
How do I build my image?

38:33.040 --> 38:34.040
Line number one.

38:34.040 --> 38:44.160
So I take that and execute in my command line, exit out of my container, go back to check

38:44.160 --> 38:49.800
my Docker file and I see that it has now three lines as opposed to one, I added these two

38:49.800 --> 38:57.760
things to the Ubuntu basic foundation and then I build my image one more time.

38:57.760 --> 39:01.080
You will see this time the Docker building process is actually doing the two things,

39:01.080 --> 39:05.440
line number two and line number three again for us, like this is the line happening and

39:05.440 --> 39:06.720
then this is happening.

39:06.720 --> 39:11.240
You can see that the nginx installation is happening right now.

39:11.240 --> 39:15.980
When this finishes, you will have a new image created, which is our own customized image

39:15.980 --> 39:21.640
called reg home cloud genius went to test.

39:21.640 --> 39:26.360
That created a new image for us because that's what we wanted.

39:26.360 --> 39:32.260
We wanted a new custom Docker image containing nginx.

39:32.260 --> 39:35.100
So we now have it.

39:35.100 --> 39:39.360
How do we make sure that it actually does have what we wanted it to have?

39:39.360 --> 39:48.120
We can do that by running that image again this time, same way like before, Docker run

39:48.120 --> 39:50.480
and there we have that Ubuntu image running again.

39:50.480 --> 39:59.240
But this time if you see it has nginx running or not running yet, is it not running?

39:59.240 --> 40:14.720
Hold on, let's check it should be running.

40:14.720 --> 40:15.720
Now we have to run it.

40:15.720 --> 40:17.640
We have to actually, this is just installed.

40:17.640 --> 40:24.040
So there is nginx installed, we haven't run it yet, so we have to run it.

40:24.040 --> 40:28.840
The way to execute that I think is cmd and then you have to pass some argument like say

40:28.840 --> 40:30.680
run nginx please or something like that.

40:30.680 --> 40:35.720
We're going to do some command like line number five shows in our Docker file for the nginx

40:35.720 --> 40:38.280
binary to execute.

40:38.280 --> 40:42.960
And that's what I will have to investigate as to what do we write here exactly to get

40:42.960 --> 40:47.940
nginx to run after you install it in line number three.

40:47.940 --> 40:53.240
What is it that is needed for nginx to run at the runtime when you run this image?

40:53.240 --> 40:55.760
And for that we have to go reference the documentation.

40:55.760 --> 40:59.100
So that's the best way to learn is to read the documentation.

40:59.100 --> 41:04.560
So let's go find out how do you run something in a Docker image.

41:04.560 --> 41:13.000
You simply go Docker file run command.

41:13.000 --> 41:19.840
And you hunt for it and you will find the Docker reference to it.

41:19.840 --> 41:24.960
And here are some examples of run echo something.

41:24.960 --> 41:27.620
Run echo hello world example.

41:27.620 --> 41:42.680
So we'll go look for a specific example of run nginx.

41:42.680 --> 41:48.760
And you will see that people may have given you instructions on how do you do this so.

41:48.760 --> 41:54.720
You can we can copy paste or cheat cheating is totally fine and it's a it's a great idea

41:54.720 --> 41:58.680
to look at what other people are doing and then do what you want to be able to do.

41:58.680 --> 42:00.220
And so I support cheating.

42:00.220 --> 42:03.520
I actually support everything open.

42:03.520 --> 42:07.440
And you know the whole Internet available to you and you know chat GPT available to

42:07.440 --> 42:12.440
you and fully cheat to make it easy for you to get things done.

42:12.440 --> 42:28.280
And so here let's go see if they have a Docker file example or that that they're cheating

42:28.280 --> 42:30.520
even further and using a readymade nginx image.

42:30.520 --> 42:33.520
So not this.

42:33.520 --> 42:42.080
Yeah, these guys should have it.

42:42.080 --> 42:43.720
And there it is.

42:43.720 --> 42:52.240
So the command is this to run nginx at the runtime without a daemon so it doesn't have

42:52.240 --> 42:57.560
to run by itself but only run when you run it the run it in the Docker way.

42:57.560 --> 43:03.880
So this line number five that you see is actually going to invoke nginx at the runtime when

43:03.880 --> 43:06.840
you invoke that particular Docker image.

43:06.840 --> 43:11.000
Since we added this new command in line number four in the Docker file we need to build our

43:11.000 --> 43:16.040
container image one more time using line number one.

43:16.040 --> 43:21.760
So I'll copy that line number one again go back to my command line exit out of the existing

43:21.760 --> 43:30.120
container and run the build instruction one more time so it builds then we'll run it how

43:30.120 --> 43:37.220
do you run like line number 17 we'll copy that and run it here and it runs something

43:37.220 --> 43:44.200
let us go see what is running right now and you still don't see anything running in nginx

43:44.200 --> 43:50.560
because we are not invoking it let's go let's go run it in a different fashion.

43:50.560 --> 43:58.120
So I'm going to exit this and describe the different fashion of running this Docker run

43:58.120 --> 44:06.400
in a daemon mode the same image like before but not run it like interactively instead

44:06.400 --> 44:10.760
run it like a daemon in the background and then we'll go and examine as to what it is

44:10.760 --> 44:17.000
doing so let us see if this thing gets us the result we want so it started some container

44:17.000 --> 44:29.840
let us examine what is running by Docker ps-a and then looking for Ubuntu test and we see

44:29.840 --> 44:36.960
that something is actually running like right there 15 seconds ago up and running for last

44:36.960 --> 44:44.440
14 seconds something is running that is nice and so we will go and examine what is running

44:44.440 --> 44:51.760
by entering the container from outside for which we need to grab the image ID sorry it's

44:51.760 --> 45:00.240
a container at runtime ID this number 505 and execute into that and get a bash prompt

45:00.240 --> 45:05.120
and there you check the process is running and you will see nginx is running that's a

45:05.120 --> 45:11.320
good sign now let us see if you can actually open a website and a browser to see what is

45:11.320 --> 45:16.880
running in that container for that I would like you to understand what we did the last

45:16.880 --> 45:24.680
time clearly and so let's summarize what we have done up till now what we have done up

45:24.680 --> 45:35.280
till now is we have modified our Dockerfile to not only add nginx but also run nginx by

45:35.280 --> 45:42.080
typing in a cmd in the Dockerfile cmd run command we added on that thing and then we

45:42.080 --> 45:48.480
ran this we built this entire image and then we ran it it seems to run but I want to feel

45:48.480 --> 45:55.800
happy by seeing it visually in a browser that is possible but you need to work towards it

45:55.800 --> 46:05.920
what does it mean it means we have in a Docker container running nginx on port number 80

46:05.920 --> 46:15.160
inside the container on a machine which is the imac that I talk about but this port number

46:15.160 --> 46:21.320
80 is not visible to us outside so we need to do a port mapping if you refer to the previous

46:21.320 --> 46:26.360
meeting like the week ago I think I described this concept clearly but I will do it again

46:26.360 --> 46:35.600
simply I want to be able to map this port number 80 to the imac port of some number

46:35.600 --> 46:41.720
like I need to map this number 80 to some port here on the imac so that I can see what

46:41.720 --> 46:49.120
is going on here so on this machine we need to look up ports that are available in open

46:49.120 --> 46:58.020
so one of the ports that I have available in open is 8760 that I like to use there are

46:58.020 --> 47:02.760
other things you can use like 80 is also sometimes available in most cases you can use that port

47:02.760 --> 47:07.700
if you're like on a new machine or an empty new fresh new cloud you can use that but I

47:07.700 --> 47:12.960
have my machines already occupied the port is taken I cannot use this so I have to map

47:12.960 --> 47:19.440
a different port to this port inside the container so this port mapping thing I think I discussed

47:19.440 --> 47:25.480
in a previous session you should go look at that if you are missing that concept but the

47:25.480 --> 47:34.360
idea will be to use that concept of port mapping like we did the last time by expanding this

47:34.360 --> 47:42.360
line number 20 and making it a new line 22 out of it and including the port mapping like

47:42.360 --> 47:55.400
that map it to 80 that's all that's all it takes what does this do what it does is exactly

47:55.400 --> 48:04.280
what we wanted which is map port number 80 in the container to port number 8760 on the

48:04.280 --> 48:18.320
iMac rest of it is all the same I inserted this portion in the command sequence to let

48:18.320 --> 48:26.240
the port mapping succeed and when you see that and run it like line number 22 you should

48:26.240 --> 48:32.480
be able to see what that nginx container is showing you by visiting the iMac on port number

48:32.480 --> 48:39.920
8760 you can modify your ports the way you like if you want to have a discussion on what

48:39.920 --> 48:43.360
these ports are you should refer to the previous meeting because we discussed these things

48:43.360 --> 48:51.920
last time so let us go line number 22 and run that but before that we have to kill what

48:51.920 --> 49:00.440
we did in line number 20 and so that's what I will do now and I will open up my terminal

49:00.440 --> 49:08.880
and kill this docker container that is already running there and that is this number 505

49:08.880 --> 49:19.800
I will say docker rm-f and the number is 505 so it dies then I will also check any docker

49:19.800 --> 49:33.760
processes running in my machine with the name docker test and there is none nothing is there

49:33.760 --> 49:40.120
that is running right now so now our machine is clear for us to run this command in line

49:40.120 --> 49:49.440
number 22 which is what we just discussed so I will copy that 22 bring it here run it

49:49.440 --> 49:56.600
and it runs so now you can see that there is this docker container running oh so docker

49:56.600 --> 50:06.280
test is ubuntu test what am I talking about okay there it is now it is running again and

50:06.280 --> 50:14.320
that is what we just started so let us go examine what did we just start and why is

50:14.320 --> 50:19.360
it you know working the way it is so let's go first of all read and understand what did

50:19.360 --> 50:29.200
we start and how it shows in our result in docker ps-a and then grab for ubuntu test

50:29.200 --> 50:38.720
and there it is so let us go see what it shows us examine here is the image id sorry image

50:38.720 --> 50:44.680
container runtime reference here is the image name that we chose it is running the nginx

50:44.680 --> 50:52.160
in daemon off and it is up and running for last 39 seconds and it has this port mapping

50:52.160 --> 51:01.600
that I wanted on the imac map to the container port number 80 so that mapping seems to be

51:01.600 --> 51:09.120
successfully showing which means if you visit the imac on that port number 8760 you should

51:09.120 --> 51:15.800
see what the nginx container is showing you inside on port number 80 that is a port mapping

51:15.800 --> 51:30.000
so now let us go visit the imac on port number 8760 and we should be greeted by a nginx response

51:30.000 --> 51:39.040
so here is your imac and the port number 8760 and you see nginx now I can prove to you that

51:39.040 --> 51:50.920
I am not cheating by looking at that docker image and killing it

51:50.920 --> 52:02.480
so I killed it and I will examine that there is nothing running in my computer containing

52:02.480 --> 52:08.880
the name ubuntu test is empty it's all dead you can see that in this browser window if

52:08.880 --> 52:16.040
I refresh unable to connect I go back here to the command line and run that same line

52:16.040 --> 52:23.320
number 22 one more time this is your line number 22 for you like right here same line

52:23.320 --> 52:32.640
number 22 I run it in the command line like that then I go to the browser and refresh

52:32.640 --> 52:38.680
and it shows back up so that is how you build a docker image and run some application in

52:38.680 --> 52:45.660
the simplest fashion very simply let us summarize what do we do questions by the way are welcome

52:45.660 --> 52:50.800
anytime you have a question you should ask that if you don't ask questions it is bad

52:50.800 --> 52:55.720
really bad you know I don't know whether you understanding or not or whether I am talking

52:55.720 --> 53:00.360
to myself so that is something that I want to avoid so you should keep it interactive

53:00.360 --> 53:12.400
okay so now I will draw the picture again and see what we did so what do we do we began

53:12.400 --> 53:28.560
with we began with ubuntu and we chose that as a foundation from then we installed

53:28.560 --> 53:44.920
apt-get update to update the system cache for apt to be able to pull other applications

53:44.920 --> 53:57.500
then we get the application we want apt-get install nginx that actually installs nginx

53:57.500 --> 54:02.360
and this dash y means shut up and install don't ask me questions should I install yes

54:02.360 --> 54:12.000
or no don't do that shut up install that's the idea shut up and install the next thing

54:12.000 --> 54:24.120
we actually execute cmd nginx in some detail about how exactly you write it so that you

54:24.120 --> 54:30.160
look up the documentation or copy paste or cheat but this is how you do it how do you

54:30.160 --> 54:46.320
do it like that line number 4 cmd nginx dash g and then daemon off that basically means

54:46.320 --> 54:58.480
don't run nginx in daemon run it in foreground but invoke once you start this container so

54:58.480 --> 55:04.720
that's the idea so you install this is bring the update update the app cache install nginx

55:04.720 --> 55:11.200
application and run the actual application when the container runs and you begin from

55:11.200 --> 55:17.440
a one two that's how you build docker images of course you can keep on adding complexity

55:17.440 --> 55:21.760
and you guys you have seen like as we started you have seen bigger docker files you will

55:21.760 --> 55:25.900
get there you will get there but you have to understand basics first before you jump

55:25.900 --> 55:37.840
into a complex example so that's the underlying idea questions are welcome go ahead the cmd

55:37.840 --> 55:44.840
portion yes i will do that so you know if you remember how did i find this out i did

55:44.840 --> 55:53.120
not remember what did i do i cheated how did i cheat i google searched let's go where where

55:53.120 --> 56:00.880
did i go i went to the nginx official company's documentation and found out how they are running

56:00.880 --> 56:10.800
it how they are building their docker files for nginx so if you see here on this nginx

56:10.800 --> 56:19.440
company website there is this reference which i copied from right so now let us go see what

56:19.440 --> 56:29.880
they are doing on this page it basically describing to you how to run nginx plus which is a different

56:29.880 --> 56:36.400
application not exactly nginx nginx plus is an enhanced version of nginx commercial version

56:36.400 --> 56:41.160
from the nginx company we are not interested in the nginx plus piece we are interested

56:41.160 --> 56:47.960
only nginx and these guys describe to you how to invoke it so i cheated and what did

56:47.960 --> 56:53.480
i do i looked at their command to execute it it's basically the same command you would

56:53.480 --> 56:59.920
otherwise run if you're running plain nginx and not nginx plus so now let us dissect what

56:59.920 --> 57:11.760
this command actually does nginx you can run it without these guys it will also work however

57:11.760 --> 57:22.600
it goes in demon mode and it keeps on running we don't want that so we disable demon mode

57:22.600 --> 57:32.480
that's the idea nothing else and you if you if you eliminate this and just keep the closing

57:32.480 --> 57:45.080
bracket that is also okay so simply the cmd idea is to invoke or execute this thing at

57:45.080 --> 57:52.480
run time when you run this image not when you build it but when you run it so that's

57:52.480 --> 58:02.360
the difference in between this thing when you have the run steps these are build time

58:02.360 --> 58:11.640
build time executions when you have the cmd step it does nothing at build time except

58:11.640 --> 58:19.560
making a node that when you run it that's what needs to happen so build time you will

58:19.560 --> 58:25.240
actually install this and install that and do this and do that but number four is simply

58:25.240 --> 58:36.640
a way for the image to know what to do when you run it at the run time not at the build

58:36.640 --> 58:42.400
time so when you build the image this basically does nothing except make a note that when

58:42.400 --> 58:55.280
you run this image run engine x in demon off that's it there's nothing more to it does

58:55.280 --> 59:20.040
that clarify but yeah go ahead thank you thank you thank you okay so now let us expand

59:20.040 --> 59:27.320
it a little bit further like slightly improved version of the same thing you know but what

59:27.320 --> 59:40.140
you saw here is what you see in this page when I run that thing you see nginx right

59:40.140 --> 59:53.120
what I want to see here is not what nginx gives me by default but I want to see priti's

59:53.120 --> 01:00:06.200
name showing up how do you do that not what nginx gives me but priti so you have to tell

01:00:06.200 --> 01:00:12.000
your docker image to you know modify something somewhere so that when you open that browser

01:00:12.000 --> 01:00:16.200
it should say hello priti or welcome priti or something like that right that's what

01:00:16.200 --> 01:00:28.600
I want to see so we need to create something we need to go back to our docker file and

01:00:28.600 --> 01:00:38.720
in the docker file you to modify things like what like here somewhere you say you to add

01:00:38.720 --> 01:00:55.200
a file that replaces the default and which file not any file but add a file containing

01:00:55.200 --> 01:01:05.000
the name priti so you add a priti file that replaces the default file that's what we have

01:01:05.000 --> 01:01:13.760
to do so this priti file doesn't exist so you have to create it so we create that like

01:01:13.760 --> 01:01:28.600
this there we go that's a file and I will put that in my computer in that same folder

01:01:28.600 --> 01:01:36.520
by this name index html so that's the file that I created now I have that file so I need

01:01:36.520 --> 01:01:44.680
to add that file priti file it's called index html into a location to replace the default

01:01:44.680 --> 01:01:54.720
right that's what I want to be able to do so how do I do it that's the next thing so

01:01:54.720 --> 01:02:01.520
we have to somehow get this file inside in that location where the default is and delete

01:02:01.520 --> 01:02:09.800
the override delete the old file that exists inside and put this new index html right on

01:02:09.800 --> 01:02:16.720
top of that location you can do it multiple different ways the simplest way is to not

01:02:16.720 --> 01:02:22.360
modify a docker file but pass a file reference from the outside so if you have attended the

01:02:22.360 --> 01:02:28.840
previous sessions you probably know how to map a file if you don't remember I can show

01:02:28.840 --> 01:02:34.160
you both both examples but I will go and give you the cheating example first like how do

01:02:34.160 --> 01:02:43.000
you cheat if you don't know what to do so what do you do you go back to a browser window

01:02:43.000 --> 01:02:51.200
and in there you open up firefox and say add a file to docker file so somewhere there'd

01:02:51.200 --> 01:02:57.480
be how do you add a file to an image so there it is injecting files into your image using

01:02:57.480 --> 01:03:04.120
add so there is an instruction we'll cheat and see what the what the image says so here

01:03:04.120 --> 01:03:16.280
is the usage example we'll just copy it and bring it to our docker file like that here

01:03:16.280 --> 01:03:30.120
if we don't have hello.py we have index.html and we don't have a location where this file

01:03:30.120 --> 01:03:41.720
needs to go so where would it go I don't know so what do you do you cheat again and you

01:03:41.720 --> 01:03:56.360
go and ask where does the nginx image store the default index and the answer is here somewhere

01:03:56.360 --> 01:04:00.200
and so you will read this documentation and you will find out that the location happens

01:04:00.200 --> 01:04:10.960
to be this and I just remember it so I just wrote it but you don't have to memorize anything

01:04:10.960 --> 01:04:16.080
you can always cheat you have google you have the entire internet available to you and you

01:04:16.080 --> 01:04:20.760
these days you have ai tools available to you so use all of them to hunt down the thing

01:04:20.760 --> 01:04:28.280
you need don't memorize anything ever I happen to remember it so that's the location where

01:04:28.280 --> 01:04:35.720
it needs to go so I'll put this index.html file this file hello Preeti into that location

01:04:35.720 --> 01:04:45.280
where it's supposed to be overriding the old location which shows us what we see when you

01:04:45.280 --> 01:05:03.760
go here so now we'll go and build our docker image one more time line number 22 once again

01:05:03.760 --> 01:05:09.360
and so before we go I want to kill the existing container images that I have from a previous

01:05:09.360 --> 01:05:33.720
attempt so I look it up we want to test and I find it I am going to kill it

01:05:33.720 --> 01:05:40.160
and I killed it so now I have nothing running by that name open to test then I will go to

01:05:40.160 --> 01:05:47.320
this line number 22 again and run it so now we have something running again and I will

01:05:47.320 --> 01:05:59.440
go back to this browser and refresh and what do you see you still see the old nginx image

01:05:59.440 --> 01:06:10.080
the old nginx index html why is that why is it that is still showing you old one any ideas

01:06:10.080 --> 01:06:17.480
do you know why because browsers cache everything that they saw so we have to open a different

01:06:17.480 --> 01:06:23.040
browser to see what's going on there there's the there's the reason I think it's it's probably

01:06:23.040 --> 01:06:27.160
caching or maybe there's some other reason so it's not caching it's something else happening

01:06:27.160 --> 01:06:32.720
so let's go investigate if we actually correctly place the file in the right location which

01:06:32.720 --> 01:06:40.800
means we have to go inside this image and actually examine if the location is correct

01:06:40.800 --> 01:06:47.200
that I mentioned that I assumed going by my memory line number four is that actually correct

01:06:47.200 --> 01:06:52.760
user share nginx html is that the correct location that's what I want to examine so

01:06:52.760 --> 01:07:01.960
I'll go inside the image and examine it by running an execute command dr exec and then

01:07:01.960 --> 01:07:08.400
the number 7c1 which you see here in the image id that is the container id that's running

01:07:08.400 --> 01:07:17.240
right now and then getting a bash prompt then we will go and examine the user share nginx

01:07:17.240 --> 01:07:23.240
html folder and there you have this index html and we have to examine what it contains

01:07:23.240 --> 01:07:32.140
and it still has the old file it did not overwrite why did it not overwrite I don't know it should

01:07:32.140 --> 01:07:37.480
have overwritten that but it didn't so we have to go and investigate what went wrong

01:07:37.480 --> 01:07:48.520
something went wrong somewhere so we'll go back to our code and find out why did this

01:07:48.520 --> 01:07:55.320
line number four did not get executed did I forget to build an image probably probably

01:07:55.320 --> 01:08:02.280
I forgot to build the image I don't know so I will go in first of all look at my runtime

01:08:02.280 --> 01:08:12.080
images containing the name ubuntu test and then I will delete that image so now I have

01:08:12.080 --> 01:08:18.680
nothing then I will build the docker image one more time but before I build it I want

01:08:18.680 --> 01:08:29.800
to kill my existing image so docker images that I have and then I will like to remove

01:08:29.800 --> 01:08:34.800
the image that I created at the last time so rmi-f and then the image name what's my

01:08:34.800 --> 01:08:44.240
image name here so I will remove that image by saying docker rmi and then line number

01:08:44.240 --> 01:08:54.000
24 should delete the image completely from my computer like that and it deleted and then

01:08:54.000 --> 01:09:09.760
I will want to build the image one more time like line number 22 and it built so I will

01:09:09.760 --> 01:09:16.880
like to now run it and how do I run it no I did not build it see I am not building I

01:09:16.880 --> 01:09:23.680
am running it I am not building stupid me line number one is how you build it not 22

01:09:23.680 --> 01:09:29.040
number one is how you build it now I built it I think I forgot to build the image I

01:09:29.040 --> 01:09:38.360
just ran line number 22 without actually building it so now I run it and it is running let us

01:09:38.360 --> 01:09:44.680
go inside the image by the way these commands that I type without describing to you you

01:09:44.680 --> 01:09:50.120
should go look at docker documentation and find out how am I dealing with these things

01:09:50.120 --> 01:09:56.600
you should go study it on your own I will like to go inside that container and get a

01:09:56.600 --> 01:10:04.320
bash prompt then get into the user share nginx location go to html location find out the

01:10:04.320 --> 01:10:10.640
file called index html and cat it and we should see hello prithi there there it is nice so

01:10:10.640 --> 01:10:21.960
now I go to the browser and refresh and it is still showing me that is fun is not it

01:10:21.960 --> 01:10:30.800
so let us go check one more time still showing me same old setup even though we do not have

01:10:30.800 --> 01:10:40.280
that file there and we see hello prithi inside which is crazy so it is okay it happens all

01:10:40.280 --> 01:10:44.800
the time you know so we have to go understand why it is happening that is more important

01:10:44.800 --> 01:10:54.520
than you know this file contains the right file now let us see if we have the correct

01:10:54.520 --> 01:11:10.800
process is running yes then we go and examine it in curl to see if we can get to the local

01:11:10.800 --> 01:11:19.480
host 8760 and we have some response then we get the curl browser and we still get the

01:11:19.480 --> 01:11:30.920
old welcome to nginx page the old page we do not know why so this method did not work

01:11:30.920 --> 01:11:37.520
we do not know why it did not work let us go another method of running the same thing

01:11:37.520 --> 01:11:41.560
maybe it is picking up from some other location maybe this location itself is not where it

01:11:41.560 --> 01:11:47.640
picks from some other location where it picks from so you can go investigate that or let

01:11:47.640 --> 01:11:57.080
us go find out where it is actually picking up so docker ps dash a by grep open to test

01:11:57.080 --> 01:12:05.360
and that image that we have running here will go inside the image docker exec and then identify

01:12:05.360 --> 01:12:11.560
where does nginx actually is storing that image that it expects to pop from like where

01:12:11.560 --> 01:12:16.960
does it showing it from that is the question so we have to go and look at the configuration

01:12:16.960 --> 01:12:23.880
of how nginx is actually looking up that file and that is what i want to hunt down as to

01:12:23.880 --> 01:12:28.640
why is it not picking up the file from that location which we wanted it to because what

01:12:28.640 --> 01:12:34.480
i am doing is i am asking it to look at line number four user share nginx html but it seems

01:12:34.480 --> 01:12:40.280
like it is picking up from some other location not the location we have in line number four

01:12:40.280 --> 01:12:46.200
so where is that location that is what i want to find out which means i need to go do some

01:12:46.200 --> 01:13:11.280
investigation so this requires understanding of how nginx actually runs and apparently

01:13:11.280 --> 01:13:20.560
it is pulling up from var www html as opposed to user share html so line number four was

01:13:20.560 --> 01:13:30.320
wrong sorry line number four was wrong it is seems to be pulling from var www html according

01:13:30.320 --> 01:13:37.280
to the configuration that i am looking at inside the container for nginx right there

01:13:37.280 --> 01:13:48.880
that is where it is picking up from not line four that means line number four was wrong

01:13:48.880 --> 01:13:56.200
my memory was incorrect this is the right location according to what i see in the configuration

01:13:56.200 --> 01:14:04.680
that means this was wrong line number five is correct okay fine found out this is what

01:14:04.680 --> 01:14:09.120
happens in real life when you go by memory and you try something and it does not work

01:14:09.120 --> 01:14:13.560
and then you crashed your head against hard objects to struggle to figure out what is

01:14:13.560 --> 01:14:19.600
going on then you study then you find out that your line number four was wrong then

01:14:19.600 --> 01:14:28.000
you change it and then let us try it again and so we quit the docker container we go

01:14:28.000 --> 01:14:46.460
look at the docker container runtime and we kill that docker container

01:14:46.460 --> 01:14:53.800
we also do a docker image delete so we have to kill the docker image that we created like

01:14:53.800 --> 01:15:05.160
line number 24 then we build the docker image like that line number one and then we run

01:15:05.160 --> 01:15:17.360
it line number 22 and now something is running and let us go quickly check what is running

01:15:17.360 --> 01:15:24.120
and we see hello welcome prithi and then we go to the browser and we see that it shows

01:15:24.120 --> 01:15:36.640
what we expect to see right here so that's how it was so yes struggle happens it needs

01:15:36.640 --> 01:15:42.280
to happen otherwise you will never learn even i don't learn unless i struggle so that's

01:15:42.280 --> 01:15:50.760
the way of life you make mistakes like i did line number four it's okay mistakes are okay

01:15:50.760 --> 01:15:57.120
i mean learn to accept mistakes it happens and it needs to happen otherwise you will

01:15:57.120 --> 01:16:05.160
never learn things change by the way i'm not i'm not mistaken when i said this is what

01:16:05.160 --> 01:16:13.400
i memorize and i remember from my memory and i used it but things changed somewhere and

01:16:13.400 --> 01:16:18.120
they seem to be using this location as opposed to this location so this is the right one

01:16:18.120 --> 01:16:25.880
not that and that is totally fine and things keep changing all the time that's how real

01:16:25.880 --> 01:16:31.720
life is so what you just saw is a real life example it used to be line number four but

01:16:31.720 --> 01:16:38.840
now it is line number five fine you struggle you find out and you fix it so that's how

01:16:38.840 --> 01:16:45.200
you build docker images for your situation containing your files that you create that

01:16:45.200 --> 01:17:03.960
you add and then you run when you build an image so does that help you clarify as to

01:17:03.960 --> 01:17:10.960
what we did and is that you know do you have a question associated with any of these ideas

01:17:10.960 --> 01:17:19.880
that we just handled any any questions on this concept how to build a docker image how

01:17:19.880 --> 01:17:25.480
to push it to a registry i push it to my own registry but you can push it to wherever you

01:17:25.480 --> 01:17:36.600
like like the way i push is in line number seven to my own registry so i can go and push

01:17:36.600 --> 01:17:44.600
it like that and it goes

01:17:44.600 --> 01:17:49.280
and i can see it in a browser window and this is only available to me it's not even outside

01:17:49.280 --> 01:17:58.480
my home that's where you see it it's very rudimentary the user interface is very raw

01:17:58.480 --> 01:18:04.140
i don't care as long as it works i don't have to be fancy looking like this or any any other

01:18:04.140 --> 01:18:08.400
big sites like this i don't have to be fancy looking it needs to work the right way and

01:18:08.400 --> 01:18:18.200
it does so what i do is actually run another docker image to create that thing that is

01:18:18.200 --> 01:18:29.240
called a registry using a image called registry and here it is this image called docker registry

01:18:29.240 --> 01:18:35.960
is just a name of a docker file called registry which creates a docker registry like like

01:18:35.960 --> 01:18:44.240
this that's it it's another docker container that holds images for me it's not complicated

01:18:44.240 --> 01:18:54.600
it's dead simple you just run the registry image on docker hub which means you run it

01:18:54.600 --> 01:19:07.040
like this start your registry pull some image push tag some image push something basic commands

01:19:07.040 --> 01:19:10.240
that's how you begin of course you need to have a computer to run these things and all

01:19:10.240 --> 01:19:17.560
that if you don't have it in your home or your office you use the cloud so that i think

01:19:17.560 --> 01:19:22.760
should cover the topic that we just discussed today what i want to be able to do the next

01:19:22.760 --> 01:19:31.600
time is when we when we run this exact image that we just ran in our own machine locally

01:19:31.600 --> 01:19:35.920
i want to run it in the cloud and that's what we will do next time unless you have a different

01:19:35.920 --> 01:19:42.780
idea you want me to cover and i will tweet about it and we'll run the next step the next

01:19:42.780 --> 01:19:49.840
exercise continuation of what we did today next time same day same time next week and

01:19:49.840 --> 01:19:54.600
i will tweet the details and push the same detail on our website which is this website

01:19:54.600 --> 01:20:02.280
and here you will find the instructions on how to join and you need to put your email

01:20:02.280 --> 01:20:09.640
address here and the tweet will show you the next agenda for the next in the next session

01:20:09.640 --> 01:20:17.120
the next week exactly the same time so that's the idea for for today any questions before

01:20:17.120 --> 01:20:27.520
we disconnect

01:20:27.520 --> 01:20:33.280
and if you don't have any questions that's okay

01:20:33.280 --> 01:20:42.600
so thank you thank you for attending and i will see you guys next time bye bye thanks

01:20:42.600 --> 01:20:47.000
for the session sir i'm disconnecting now

Show more...
2 years ago

The Cloud Seminar
More Docker Compose #0003

Summary:

In this session, I walk through a live demo of using a reverse-proxy container and then running a plurality of other apps and databases also running in containers. I demonstrate how to persist the data in the applications by separating the data from the containers. I also walk through live examples of testing request and response while passing through the reverse-proxy.

I used this git repo in this session.

GitHub - beacloudgenius/dockerfiles at thecloudseminar.com
multi container architecture. Contribute to beacloudgenius/dockerfiles development by creating an account on GitHub.
GitHubbeacloudgenius

AI Generated Transcript

WEBVTT

00:00.000 --> 00:04.280
So I think we should get started since we are on a multiple

00:04.280 --> 00:08.400
time zones and lots of people from various places. So let's

00:08.400 --> 00:12.720
begin. Let's begin. So what I was talking about briefly here

00:12.720 --> 00:17.000
is this idea of, you know, this guy, Jeffrey. If you do know

00:17.000 --> 00:21.240
if you know him or not, I don't know. But this person is

00:21.240 --> 00:25.000
considered the father of AI, modern AI, Jeffrey Hinton, and

00:25.000 --> 00:28.080
it is his tweet on May 1st.

00:28.080 --> 00:32.520
Which is yesterday, and he says some New York Times News, you

00:32.520 --> 00:36.160
know implies that you left Google so you can criticize

00:36.160 --> 00:40.320
Google, but that's not the reason he says he did. He's so

00:40.320 --> 00:42.480
you could talk about dangers of AI.

00:43.560 --> 00:46.720
Without considering how it impacts Google, so Google is

00:46.720 --> 00:50.760
fine according to him. So he's talking about dangers of AI on

00:50.760 --> 00:53.600
one hand and then further below. Maybe I overreacted.

00:54.720 --> 00:55.160
So.

00:55.160 --> 00:59.840
Yeah, maybe maybe you have to read the detail on what his

00:59.840 --> 01:02.360
tweets are. And what he's trying to communicate.

01:03.040 --> 01:05.720
But. Bottom line is.

01:06.720 --> 01:11.200
We don't know that's the real bottom line. Nobody knows, so I

01:11.200 --> 01:13.640
think we should. We should start streaming.

01:14.360 --> 01:18.840
So the streaming thing that I run is actually goes out to

01:18.840 --> 01:22.280
multiple social media channels through a streamer, a streaming

01:22.280 --> 01:26.360
device that I have built using Docker and that streams. So I'm

01:26.360 --> 01:30.560
going to start that streaming and see if it actually works out

01:30.560 --> 01:35.280
OK. So here I go. I'm going to hit the stream now button.

01:36.120 --> 01:39.960
And see if it starts a stream on at least Twitter, Twitch,

01:39.960 --> 01:44.040
LinkedIn, three or three or four places. So I'm going to hit the

01:44.040 --> 01:47.880
button now and begin. So here we go. Starting the stream now

01:47.880 --> 01:53.200
and it should stream.

01:53.200 --> 01:57.120
So this is about to begin streaming and I think we should

01:57.120 --> 02:01.520
be streaming by now. So let us go check on Twitter to see if

02:01.520 --> 02:03.000
there's a notification on.

02:03.560 --> 02:07.800
Something like stream started so that once the stream starts we

02:07.800 --> 02:08.480
can ignore.

02:09.840 --> 02:13.640
Twitter itself. I think the stream didn't start yet.

02:13.640 --> 02:18.480
Not yet, so there's a. There's a like a delay in in.

02:19.040 --> 02:22.640
I think streaming started looks like streaming started. Let's go

02:22.640 --> 02:27.200
check. So on my profile on my page there should be a live

02:27.200 --> 02:30.920
stream method live stream message. Do I see it?

02:32.240 --> 02:35.960
Yet, yes, it started streaming, so streaming is working on

02:35.960 --> 02:38.200
Twitter. Let's check on LinkedIn.

02:38.200 --> 02:42.880
If LinkedIn is showing us a stream or not, let's go check

02:42.880 --> 02:46.840
that. LinkedIn should also show us a live stream happening

02:46.840 --> 02:51.240
right here on the notifications. Do you see that? Yes, it is.

02:51.240 --> 02:54.960
It is live. We're on live stream. We're talking about, you

02:54.960 --> 02:59.240
know, more Docker today, but before we, you know, I think I

02:59.240 --> 03:02.520
should just ignore the live stream people who are watching

03:02.520 --> 03:05.840
the live stream. This live stream is available to you on

03:05.840 --> 03:09.520
Spotify platforms. It will also get recorded by the way, and

03:09.520 --> 03:12.520
this stream after it gets recorded, it's becomes

03:12.520 --> 03:13.840
available to you.

03:14.400 --> 03:15.720
On Spotify.

03:16.480 --> 03:20.560
Spotify is a music service. It also has podcasts, so this is

03:20.560 --> 03:24.600
where the recordings show up and this is a video podcast. By

03:24.600 --> 03:28.800
the way, just so you know. So yes, you can see videos

03:28.800 --> 03:31.920
recordings from our sessions on to Spotify in this location.

03:31.920 --> 03:35.120
Look for cloud seminar on Spotify. You should be able to

03:35.120 --> 03:38.520
find all the previous recordings like for the last two or three

03:38.520 --> 03:40.880
sessions. I have these recordings available here like

03:40.880 --> 03:44.320
we show on the screen right now.

03:44.920 --> 03:48.760
You should be able to see it on the screen. I think so that's

03:48.760 --> 03:51.960
the Spotify podcast. You should be able to see your video

03:51.960 --> 03:54.680
recordings showing up right here, and if you don't see

03:54.680 --> 03:58.560
videos. Tweet at me because some people are reporting that they

03:58.560 --> 04:02.680
see only audio. No video that's potentially something is wrong,

04:02.680 --> 04:07.520
so I think I fixed it. So now you should be able to see

04:07.520 --> 04:11.520
videos like these more of these coming up showing up right here

04:11.520 --> 04:15.680
in Spotify after 24 hours from the live session live session is

04:15.680 --> 04:18.720
streaming to social media channels and people are actively

04:18.720 --> 04:21.840
participating in Microsoft Teams. So if you want to interact

04:21.840 --> 04:26.160
with me like one on one or many to one, we can do that. That's

04:26.160 --> 04:29.800
what we're doing. By the way, we have people are attending this

04:29.800 --> 04:33.200
session and we are going to begin discussing not bored, but

04:33.200 --> 04:36.400
Docker and Docker compose and Docker files and a little more

04:36.400 --> 04:39.600
little bit more detail about Docker as to how you actually

04:39.600 --> 04:42.480
manage creating images and you know managing your application

04:42.480 --> 04:46.720
sets and you know creating a set of services that you want to be

04:46.720 --> 04:50.240
able to use for your customers. So that's the underlying idea

04:50.240 --> 04:54.880
for today. So let's go back to some description of what the

04:54.880 --> 04:58.720
infrastructure I'm dealing with right now is. So here I have a

04:58.720 --> 05:04.400
machine that I I have it in my hand, which is a Macintosh.

05:05.360 --> 05:09.840
And. What I'm going to do right now is to make sure that

05:09.840 --> 05:12.960
everybody is able to see the screen full screen mode and

05:12.960 --> 05:16.040
then there's no conflict about how things are working out or

05:16.040 --> 05:19.320
how the screen is occupied with other people, not my screen. That

05:19.320 --> 05:23.200
should not be the issue today. I think I fixed that. So with that

05:23.200 --> 05:26.320
said, I want to suppress this little notification in the

05:26.320 --> 05:29.560
bottom left corner, lower thirds, and if you want to see

05:29.560 --> 05:33.280
me, you can see me in the corner or I can hide myself if

05:33.280 --> 05:37.480
you like. So it's totally up to you. If you if you look at my

05:37.480 --> 05:40.560
red, red, you know, red T shirt or not, tell me.

05:41.240 --> 05:44.560
I think you're only interested in more on what I describe as

05:44.560 --> 05:47.760
opposed to looking at my shirt. So let's go begin with that

05:47.760 --> 05:50.880
idea. So I have this Macintosh that I am in my hand.

05:50.880 --> 05:55.960
And then I also have a Linux machine here that Linux machine.

05:55.960 --> 06:03.360
I call it I Mac and it has an IP address of 192.168.1.10 that

06:03.360 --> 06:04.520
runs Docker.

06:06.520 --> 06:10.480
So I'm sitting here. I will connect to this machine and run

06:10.480 --> 06:14.560
whatever we want on this Docker machine. So that's the idea. So

06:14.560 --> 06:18.640
I have an exercise set created already for us to consume and

06:18.640 --> 06:22.760
that is what we will be using today. We use the same thing

06:22.760 --> 06:26.680
last time. We have lots of little exercises in that get

06:26.680 --> 06:28.960
repository, so I will just go and find it.

06:29.560 --> 06:31.040
And that get repo is.

06:32.240 --> 06:33.000
GitHub.

06:36.760 --> 06:39.480
Will be cloud genius.

06:40.280 --> 06:44.480
Slash Docker files. That's the repository I think.

06:44.480 --> 06:49.160
And it is slightly updated to include the latest images

06:49.160 --> 06:53.240
created by. Jason Wilder, who creates engine X proxy images.

06:53.240 --> 06:56.920
I updated those images and pushed new content to this

06:56.920 --> 06:59.840
repository already, so I'm going to take this link.

07:00.880 --> 07:05.240
From here and tweet it out to the Twitter stream that's going

07:05.240 --> 07:09.000
on so that people people are watching it live can actually.

07:09.000 --> 07:12.840
You know, understand what we are looking at. So the profile

07:12.840 --> 07:17.560
should show me in the stream and below that stream I'm going to

07:17.560 --> 07:22.400
tweet. We are using this get report today.

07:24.600 --> 07:27.680
And tweet. So that goes.

07:28.480 --> 07:32.560
Next, so I will now bring that get repository down to my Docker

07:32.560 --> 07:36.720
machine right here. That's what I want to bring it down here, so

07:36.720 --> 07:39.560
I will do exactly that. I'll bring up a.

07:39.560 --> 07:44.000
Command line and then actually I use Vegas Codium to connect to

07:44.000 --> 07:48.160
that machine using remote SSH. The way you do that is through

07:48.160 --> 07:50.360
this button. Remote Explorer button.

07:52.520 --> 07:55.320
This is how it looks like this button or remote Explorer. You

07:55.320 --> 07:58.360
click on that and then you connect to any of the machines

07:58.360 --> 08:01.960
you have in your office or your home or whatever. So I want to

08:01.960 --> 08:05.400
go to this machine, so that's where I want to go. So I connect

08:05.400 --> 08:07.800
like that. And then I open up that folder set.

08:07.800 --> 08:11.680
Now in that machine I will also open terminal on one side. So

08:11.680 --> 08:14.880
here we have terminal the command line. I will bring it

08:14.880 --> 08:18.560
down so that it becomes visible to you. Make it a little bit

08:18.560 --> 08:21.360
bigger and connect to that machine out there. The iMac

08:21.360 --> 08:24.480
machine I mentioned here. I have that folder called Docker files

08:24.480 --> 08:28.280
already available, which is not what I want to begin with, so I

08:28.280 --> 08:31.760
want to remove it so that I'm basically doing exactly the way

08:31.760 --> 08:35.760
you will have in a machine that you will be running on. So I'm

08:35.760 --> 08:39.480
going to open that Docker files folder completely and then get

08:39.480 --> 08:41.520
clone the whole thing again.

08:41.520 --> 08:45.480
From from this location so that.

08:46.200 --> 08:48.880
Clone copy clone link I copied and bring it here.

08:49.920 --> 08:53.480
So that Docker files folder comes down, so that's the folder

08:53.480 --> 08:57.400
now I have here. So it's a fresh clone from git repository.

08:58.000 --> 09:00.120
So now we're going to use it.

09:01.040 --> 09:02.880
And that repository shows up.

09:02.880 --> 09:05.080
In this location.

09:06.080 --> 09:08.800
Inside my iMac.

09:08.800 --> 09:11.640
Which is a Linux machine by the way, just so you know.

09:11.640 --> 09:17.200
So what I want to do now is to describe to you the.

09:17.200 --> 09:20.640
Simplest possible way to run some design, so I'll describe

09:20.640 --> 09:24.480
the design to use to what I'm going to implement and then

09:24.480 --> 09:27.960
then actually implemented like live. So that's the idea. So

09:27.960 --> 09:31.760
let's let's begin by explaining to you what I intend to do.

09:31.760 --> 09:36.880
And then I'll do it. What I intend to do is I want to run

09:36.880 --> 09:42.040
some simple service called who who am I?

09:42.880 --> 09:44.480
That's the container I want to run.

09:45.080 --> 09:50.440
And the only thing this container does is says I am.

09:51.560 --> 09:53.000
And then the container ID.

09:56.120 --> 09:58.880
That's all it emits on the output.

09:58.880 --> 10:02.120
On port number 8000 or some some port number right that

10:02.120 --> 10:05.480
it emits that that's the container. So I want to see the

10:05.480 --> 10:09.280
output here from that container, which means I need to run that

10:09.280 --> 10:12.040
container somewhere and I want to.

10:13.520 --> 10:17.240
You know, put this behind a reverse proxy.

10:19.080 --> 10:23.120
A reverse proxy is something that gives you ability to do a

10:23.120 --> 10:27.400
variety of things. One of them is to run multiple services like

10:27.400 --> 10:32.080
this is one and there are more and there are more. You can run

10:32.080 --> 10:34.400
these services behind a reverse proxy.

10:37.040 --> 10:39.600
And then this becomes the front end to the customer.

10:42.000 --> 10:46.680
That's the idea. So for right now in our context, what I will

10:46.680 --> 10:49.200
be doing is I will not have this.

10:51.200 --> 10:53.480
I will have only this one service.

10:53.480 --> 10:58.560
Running the who am I container, which shows me this output. I am.

10:59.760 --> 11:00.600
Container ID.

11:01.360 --> 11:05.800
And I will be this person looking at the reverse proxy.

11:06.360 --> 11:09.640
And so that reverse proxy itself is going to be another container.

11:13.400 --> 11:14.880
So these two containers we will have.

11:15.800 --> 11:19.360
This one and this one and we will connect them in a way we

11:19.360 --> 11:22.280
would want them to be connecting and then we'll interact with

11:22.280 --> 11:25.560
them to see if it actually works the way we wanted to be

11:25.560 --> 11:26.760
working. So here.

11:27.520 --> 11:28.280
I will.

11:29.480 --> 11:33.040
Just quickly cheat so I don't have to memorize the port

11:33.040 --> 11:36.280
numbers, but I'm going to looking at this code and I'll

11:36.280 --> 11:39.200
now remember what ports that using that they're using. This

11:39.200 --> 11:40.800
thing is using port number 8000.

11:41.920 --> 11:46.320
This thing runs on port number 80 and it maps to the actual

11:46.320 --> 11:47.120
machine I Mac.

11:47.120 --> 11:51.560
On also on port number 80 by default, so that's the mapping.

11:53.320 --> 11:57.560
And I want this reverse proxy to connect to this port on this

11:57.560 --> 12:00.240
container. That's what I would like to have.

12:01.240 --> 12:05.360
So this is the outlay of the or the design that I want to

12:05.360 --> 12:08.400
implement the way I would implement that design will be

12:08.400 --> 12:12.320
something like this. This is a compose file Docker compose.

12:12.320 --> 12:16.040
So here you see that there are two services.

12:18.200 --> 12:19.520
This is one of them.

12:20.400 --> 12:24.680
And this is another you will find by the way you will find

12:24.680 --> 12:26.520
this file in the step by step.

12:27.040 --> 12:31.120
Ocean inside your Docker files repository. That's where you

12:31.120 --> 12:32.640
will actually find it.

12:33.840 --> 12:37.080
So I mentioned these two containers. Let's go look at

12:37.080 --> 12:38.280
them one more time.

12:38.280 --> 12:40.240
So I'm going to it is my ink.

12:42.600 --> 12:46.360
And here are those two containers. This is one of them.

12:46.360 --> 12:49.800
This is another one that would be looking at right here.

12:51.400 --> 12:55.880
Number one, number two now when I instantiate you will see that

12:55.880 --> 13:00.080
the connections and the ports are how they map it out. You

13:00.080 --> 13:04.880
will see that. As I will explain to you this container, let us

13:04.880 --> 13:09.960
understand this one first. It is exposing itself on port number

13:09.960 --> 13:10.640
8000.

13:12.040 --> 13:14.200
And it wants to.

13:15.080 --> 13:16.360
Pretend to.

13:17.480 --> 13:22.640
Be this DNS name it wants to hold. It wants to be called by

13:22.640 --> 13:27.560
that name. You call me you know Prashant or call me Nilesh.

13:27.560 --> 13:32.080
Whatever that is right, so you assign yourself a name. So this

13:32.080 --> 13:35.480
container wants that people should call me by that name.

13:36.400 --> 13:40.840
My name is who.bar.com. That's what it's announcing that I

13:40.840 --> 13:42.920
want to be called by that name.

13:43.600 --> 13:47.640
That is called a virtual host announcement. This announcement

13:47.640 --> 13:49.560
is listened to by this container.

13:50.600 --> 13:52.280
Through the Docker socket.

13:53.920 --> 13:57.880
And through that it will know where is food.bar.com. That's

13:57.880 --> 14:01.680
the name this container wants to use. So through that

14:01.680 --> 14:05.400
announcement this will know OK food.bar.com means this dude. I

14:05.400 --> 14:09.040
mean this container. That's how the announcement happens.

14:10.000 --> 14:13.440
And now when you run this container, this runs NGINX

14:13.440 --> 14:17.240
proxy. Which is a container image created by Jason that I

14:17.240 --> 14:21.080
mentioned briefly last time, but it's the same image that we are

14:21.080 --> 14:24.800
using today and it maps port number 82 port number 80 like

14:24.800 --> 14:26.600
this port to that port on the machine.

14:26.600 --> 14:30.560
This is the machine port. This is the container port.

14:31.040 --> 14:35.200
So we want to make sure that this runs properly. What I know

14:35.200 --> 14:39.480
in my case in your case on a fresh new machine you will not

14:39.480 --> 14:43.600
have any problems. In my case I have a ton of services running

14:43.600 --> 14:47.080
already on this machine right here. Lots of them and port

14:47.080 --> 14:48.640
number 80 is occupied.

14:49.360 --> 14:50.920
So what does that mean?

14:51.920 --> 14:56.200
This port number 80 I cannot use. If I run it like that it

14:56.200 --> 14:59.600
will cause a conflict, so I'm changing it, changing it to

14:59.600 --> 15:03.680
something else like I like to use this port. They just made up

15:03.680 --> 15:07.240
port. You can select any port between say something like you

15:07.240 --> 15:11.960
know number 3000. All the way to 65535 you can pick any random

15:11.960 --> 15:15.480
port as long as it is not occupied already, you will

15:15.480 --> 15:19.600
succeed. If it is occupied, it will cause a conflict and it

15:19.600 --> 15:21.080
will fail, which is fine.

15:22.280 --> 15:26.000
So I'm going to choose this number 8760 as my port on the

15:26.000 --> 15:29.720
machine side, which means I need to edit that file little bit

15:29.720 --> 15:30.200
like that.

15:32.520 --> 15:36.640
And I hope you can see the the font is not too small. I guess

15:36.640 --> 15:41.000
you should be able to see it 8760 and with that change in my

15:41.000 --> 15:43.960
implementation in my composition or Docker compose file, I want

15:43.960 --> 15:46.720
to run these two containers running. These two containers

15:46.720 --> 15:50.280
are very simple, like literally one command does it.

15:51.120 --> 15:54.840
And so I will run that one command is defined in this file.

15:54.840 --> 15:58.680
It is this command. Execute this one command that takes up the

15:58.680 --> 16:02.280
YAML file and runs it. So let's go take that YAML file.

16:03.120 --> 16:07.320
And go to Docker files and go to the step by step folder and

16:07.320 --> 16:09.560
then look at that Docker compose file right there.

16:11.160 --> 16:15.680
This file. Is what I want to invoke through Docker compose,

16:15.680 --> 16:18.280
so I will run line number 5.

16:19.600 --> 16:23.600
Literally, that's the line I'm going to execute Docker compose

16:23.600 --> 16:28.680
1 dash F. For the reference to the file I want to use and then

16:28.680 --> 16:29.440
up. And as D.

16:30.800 --> 16:31.880
Look at it again.

16:33.000 --> 16:36.280
Let's see Docker PS dash A. I have lots of containers already

16:36.280 --> 16:40.360
running, so I want to make sure that I am clean in terms of what

16:40.360 --> 16:43.320
containers I'm running and how are they running and then

16:43.320 --> 16:46.040
nothing else is running from a previous attempt at these

16:46.040 --> 16:49.200
exercises. I think I see that there are certain things running

16:49.200 --> 16:52.680
here that I don't want to be running like engine X proxy is

16:52.680 --> 16:56.520
running and all that. So I need to shut those guys down. I will

16:56.520 --> 16:59.840
do that like right now, so I need to kill these containers.

17:00.760 --> 17:04.920
Uh? Which one is 6 hours ago that these guys that the top

17:04.920 --> 17:08.920
three containers here I want to kill them the 12 and three they

17:08.920 --> 17:14.480
are from a. A run that I did 6 hours ago. I need to kill them.

17:14.480 --> 17:17.440
I will kill these three containers by typing something

17:17.440 --> 17:20.800
like Docker RM dash F and then container ID.

17:20.800 --> 17:24.960
Another container ID and the third container ID and I kill

17:24.960 --> 17:29.560
all three of them. And I did not type the command properly. It

17:29.560 --> 17:34.120
should be just RM dash F, not RF. That should kill all the three

17:34.120 --> 17:38.120
containers that I wanted to die. Now I'll see my doctor containers

17:38.120 --> 17:41.240
running right now and I don't see anything that is.

17:41.840 --> 17:45.640
Not expected, so this is clean start. I just ignore all these

17:45.640 --> 17:49.240
guys. They're not supposed to be a part of our exercise today.

17:49.240 --> 17:54.320
So what I want to do now is to run that command, which is line

17:54.320 --> 17:57.640
number 5. So I will take that command.

17:59.000 --> 18:02.200
Here and execute it. Like that.

18:02.880 --> 18:06.680
So it should start up three containers basically, so let's

18:06.680 --> 18:09.600
go see that. What did it do?

18:11.480 --> 18:14.840
It started one contain or two containers, not three. So I'll

18:14.840 --> 18:18.840
describe what the third one is. So this is not a container, but

18:18.840 --> 18:20.520
it creates a network.

18:21.720 --> 18:25.200
It started an engine X proxy reverse proxy container and it

18:25.200 --> 18:28.880
started a who am I container for the two containers started and

18:28.880 --> 18:32.160
a network created for these guys to communicate to each other.

18:32.160 --> 18:35.040
That's the idea behind this network created and two

18:35.040 --> 18:38.520
containers created. So now what we have is exactly what we

18:38.520 --> 18:40.320
expected in this picture.

18:41.240 --> 18:44.680
Network that connects these guys and this container number one or

18:44.680 --> 18:47.880
number two and this container number two or number one. What

18:47.880 --> 18:51.000
about numbering is important? Not not relevant here in this

18:51.000 --> 18:54.560
context. So let me clean out my ink a little bit.

18:55.320 --> 18:59.320
And change to a white sheet of paper or yellow sheet of paper.

18:59.320 --> 19:03.040
There we go new sheet and now let us go evaluate what we have.

19:04.720 --> 19:07.720
So I want to test these containers, so let's go see

19:07.720 --> 19:08.320
what we have.

19:12.320 --> 19:14.720
Compose PS dash a.

19:14.720 --> 19:18.320
Oh, sorry, where to pass a file reference to the file we're

19:18.320 --> 19:22.000
using, which is dash F1 dot something no dash F1 dot.

19:23.480 --> 19:26.760
Tab please no file names.

19:27.480 --> 19:29.320
This the file I want to pass.

19:30.320 --> 19:35.680
So Docker compose dash F that file name and then show me the

19:35.680 --> 19:40.000
PS process is running under this Docker compose file. It will

19:40.000 --> 19:43.680
show you the two containers running. Here is the container

19:43.680 --> 19:47.000
name. For the first one.

19:48.000 --> 19:51.400
And the container name for the second one. So we have these two

19:51.400 --> 19:54.440
containers already running and now we want to examine what are

19:54.440 --> 19:58.040
they doing for us. So in our picture that I had drawn before,

19:58.040 --> 20:01.320
I'll draw that picture one more time, which is this container

20:01.320 --> 20:02.920
here called who am I?

20:02.920 --> 20:04.360
And another container here.

20:06.760 --> 20:10.440
Called engine X proxy. It is talking on running on port

20:10.440 --> 20:14.280
number 80 locally, but port number 8760 on the IMAX side and

20:14.280 --> 20:17.800
that's the connection that we have. Plus, this proxy is also

20:17.800 --> 20:21.680
speaking over the network that it created on this port to that

20:21.680 --> 20:26.880
who am I container. So what I can do is sitting on the Mac.

20:28.320 --> 20:32.880
Read what this guy is telling me and I'll have to ask it for the

20:32.880 --> 20:35.520
name of this person is food.bar.com.

20:35.520 --> 20:38.120
And so that is exactly what I will do now.

20:39.480 --> 20:43.800
And how do I test it? What I want to be able to do is curl

20:43.800 --> 20:47.840
it to this curl thing we tried a last time and I'll explain this

20:47.840 --> 20:51.320
a little bit clearly so that you will understand the complexity

20:51.320 --> 20:55.120
of curl. Once you get this idea of how to use curl to tweak

20:55.120 --> 20:57.760
around and inspect various running containers in a complex

20:57.760 --> 21:01.600
setup, you will have a whole lot easier time dealing with actual

21:01.600 --> 21:05.040
containers in real life. So as you will see in the next

21:05.040 --> 21:08.880
command, as you will see in this command on line number 9, let's

21:08.880 --> 21:13.200
go dissect that a little bit. What am I doing? I'm asking the

21:13.200 --> 21:17.280
curl command. For the response coming from a machine running or

21:17.280 --> 21:20.120
container running on localhost at port number.

21:22.400 --> 21:26.800
This is not correct because I changed it 8760. That's how it

21:26.800 --> 21:31.280
should be. So tell me whatever is coming back at this address.

21:31.280 --> 21:33.520
And I want to actually talk to.

21:34.560 --> 21:39.120
This container on the back side of your engine X proxy. So when

21:39.120 --> 21:41.560
I run this curl command on the iMac.

21:41.560 --> 21:43.720
It hits the proxy.

21:44.680 --> 21:45.920
At localhost.

21:46.720 --> 21:52.520
8760 which then hits the reverse proxy at port number 80. The

21:52.520 --> 21:57.840
container inside which then hits port number 8000 on the 2MI

21:57.840 --> 21:59.400
machine or container.

21:59.400 --> 22:01.720
And then gets me the response back.

22:04.840 --> 22:09.560
That's how you will see the flow of this. So let me you know

22:09.560 --> 22:13.240
explain this one more time clearly so that you will get it.

22:13.240 --> 22:16.440
The way I will. The way I will modify this command is.

22:17.240 --> 22:22.760
76. This command specifically this portion of localhost 8760

22:22.760 --> 22:29.480
refers to the iMac. Which means. If I.

22:31.240 --> 22:35.880
If I run this command like curl and then type the H which is

22:35.880 --> 22:40.680
past this header. I want to talk to this header which has a

22:40.680 --> 22:45.400
host called foo.bar.com. That is the header I want to pass and

22:45.400 --> 22:50.520
talk to the machine locally on the iMac. I am on the iMac so

22:50.520 --> 22:51.080
localhost.

22:51.080 --> 22:56.160
On the iMac, port number 8760. Show me what it gives me and

22:56.160 --> 23:00.640
what will happen is you will see that the container who am I

23:00.640 --> 23:04.120
will respond back. And it says I am the container ID.

23:05.480 --> 23:07.720
So if you now look at the containers running.

23:08.520 --> 23:12.240
The container ID for the who am I container this container ID

23:12.240 --> 23:16.240
is responding back with the ID of the container which is 6

23:16.240 --> 23:19.720
sorry 6CAA55 whatever that number is. So that is the

23:19.720 --> 23:23.000
container that is responding back. How is it going through

23:23.000 --> 23:27.400
all the way to the back end of that container is through these

23:27.400 --> 23:31.000
references. This reference is the machine called iMac because

23:31.000 --> 23:32.920
that's where I'm running locally.

23:33.600 --> 23:36.000
This reference is to the port that I am using.

23:37.240 --> 23:42.560
Here. On the machine which is mapping to port number 80 on the

23:42.560 --> 23:43.880
proxy container.

23:43.880 --> 23:48.160
And this proxy is then looking for this host name.

23:49.560 --> 23:55.320
Which who am I has advertised that I am foo.bar.com and

23:55.320 --> 23:56.120
therefore.

23:57.560 --> 24:02.360
This who am I receives that request for curd and it response.

24:03.600 --> 24:07.560
Is given out like that, so that's the response you will see

24:07.560 --> 24:10.000
that you saw. We can you know.

24:10.000 --> 24:14.720
Make a note of what that ID number is like 6CAA that number

24:14.720 --> 24:18.240
so keep track of that and I will erase my ink.

24:19.800 --> 24:24.320
And then I want to kill the who am I container.

24:25.120 --> 24:28.800
Like that container ID I want to die. So how do I kill a

24:28.800 --> 24:32.000
container specific container Docker RM dash F kill it? I

24:32.000 --> 24:32.600
killed it.

24:34.080 --> 24:38.280
So now I'll I'll Docker compose up the whole thing.

24:38.280 --> 24:42.960
One more time. What will happen as a consequence is that the

24:42.960 --> 24:44.960
who am I container?

24:46.120 --> 24:49.880
By the way, right now only one container is running. Who am I

24:49.880 --> 24:53.280
is dead because I killed it. You can see that only engine

24:53.280 --> 24:57.040
proxy is running. Now if I bring the whole thing back again,

24:57.040 --> 25:00.000
like I did the first time, this brings up that who am I again?

25:01.840 --> 25:03.000
See this who am I?

25:03.920 --> 25:04.800
Got started.

25:04.800 --> 25:07.400
And proxy was running already.

25:09.280 --> 25:13.200
So now what this does is it generates a new ID for that who

25:13.200 --> 25:16.680
am I container and you will see if I curl one more time.

25:16.680 --> 25:21.520
Like that. And say give me the response. You will see that this

25:21.520 --> 25:25.560
time the container ID is different. Earlier it was this.

25:27.040 --> 25:28.200
And now it is this.

25:30.320 --> 25:31.600
This is the one I killed.

25:31.600 --> 25:33.840
And I started a fresh compose.

25:34.840 --> 25:37.200
It started this new who am I?

25:37.920 --> 25:40.360
Which is what is responding back with its ID.

25:41.080 --> 25:45.000
So we are able to actually reach out to a container behind a

25:45.000 --> 25:48.200
proxy and connect through it through a reverse proxy and get

25:48.200 --> 25:51.680
the response back. That's how exactly you know a website opens

25:51.680 --> 25:55.480
basically by the way, so website will pass something like

25:55.480 --> 25:56.880
food on bar.com.

25:57.680 --> 26:01.400
On the browser on the on the editor, you know, you can

26:01.400 --> 26:04.840
go to address bar and you would type something. It will send a

26:04.840 --> 26:07.640
request back with that header and send out to the destination

26:07.640 --> 26:10.440
address wherever that machine lies. It might have a proxy in

26:10.440 --> 26:13.640
front. It may not have a proxy, but that's where the response

26:13.640 --> 26:15.960
comes back to you in the browser window.

26:15.960 --> 26:20.600
So now what I want to do is to tell you that this food on

26:20.600 --> 26:22.120
bar.com is a made up name.

26:23.040 --> 26:26.280
You know there is no such thing called food on bar.com. At

26:26.280 --> 26:30.840
least I don't know off and so what I want to do is go on my

26:30.840 --> 26:33.120
Macintosh. This is your.

26:33.840 --> 26:38.040
This this container that this command line you're looking at

26:38.040 --> 26:43.320
is my I Mac, so it's the Linux box so you can see that you

26:43.320 --> 26:48.160
name is a Linux machine right there, Linux. So what I want to

26:48.160 --> 26:52.600
do is get back to my local I Mac, sorry local whatever this

26:52.600 --> 26:55.120
Mac. So this is not a Linux machine.

26:55.120 --> 27:00.360
It's Darwin on this machine. I want to make a modification.

27:01.400 --> 27:04.840
To the host file. And what I want to do is.

27:05.800 --> 27:09.360
Show you the modification I already made. What did I make?

27:09.360 --> 27:10.000
Let's go see.

27:11.840 --> 27:14.440
You see that I already made this change 6 hours ago.

27:15.800 --> 27:17.120
And I added this line.

27:17.840 --> 27:22.560
As a hack, this is basically a DNS hack. I modified.

27:22.560 --> 27:26.840
And my host file and said, you know, 192 168 1.10.

27:28.360 --> 27:32.800
Is where food on bar.com lives. That's a local overrided. This

27:32.800 --> 27:36.600
hack will run only on the on the machine that I'm on on this Mac.

27:37.600 --> 27:38.720
And nowhere else.

27:39.520 --> 27:42.680
And so if I now on the Mac open food on bar.com.

27:43.600 --> 27:49.160
The traffic will go to 192 168 1.10, which is the I Mac.

27:49.160 --> 27:54.000
But. I wanted the traffic to go on port number 8760.

27:55.040 --> 28:00.000
On the food on bar.com name, so I will open up a browser like

28:00.000 --> 28:01.320
this. HTTP.

28:02.120 --> 28:03.400
Colon slash slash.

28:04.480 --> 28:06.720
And then I'll say food on bar.com.

28:09.840 --> 28:14.880
And then I'll put a colon and put 8760. What will happen as a

28:14.880 --> 28:18.960
consequence in this fictitious name that I have assigned in my

28:18.960 --> 28:23.120
htc host file on the Mac will recognize that this address

28:23.120 --> 28:24.680
actually is mapping to.

28:26.080 --> 28:26.920
That address.

28:28.480 --> 28:30.320
192 168 1.10.

28:31.240 --> 28:34.120
So now it will then transmit that traffic to the Mac.

28:35.040 --> 28:38.680
To the I Mac where it will run into this machine, the I Mac

28:38.680 --> 28:41.680
machine at that port, because that's what we're passing as a

28:41.680 --> 28:45.160
reference. And then it goes through the same process like we

28:45.160 --> 28:48.680
did before. This time we have one step away from the actual

28:48.680 --> 28:51.920
address that that we had in our hand. What does it mean?

28:52.640 --> 28:56.480
Let me raise my ink, go back to my illustrations here and what

28:56.480 --> 29:00.440
I'm going to tell you is that this machine that I am dealing

29:00.440 --> 29:02.240
with right now is an M1 Mac.

29:02.240 --> 29:05.280
And I have modified my Etsy host file.

29:08.840 --> 29:12.320
And in that host file modification, I told my machine

29:12.320 --> 29:19.800
that foo.bar.com actually is 192.168.1.10.

29:19.800 --> 29:23.400
That's where you should go, so it goes there. Now let us see

29:23.400 --> 29:27.400
if we can open a browser and see we can see what this guy is

29:27.400 --> 29:31.080
telling us. Does it reach there and does it even give us the

29:31.080 --> 29:34.880
answer we expect to get, which is I am some ID. That's what I'm

29:34.880 --> 29:38.320
expecting to get from this who am I container. So I'm going to

29:38.320 --> 29:39.280
open up my browser.

29:39.280 --> 29:46.680
And then. Local host, not local host, foo.bar.com.

29:46.680 --> 29:53.320
http colon slash slash foo.bar.com colon 8760 and let's

29:53.320 --> 29:54.520
see what pops up.

29:56.480 --> 29:57.680
And what do I see?

29:58.600 --> 30:02.800
I am some number. This is exactly what we expected.

30:03.800 --> 30:08.040
But we who is sending us this response? The response is

30:08.040 --> 30:12.200
coming back from. From this guy.

30:14.760 --> 30:17.560
And we are going from the M1 Mac.

30:19.120 --> 30:23.480
To this machine which is running on the which are running

30:23.480 --> 30:27.440
containers on that port which maps to the proxy container on

30:27.440 --> 30:31.680
this port and this proxy talks to the who am I container on

30:31.680 --> 30:35.440
that port and send the response back through the proxy proxy to

30:35.440 --> 30:39.560
that Mac to this M1 Mac. And then you see it in the browser.

30:41.360 --> 30:46.600
So that was the overall detail of flow of graphic from browser.

30:47.480 --> 30:51.560
All the way to the back end and back to the browser. So that's

30:51.560 --> 30:54.880
the communication pad that users saw in a very simple trivial

30:54.880 --> 30:56.600
example with a Docker compose file.

30:57.560 --> 31:01.560
That we used which we use this one. This file right? That's

31:01.560 --> 31:05.880
what we used. So in your case you will have this 8760. You

31:05.880 --> 31:08.960
will not be using it. We will probably not be running random

31:08.960 --> 31:12.440
services on your on your computer or you you can like a

31:12.440 --> 31:15.280
renter cloud cloud machine somewhere in some cloud and you

31:15.280 --> 31:17.880
know use the same set exercise exactly like I'm showing you.

31:17.920 --> 31:20.440
It will work just the same way and you will not even have the

31:20.440 --> 31:24.080
port conflict like I run into. And so you have to take care of

31:24.080 --> 31:27.000
that and not busy. You don't have to do anything. It just

31:27.000 --> 31:28.840
follow the instructions and you should succeed.

31:28.840 --> 31:33.520
Having said there was just one simple example of who am I? I'll

31:33.520 --> 31:37.440
now add a little bit of complexity to this and make it

31:37.440 --> 31:38.560
slightly more complex.

31:40.920 --> 31:41.880
And that example.

31:42.800 --> 31:43.400
Is here.

31:45.280 --> 31:47.440
It's the number two Docker compose file.

31:48.400 --> 31:50.760
It runs WordPress and it has.

31:52.280 --> 31:53.640
Let's see how many things.

31:55.920 --> 31:56.280
3.

31:56.280 --> 32:00.960
And a network. So let's go describe this overall overall.

32:02.120 --> 32:05.880
By the way, before I jump, let me clean up what we just created

32:05.880 --> 32:10.280
here. So what does that mean? I need to go back and quit from

32:10.280 --> 32:11.680
the from the Macintosh.

32:13.200 --> 32:15.320
So I quit.

32:16.560 --> 32:20.720
Then I go back to the I Mac, which is a Docker machine, and

32:20.720 --> 32:22.160
that's where I want to.

32:22.160 --> 32:23.040
Shut down.

32:23.040 --> 32:26.960
This Docker compose, so I'll say Docker compose down, so it

32:26.960 --> 32:30.880
shuts them down and removes the network and removes the who am

32:30.880 --> 32:34.320
I? Container removes the proxy and all that is cleaned, cleaned

32:34.320 --> 32:38.280
out completely. Having having seen that I will now jump over

32:38.280 --> 32:42.360
to describing to you. By the way, this guy is dead. If you

32:42.360 --> 32:46.080
open the browser now, try again later. Nothing works because the

32:46.080 --> 32:49.360
machine is not running anymore. Like containers are not running

32:49.360 --> 32:50.920
anymore, so it is dead.

32:50.920 --> 32:55.080
Having seen that, let us now describe the next design as to

32:55.080 --> 32:59.920
how we can implement this design and how is it written down in a

32:59.920 --> 33:03.600
Docker compose file. So that's what that's what we will will

33:03.600 --> 33:08.120
discuss a little bit. So in this let me just read the compose

33:08.120 --> 33:12.080
files. I can draw the picture properly, so we have an engine

33:12.080 --> 33:15.200
X proxy. We have a database and WordPress and volume and.

33:15.920 --> 33:18.120
A network. So five things.

33:18.120 --> 33:20.560
So I'll describe those things to you.

33:22.960 --> 33:25.680
OK, I'll draw them on the left half.

33:26.960 --> 33:27.760
And.

33:31.120 --> 33:34.720
You can reference them in the right half on the code. I think

33:34.720 --> 33:37.840
it is too small, probably, so I'll make it slightly bigger

33:37.840 --> 33:41.600
almost slightly. Yeah, there we go. So we have the services

33:41.600 --> 33:45.320
available now. OK, good, let's go begin so.

33:45.320 --> 33:50.400
Let me draw it out so we have that I'm act that I'm dealing

33:50.400 --> 33:55.600
with. In that I'm act I need to have a network so some some

33:55.600 --> 33:56.720
network here.

33:58.120 --> 34:01.160
Which automatically gets created through line number 41 here

34:01.160 --> 34:05.560
right? On the on the right side, 41 that creates a network

34:05.560 --> 34:08.240
called CG. That's the name that I chose.

34:09.920 --> 34:14.400
Then we have a volume in line number 38. Volume basically

34:14.400 --> 34:17.280
means storage space storage.

34:19.080 --> 34:20.280
Also known as volume.

34:22.400 --> 34:27.240
And this volume is assigned a name called DB underscore data.

34:29.560 --> 34:33.680
So asking Docker to give us a volume or storage place for

34:33.680 --> 34:37.000
database to consume. That's the idea behind this storage

34:37.000 --> 34:37.760
allocation.

34:39.440 --> 34:43.240
So we are looking for getting some storage, getting a network

34:43.240 --> 34:47.080
source and then we will instantiate a WordPress container.

34:48.560 --> 34:50.920
Will also instantiate a database container.

34:52.560 --> 34:54.720
And will also instantiate a reverse proxy.

34:56.520 --> 35:00.560
That reverse proxy again I need to run it on a different port

35:00.560 --> 35:04.120
because my ports are occupied. And that's the mapping we have

35:04.120 --> 35:05.040
to establish.

35:08.680 --> 35:11.560
That is this container reverse proxy container same like

35:11.560 --> 35:16.240
this. Same exact thing, except I need to change this port 8760.

35:16.240 --> 35:18.320
So I did that.

35:19.840 --> 35:22.640
And that's the reason I need to do because my machine is.

35:23.480 --> 35:26.920
Running a bunch of other things, so it is already taken over the

35:26.920 --> 35:29.280
port number 80, so it's not available anymore right now.

35:30.040 --> 35:33.520
Now let us see. Look at this container WordPress container

35:33.520 --> 35:37.280
which is exposing itself on the container side at port number

35:37.280 --> 35:37.760
80.

35:37.760 --> 35:42.440
And it wants to be called the same name foo.bar.com.

35:45.600 --> 35:48.640
So my name is foo.bar.com. That's what it says.

35:49.680 --> 35:50.200
Fine.

35:51.280 --> 35:51.800
Next.

35:53.040 --> 35:55.800
What do we have is the third container is this.

35:56.840 --> 35:58.240
Which is a database container.

35:59.040 --> 36:03.560
This time as you will see that I am using MySQL as opposed to

36:03.560 --> 36:07.680
MariaDB, so it's just giving you a flavor.

36:09.040 --> 36:11.960
And so that is this container right there.

36:18.160 --> 36:20.200
And this container uses this volume.

36:21.520 --> 36:25.280
The data that it wants to store the data and database data.

36:26.160 --> 36:27.720
Is stored in this volume.

36:27.720 --> 36:33.200
And this is referenced right here.

36:35.960 --> 36:39.880
So that's the database storage location that is assigned to a

36:39.880 --> 36:43.880
location where MySQL expect to store the database data, which

36:43.880 --> 36:47.840
is where libmySQL and that's where this container will store

36:47.840 --> 36:50.600
the data and will be preserved in this storage location

36:50.600 --> 36:54.240
allocated to you by Docker. So Docker gives you storage system.

36:54.240 --> 36:58.120
That's what you can consume it here like that.

36:58.120 --> 37:00.360
So that was database and the storage for that.

37:01.720 --> 37:02.400
Similarly.

37:03.160 --> 37:05.480
This container is used by this container.

37:06.400 --> 37:07.960
WordPress will use database.

37:09.120 --> 37:11.760
See WordPress depends on database.

37:14.600 --> 37:17.680
It depends on that container, so that means the database

37:17.680 --> 37:20.320
container needs to be up and running before WordPress

37:20.320 --> 37:22.200
container is set to be ready.

37:22.200 --> 37:22.920
And.

37:24.200 --> 37:28.840
It has a name that it wants to call itself by that name

37:28.840 --> 37:34.680
foodonbar.com. It is mapping itself to WordPress DB, which is

37:34.680 --> 37:40.120
this container. On port number 3306, which is where MySQL runs.

37:41.840 --> 37:46.280
It has a user called username and a password called password,

37:46.280 --> 37:48.920
which is the same thing I have signed here.

37:48.920 --> 37:50.560
The username is username.

37:51.440 --> 37:55.440
And password is password. Now this is a stupid idea. Don't do

37:55.440 --> 37:59.000
this in production, but I do these things for simplicity for

37:59.000 --> 38:02.520
I don't have to type because I told you probably I'm laziest

38:02.520 --> 38:06.320
you can ever imagine like really the most lazy person on the

38:06.320 --> 38:07.680
planet is probably me.

38:08.600 --> 38:12.360
And so I don't want to even type username and password, so I

38:12.360 --> 38:14.720
just assign them so that it automatically picks up.

38:14.720 --> 38:19.440
As you will see, so that's the WordPress container here.

38:21.920 --> 38:23.560
And I will erase my ink now.

38:24.800 --> 38:27.360
And reference the third container, which is this one.

38:28.320 --> 38:30.480
And as you can see, the port mapping.

38:31.040 --> 38:35.400
Is already discussed in the previous example, and that's

38:35.400 --> 38:39.160
pretty much it. It also looks at Docker socket so it can read

38:39.160 --> 38:41.760
the names that you're requesting. For example.

38:41.760 --> 38:44.040
This name here.

38:45.320 --> 38:47.560
Virtual host is picked up.

38:48.720 --> 38:54.640
By this volume mapping so that engineers reverse proxy that we

38:54.640 --> 38:59.480
have is aware of the name that this container is expecting to

38:59.480 --> 39:01.840
use. Food on bar.com.

39:02.720 --> 39:06.800
And so anytime somebody from the outside says give me what is

39:06.800 --> 39:10.200
showing on food on bar.com, the request hit.

39:10.200 --> 39:14.880
The request hit the machine on that port 8760, which then

39:14.880 --> 39:18.600
transfers over to the reverse proxy and reverse proxy knows

39:18.600 --> 39:20.960
where is food on bar.com because of that label.

39:21.480 --> 39:23.640
32 line 32.

39:24.840 --> 39:25.520
This level.

39:26.960 --> 39:31.040
So then sends the traffic over to WordPress. You can have you

39:31.040 --> 39:34.160
know multiple different things running all behind the same

39:34.160 --> 39:37.600
reverse proxy with different names and you can run multiple

39:37.600 --> 39:40.200
services all behind one reverse proxy.

39:41.240 --> 39:44.040
That's the underlying idea of using a reverse proxy. We're

39:44.040 --> 39:46.920
just using one example right now. We can actually run

39:46.920 --> 39:49.720
multiple things behind one reverse proxy on one machine,

39:49.720 --> 39:52.680
multiple websites, multiple services, whatever else you want.

39:52.680 --> 39:57.320
It's not just websites anything. As long as they have a unique

39:57.320 --> 40:01.000
name assigned. Reverse proxy will understand and associate

40:01.000 --> 40:04.200
them appropriately with this guy, that guy, this guy,

40:04.200 --> 40:07.800
whatever you have. We don't have these guys yet. Subsequent

40:07.800 --> 40:12.080
example will have it. The number three. This example has it.

40:13.080 --> 40:15.520
So I'm going to erase my ink again.

40:16.520 --> 40:20.200
And this time, now that we have understood what our design is.

40:20.880 --> 40:23.920
I will run this compose stack, bring it up.

40:25.800 --> 40:30.040
What does it mean? It means I will run Docker compose with

40:30.040 --> 40:35.000
this file in hand, which is described in our step number two.

40:36.840 --> 40:40.760
Not described here apparently, so it's not written down, is it?

40:41.320 --> 40:41.760
Let's see.

40:44.280 --> 40:47.600
It's not written down, it seems so I'll write it. Hold on, let

40:47.600 --> 40:49.400
me check. Did I write it?

40:52.280 --> 40:56.040
No, I did not write it, so let me write it down.

40:56.040 --> 41:00.880
The way you would do that is to invoke pretty much like what we

41:00.880 --> 41:03.240
did in in step number one.

41:03.960 --> 41:07.000
Is this command right there? Same thing.

41:07.800 --> 41:11.120
Except this slightly modified to refer.

41:14.800 --> 41:16.960
The other file. This file.

41:21.280 --> 41:25.440
Instead of the file that I am using in the previous example,

41:25.440 --> 41:29.320
I will run Docker compose jwilder.yml. I will not use this

41:29.320 --> 41:31.480
name, but instead use the other name.

41:33.520 --> 41:37.360
That's it. That's the only change you refer to the other

41:37.360 --> 41:39.680
file and it brings up that stack.

41:39.680 --> 41:42.800
So that's the change I just made in my instructions.

41:43.480 --> 41:47.240
And I will now execute that on my command line.

41:48.160 --> 41:49.160
In the iMac.

41:49.160 --> 41:54.000
So here. Like that, Docker compose, bring up the stack

41:54.000 --> 41:59.200
containing WordPress, meaning this file. Bring it up so I did

41:59.200 --> 42:00.400
so it does.

42:02.760 --> 42:04.120
So now we have.

42:05.000 --> 42:06.880
A container running.

42:08.600 --> 42:12.120
Call DB engine, X proxy and app.

42:12.840 --> 42:15.120
So three containers are running right now.

42:15.120 --> 42:18.760
There is some network default, external name is deprecated,

42:18.760 --> 42:20.040
some deprecation warning.

42:20.640 --> 42:25.040
Is assigned apparently, so we will have to deal with the

42:25.040 --> 42:29.160
deprecation later on. I will not talk about deprecations right

42:29.160 --> 42:34.080
now. But it's probably something like this. I think that's what

42:34.080 --> 42:38.600
it basically means, but I think that's what this this line means

42:38.600 --> 42:42.200
external equal true set network name external true. That's what

42:42.200 --> 42:45.720
it means, but I'm not messing around with that thing right

42:45.720 --> 42:47.840
now, so I'm not touching it.

42:49.920 --> 42:54.440
But that said, let us go test. How do you test the same exact

42:54.440 --> 42:58.960
way? Same exact way. In fact, it's a whole lot easier to see

42:58.960 --> 43:03.600
this because we can just open our Firefox browser and go to

43:03.600 --> 43:08.520
http colon slash slash foo dot bar dot com slash 8760 just like

43:08.520 --> 43:16.400
before I will visit this site on my M1 Mac. Remember?

43:17.240 --> 43:21.800
Not this, not this setup, but a separate machine that I have

43:21.800 --> 43:27.000
here or M1 which has the host file modified at C host file is

43:27.000 --> 43:32.000
modified. And I say food dot bar dot com is actually this

43:32.000 --> 43:37.000
machine. So go there. So that's what we expect to see that it

43:37.000 --> 43:40.240
will connect to this reverse proxy through this machine port

43:40.240 --> 43:43.360
to the internal port, which then connects to the WordPress

43:43.360 --> 43:46.160
instance, which then connects to the database, which then

43:46.160 --> 43:48.720
stores the data in the storage, all on this network.

43:49.640 --> 43:50.680
That's what you will see now.

43:51.480 --> 43:52.600
So let us go play with it.

43:55.160 --> 43:58.760
By the way, when you get time, you should do these exercises

43:58.760 --> 44:00.920
yourself and post a screenshot on Twitter.

44:02.920 --> 44:04.360
I'm going to erase this ink.

44:04.360 --> 44:05.480
And then.

44:06.840 --> 44:08.280
Open up that website.

44:09.200 --> 44:11.560
There is another guest coming in. I let him in.

44:14.800 --> 44:16.000
Somebody just showed up.

44:17.160 --> 44:17.880
You're welcome.

44:19.560 --> 44:23.640
So I will now see what that website shows with the browser

44:23.640 --> 44:25.200
shows. So I'm going to open it up.

44:25.200 --> 44:37.120
And. It already shows me something from our previous

44:37.120 --> 44:42.600
attempt. So what I'm going to do now is delete the storage that

44:42.600 --> 44:45.760
storage persisted the whole thing, so that's why you see

44:45.760 --> 44:49.280
the previous attempt that I did. I need to kill the kill the

44:49.280 --> 44:52.840
whole stack and bring it up again. So let me kill it so that

44:52.840 --> 44:56.080
you get a clean experience right now. You're getting a

44:56.080 --> 44:58.920
stale experience from my previous attempt at running this

44:58.920 --> 45:03.160
thing, so I will go back and bring that stack down.

45:04.120 --> 45:07.480
And also delete the storage location. See, I mentioned you

45:07.480 --> 45:10.720
about this storage here, right? This storage here. This one.

45:11.480 --> 45:15.000
That persisted. It did not die. I didn't kill it. Story doesn't

45:15.000 --> 45:18.840
die unless you go deliberately kill it. So I'm going to kill it

45:18.840 --> 45:22.560
now and then run the whole thing again. So here I go identify

45:22.560 --> 45:28.320
what I was using here and so the storage name was Docker Volumes

45:28.360 --> 45:32.640
LS. Lots of volumes here. I want to identify the right one and

45:32.640 --> 45:34.880
kill that one. The right one is.

45:36.080 --> 45:37.920
DB data. Where is that?

45:44.840 --> 45:49.160
There, that's the name. So step by step DB data is the volume

45:49.160 --> 45:54.960
that I want to kill. So Docker volume RM dash F and this guy

45:54.960 --> 46:00.480
should die. So it died nice. So now we don't have that volume

46:00.480 --> 46:04.240
anymore. You can check it by gripping for it.

46:09.440 --> 46:13.080
And we have nothing nice clean setup. So now we'll bring that

46:13.080 --> 46:15.320
stack back up. Again.

46:15.320 --> 46:17.920
This time, as you will see, it created a volume.

46:18.640 --> 46:21.040
That means we're getting a fresh new experience.

46:21.920 --> 46:23.840
And I will refresh the browser.

46:24.560 --> 46:28.040
Like that. And it will show you fresh new installation of

46:28.040 --> 46:31.600
WordPress. That's exactly what we expect, not stale setup. So I

46:31.600 --> 46:35.720
killed the data data store storage volume and now we have

46:35.760 --> 46:40.000
to continue assign a name. So I'll call it the cloud seminar

46:40.000 --> 46:43.600
by cloud genius and all that name password.

46:43.600 --> 46:45.680
And confirm the use of weak password.

46:46.440 --> 46:49.640
You don't want to do that in real situation. Put my name, my

46:49.640 --> 46:53.240
email address. And then discourage search engines and

46:53.240 --> 46:56.360
then install WordPress and you have it up and running. You can

46:56.360 --> 46:58.200
log in. And here you go.

47:01.840 --> 47:04.240
And this is by the way, the latest updated WordPress. You

47:04.240 --> 47:08.120
don't have to any updates any is already finished fresh and you

47:08.120 --> 47:12.040
can now go create a post. Like this, add a post.

47:12.040 --> 47:17.240
And say next, next, next. OK, come on, go away, title.

47:42.040 --> 48:04.800
So that was my edit in this new blog post. I'm going to publish

48:04.800 --> 48:09.520
it and say I am ready. So OK, go do it and then view the post

48:09.520 --> 48:14.040
and there we have it. That's the new post. Now, as you can

48:14.040 --> 48:17.440
see, you know this will persist by the way. If I shut down or

48:17.440 --> 48:20.680
bring the stack down, my data volume will persist and my

48:20.680 --> 48:24.160
everything else will remain intact. Let's go test it. Let's

48:24.160 --> 48:27.000
go actually kill this thing down and bring it down. So docker

48:27.000 --> 48:27.960
volume bring down.

48:29.120 --> 48:34.280
So now. The containers are stopped. The volume.

48:34.280 --> 48:39.120
It's still there. So if I now bring the stack up.

48:40.720 --> 48:43.120
You will see that everything is just fine.

48:44.360 --> 48:47.400
It is working. If I go back and shut it down.

48:51.720 --> 48:55.640
And try to bring it back, nothing works. I go back and

48:55.640 --> 48:57.240
bring it up again.

49:00.240 --> 49:04.240
Everything works. I go back and I go back and I go back and

49:04.240 --> 49:05.480
I go back, shut it down.

49:07.880 --> 49:12.720
And kill the storage you see. That storage volume that one I

49:12.720 --> 49:17.400
want to delete it. So I'll say docker volume go bye bye.

49:19.560 --> 49:23.560
Where is the docker volume? Go bye bye so it dies and we don't

49:23.560 --> 49:27.040
have the docker volume anymore. So now I'll bring the stack up.

49:28.280 --> 49:29.240
And you will see.

49:29.240 --> 49:33.240
That it works like a fresh setup. Actually, it's trying to

49:33.240 --> 49:35.480
establish a connection. But it will soon.

49:39.640 --> 49:43.160
Connect and then it was waiting for database to start up

49:43.160 --> 49:46.960
before it could not establish connection. So now it did and

49:46.960 --> 49:50.280
then we go continue and the same exact thing again. The.

49:50.760 --> 49:53.280
Let's call it cloud genius site.

49:53.280 --> 49:57.400
And user name again, whatever you want. Basically.

50:00.640 --> 50:02.560
This is just junk nothing.

50:04.640 --> 50:08.720
And you have the machine up and running with the sites and

50:08.720 --> 50:11.960
services you wanted and you logged in and then your

50:11.960 --> 50:14.120
dashboard and updates and all are good.

50:15.160 --> 50:16.040
That's the idea.

50:16.960 --> 50:18.720
So we killed our data storage.

50:18.720 --> 50:22.640
And everything was lost. Bring the stack up and you saw the

50:22.640 --> 50:26.120
experimentation. They take away. Let's go summarize it. What did

50:26.120 --> 50:29.680
we do and why did we do it? So here we go.

50:31.760 --> 50:33.080
Summarizing this idea.

50:36.960 --> 50:41.480
The what I'm going to do is get my pencil back. There we go and

50:41.480 --> 50:45.640
I will summarize. The idea is that you can run multiple

50:45.640 --> 50:48.960
services. As many as you want.

51:01.400 --> 51:03.960
And run them all behind a reverse proxy.

51:07.080 --> 51:08.920
And the users can access.

51:09.720 --> 51:12.600
The same IP address with a different IP address.

51:12.600 --> 51:17.280
Access. But the same IP address with a different name like

51:17.280 --> 51:20.600
food.bar.com. So this was food.bar.com.

51:23.960 --> 51:28.600
This was running WordPress and it has a database and it stored

51:28.600 --> 51:32.920
the data in a database system volume provided by Docker called

51:32.920 --> 51:37.240
DB. Underscore data that was the name. I think I chose that's

51:37.240 --> 51:41.160
where the storage was given and all these containers are running

51:41.160 --> 51:44.400
at work. That also gets created through Docker compose.

51:45.000 --> 51:48.200
And you can have this one as say Nilesh.

51:49.280 --> 51:51.200
This one can be Sanjay.

51:53.000 --> 51:54.560
Or basically whatever you want.

51:56.000 --> 51:57.680
And this reverse proxy will.

51:58.560 --> 52:02.080
Reach out to the appropriate container by the name you're

52:02.080 --> 52:05.760
using. And those services will automatically get connected to

52:05.760 --> 52:09.520
whatever on the underlying levels of data set databases or

52:09.520 --> 52:13.680
this or you know Redis proxy or God knows whatever you have

52:13.680 --> 52:17.480
under the hood. You can create whatever you want and run the

52:17.480 --> 52:18.880
entire stack.

52:18.880 --> 52:22.840
In one command, that's the third exercise. By the way, the third

52:22.840 --> 52:26.840
step you will actually see it. Or maybe I'll let let let let

52:26.840 --> 52:29.960
go summarize this first before talk about third. The bottom

52:29.960 --> 52:33.320
line is you can as long as you're preserving the data.

52:33.320 --> 52:38.400
So keep this safe. You can destroy the whole thing.

52:40.840 --> 52:44.720
And bring it up back in one command and everything is back

52:44.720 --> 52:48.360
to normal business. No problem at all, like as if nothing

52:48.360 --> 52:51.200
happened. So that's the whole idea is providing you

52:51.200 --> 52:54.480
resiliency. As long as you're able to protect your data, you

52:54.480 --> 52:57.760
can kill your containers left and right. All of them together

52:57.760 --> 53:01.680
at the same time and bring it back up in a matter of fraction

53:01.680 --> 53:06.120
of seconds. And you're back in business. That's the takeaway is

53:06.120 --> 53:07.720
about persisting data.

53:12.760 --> 53:16.720
Keep it intact, then you keep it separate and then your entire

53:16.720 --> 53:19.880
stack design can be implemented simply just like I showed you.

53:23.880 --> 53:27.200
That's the idea behind using Docker and Docker compose. So

53:27.200 --> 53:30.000
let's go to that Docker compose illustration.

53:30.000 --> 53:31.840
That's the file that we were using.

53:34.560 --> 53:38.400
And simply it had, you know, a bunch of containers like you saw

53:38.400 --> 53:41.840
proxy container database container WordPress container

53:41.840 --> 53:46.400
and what else we had. We had a volume and we had a network.

53:47.120 --> 53:49.360
So storage location network connection.

53:50.840 --> 53:54.120
Three containers up and running whatever you want as long as

53:54.120 --> 53:55.560
you're protecting your volumes.

53:55.560 --> 54:00.240
Volumes. Separately, in an ideal situation, you want to keep

54:00.240 --> 54:04.320
this on a machine away from your main machine like completely

54:04.320 --> 54:09.000
outside. For example, let me show you where exactly you could

54:09.000 --> 54:13.200
put it. You would put it something like let's go take

54:13.200 --> 54:18.320
some example of a cloud. So here we go. Which cloud do we have

54:18.320 --> 54:19.400
here right now logged in?

54:20.200 --> 54:23.800
console.awl.amazon. I think I have Amazon account connected

54:23.800 --> 54:29.080
logged in right now. So what I would like to show you is that

54:29.080 --> 54:32.200
you ask the cloud company like this, for example.

54:33.040 --> 54:33.920
To give you.

54:34.560 --> 54:37.640
An SSD at disk like actual disk.

54:38.960 --> 54:43.880
Or virtual disk who cares, but a disk that you can get from.

54:46.360 --> 54:50.640
And these guys are obnoxiously big and so you get lost. That's

54:50.640 --> 54:54.920
where you go easy to and then you find elastic block storage

54:54.920 --> 54:56.840
somewhere here. Where's that?

54:58.080 --> 54:59.160
Elastic block storage.

55:02.240 --> 55:07.280
Hold on, let me find it for you. The best way to find it is

55:07.280 --> 55:12.680
block storage. And that's how you find it. So block storage is

55:12.680 --> 55:14.600
in here easy to.

55:15.520 --> 55:16.400
Instance.

55:16.400 --> 55:19.080
Volumes, that's the block storage.

55:19.760 --> 55:24.840
So let's go see again in easy to somewhere you have to go look

55:24.840 --> 55:29.520
for a elastic block storage. You create a volume and use a general

55:29.520 --> 55:34.480
purpose SSD and create a size and then you pay for it and then

55:34.480 --> 55:38.760
you use this SSD and connect it to the machine that you will

55:38.760 --> 55:42.360
have so that the disk is separate from the machine. You

55:42.360 --> 55:43.600
can kill the machine.

55:43.600 --> 55:48.080
And then let it die and create a new machine and have it run

55:48.080 --> 55:51.560
Docker and Docker Compose and everything goes brings up as

55:51.560 --> 55:55.720
long as you are. Keeping this volume, basically it's an SSD.

55:56.600 --> 55:59.360
That you know whatever size you want and you will pay for it.

55:59.960 --> 56:03.680
And mount this disk onto a machine you will obtain from

56:03.680 --> 56:07.680
somewhere. And you are in good business, so that's the idea of

56:07.680 --> 56:10.880
separation of storage away from your rest of the actual

56:10.880 --> 56:14.120
functional things. Like you know containers that you run and

56:14.120 --> 56:16.200
some network you have. You can bring this up.

56:16.760 --> 56:20.920
Or kill it all and bring it up again. Just fine. No problems as

56:20.920 --> 56:24.160
long as data is separately stored somewhere else outside of

56:24.160 --> 56:28.320
the machine. That's a machine you will get from from easy to

56:28.320 --> 56:32.000
or some other cloud will have similar setups. All these clouds

56:32.000 --> 56:35.640
are basically the same. You have they have different names that

56:35.640 --> 56:39.000
sound fancy and buzzwords. I call them bullshit bingo.

56:39.000 --> 56:43.680
And yes, people people know that that I don't like buzzwords. I

56:43.680 --> 56:48.240
don't use them. But basically go straight to the bottom line as

56:48.240 --> 56:52.280
to understand what these things are. It's a SSD. This cloud

56:52.280 --> 56:55.840
calls it Wall Elastic Block Storage and Google Cloud calls

56:55.840 --> 57:00.200
it. God knows what, but doesn't even matter. It's an SSD. That's

57:00.200 --> 57:04.760
how you should think. I need a computer, so this cloud calls it

57:04.760 --> 57:06.360
an instance and.

57:06.360 --> 57:10.360
Some of the clouds will call it droplet. Some other some some

57:10.360 --> 57:14.360
other will come with some other fancy name. Who cares? It's a

57:14.360 --> 57:16.360
computer and this is an SSD.

57:17.040 --> 57:21.360
Just keep it simple and don't get what I call you know you

57:21.360 --> 57:24.600
know frustrated by use of buzzwords because in our

57:24.600 --> 57:28.600
industry. These marketing people have great. In fact, the work

57:28.600 --> 57:33.360
the word cloud you know you know the word cloud that itself is a

57:33.360 --> 57:37.160
buzzword. Cloud is nothing but somebody else as computers and

57:37.160 --> 57:41.120
a form of computers. So Bezos Jeff Bezos comes along and gives

57:41.120 --> 57:44.160
you lots of machines and lots of things you know.

57:45.120 --> 57:48.600
That's pretty much what a cloud is. So we'll talk more about

57:48.600 --> 57:51.720
cloud in a separate discussion, but cloud is a marketing

57:51.720 --> 57:55.520
buzzword and the whole thing below that is full of nonsense

57:55.520 --> 57:58.960
buzzwords like absolutely utter useless. Just only thing it does

57:58.960 --> 58:01.000
is confuses everybody.

58:01.000 --> 58:04.600
And makes other people think that you are smart, but you're

58:04.600 --> 58:09.600
not. And if you know the detail, then I can take the you can use

58:09.600 --> 58:13.240
the buzzword. Fine, that's OK, but you need to know that this

58:13.240 --> 58:17.240
is a disk and that's a computer that runs Linux and it runs

58:17.240 --> 58:20.400
containers and I can create whatever I want using a simple

58:20.400 --> 58:21.760
structure like this.

58:22.960 --> 58:26.600
That's what matters. Nothing else does as long as you're able

58:26.600 --> 58:31.200
to get the things to run. Bingo, that's what you want.

58:31.200 --> 58:32.800
So that's the takeaway.

58:33.760 --> 58:37.600
Now the third exercise I can go on and on for like.

58:38.200 --> 58:41.680
Hours and hours I I I don't know when to stop, so let me

58:41.680 --> 58:43.480
just take a look at the timing.

58:43.480 --> 58:47.600
It is one hour, so maybe we can leave something for you to do

58:47.600 --> 58:50.200
it on your own. So here's the step number three.

58:50.200 --> 58:55.480
This three has a Docker Compose YAML file.

58:55.480 --> 59:00.040
With a lot of things, lots of lots of things in here. I'll

59:00.040 --> 59:03.800
just quickly describe it to you and I'll let you run it

59:03.800 --> 59:07.520
yourself. So the description goes like this. See there's a

59:07.520 --> 59:08.880
reverse proxy here.

59:10.280 --> 59:14.720
Reverse proxy. Hold on something went wrong. Why is it drawing

59:14.720 --> 59:19.120
weird things? OK, there we go. So there's a weird. There's a

59:19.120 --> 59:23.400
reverse proxy. There is also a a let's encrypt companion to get

59:23.400 --> 59:24.760
an SSL certificate.

59:27.080 --> 59:31.800
So this needs to run on a on a real cloud setup with a public

59:31.800 --> 59:36.680
IP, not in my in my local IMAT, which doesn't get a public IP.

59:36.680 --> 59:40.640
So 192 address. Which is a local area network address.

59:44.520 --> 59:48.720
And not a public address. This is not going to get me an SSL

59:48.720 --> 59:53.000
certificate. I have the ability to run it in a public IP, but

59:53.000 --> 59:57.120
it will confuse everybody else. I don't want to run it here. This

59:57.120 --> 01:00:00.040
exercise should be run in a actual cloud outside.

01:00:00.040 --> 01:00:04.440
I have a reverse proxy already running in my in my in my setup,

01:00:04.440 --> 01:00:08.600
so I don't want to go there right now. It's too complicated

01:00:08.600 --> 01:00:12.880
for us to even get there unless you understand basics. So you

01:00:12.880 --> 01:00:16.760
need to get this SSL certificate working for which you need to

01:00:16.760 --> 01:00:19.360
run the cloud with a public IP, not the LAN IP.

01:00:20.120 --> 01:00:23.120
And then get it will get you a free certificate.

01:00:24.280 --> 01:00:28.200
From let's encrypt, which is a nonprofit entity.

01:00:28.960 --> 01:00:32.960
That's the thing that will get you a certificate. It will run

01:00:32.960 --> 01:00:36.480
WordPress. It will run another WordPress and probably there are

01:00:36.480 --> 01:00:40.640
more things down and and we'll see all those things. Let me

01:00:40.640 --> 01:00:43.320
erase my ink. It goes away.

01:00:43.320 --> 01:00:46.840
And then I'll scroll so we have one WordPress, another WordPress,

01:00:46.840 --> 01:00:49.680
then database from first WordPress database for second

01:00:49.680 --> 01:00:52.400
WordPress. We're running basically two WordPresses in two

01:00:52.400 --> 01:00:56.600
databases. And each of them is getting a unique name assigned

01:00:56.600 --> 01:01:01.000
here. You see that line number 38 WP dot cloud genius dot app is

01:01:01.000 --> 01:01:05.480
a name that I want to use for this virtual host and then for

01:01:05.480 --> 01:01:07.280
the second one I have this name.

01:01:07.280 --> 01:01:12.800
WP3 dot cloud genius dot app. So you need to have these domain

01:01:12.800 --> 01:01:16.960
names available to you. So if you have a domain name, go

01:01:16.960 --> 01:01:21.080
ahead, do this exercise. If you don't have a domain name, you

01:01:21.080 --> 01:01:23.800
should get one. If you cannot get one for some reason.

01:01:24.600 --> 01:01:27.680
You can still run another exercise which will help you

01:01:27.680 --> 01:01:28.800
understand details and that is.

01:01:30.240 --> 01:01:34.160
That is this exercise called other examples in in here. I

01:01:34.160 --> 01:01:38.320
think I have like way more examples. So there is a Drupal

01:01:38.320 --> 01:01:41.600
container. There's a red mine container. There is a Postgres

01:01:41.600 --> 01:01:44.400
database container. There's a red mine container. Another one.

01:01:44.400 --> 01:01:47.760
There's a database container here and there are more up on

01:01:47.760 --> 01:01:51.280
top. So the whole series of containers. All you can run

01:01:51.280 --> 01:01:52.800
behind one reverse proxy.

01:01:53.680 --> 01:01:57.840
And play with it is an exercise that I will maybe not do right

01:01:57.840 --> 01:02:01.120
now, but I let you experiment with this. So that's an

01:02:01.120 --> 01:02:05.200
exercise you want to be able to own your own. If you don't have

01:02:05.200 --> 01:02:07.040
a domain, we have a domain.

01:02:07.840 --> 01:02:11.760
Run the the the the example I mentioned here number three,

01:02:11.760 --> 01:02:15.360
which is a properly issued SSL certificate website. Is it? It's

01:02:15.360 --> 01:02:19.120
how you can actually run a proper WordPress site by the

01:02:19.120 --> 01:02:23.520
way. For production use. So with that, I think what I would

01:02:23.520 --> 01:02:24.720
like to do is.

01:02:25.960 --> 01:02:30.720
Is switch over to my video feed and ask you questions. You

01:02:30.720 --> 01:02:31.760
are welcome to ask.

01:02:32.400 --> 01:02:35.440
If you have any. And by the way, this is streaming live, so you

01:02:35.440 --> 01:02:37.840
don't have to disclose your names. This is also, you know,

01:02:37.840 --> 01:02:40.640
you don't even have to speak if you don't. I can stop the

01:02:40.640 --> 01:02:43.520
streaming and then you can ask a private one on one question if

01:02:43.520 --> 01:02:46.960
you like. It's up to you. So if you have a question on the live

01:02:46.960 --> 01:02:49.680
feed for everybody else to listen to, you can ask the

01:02:49.680 --> 01:02:53.440
question. If you want to just do on a private meeting in a in a

01:02:53.440 --> 01:02:55.920
teams meeting setup and I'll disable streaming and then you

01:02:55.920 --> 01:02:59.360
can ask a question. It's up to you. You tell me what you want

01:02:59.360 --> 01:03:02.560
to do. I can stop streaming if you like, so you feel

01:03:02.560 --> 01:03:03.520
comfortable. Either way, tell me.

01:03:04.080 --> 01:03:07.120
Otherwise, if you don't say anything, I will stop the stream

01:03:07.120 --> 01:03:10.800
and then let you ask questions in private. So here I go

01:03:10.800 --> 01:03:11.840
stopping my stream.

01:03:12.720 --> 01:03:16.320
And I want to thank you guys listening on the stream. I'll

01:03:16.320 --> 01:03:20.240
see you next time. We run this session every Tuesday 730 PM on

01:03:20.240 --> 01:03:23.440
streaming. If you want to participate, come online on our

01:03:23.440 --> 01:03:27.840
teams meeting. You can join. It is free to join. Go visit this

01:03:27.840 --> 01:03:30.080
website here called. What is it called?

01:03:30.640 --> 01:03:32.600
The cloud seminar with the website.

01:03:34.080 --> 01:03:37.280
Yeah, go visit this website, thecloudseminar.com and here

01:03:37.280 --> 01:03:39.280
you will find upcoming events.

01:03:40.080 --> 01:03:44.560
Right there. Every Tuesday 730 PM, every Wednesday 8 AM India

01:03:44.560 --> 01:03:49.120
time and that's the session you will see list of sessions and

01:03:49.120 --> 01:03:52.960
the people who are participating live right now will decide the

01:03:52.960 --> 01:03:56.800
future sessions and I will update this content and you will

01:03:56.800 --> 01:04:01.280
see a new event pop up and that's where you need to join.

01:04:01.280 --> 01:04:04.480
And once you get once you click through, you register, you get

01:04:04.480 --> 01:04:07.040
an email notification and all that. So that's how you can join

01:04:07.040 --> 01:04:11.040
on my teams meeting with that. I will now stop the stream

01:04:11.040 --> 01:04:14.640
live stream session by disconnecting and saying goodbye

01:04:14.640 --> 01:04:18.400
to the people on various social media channels. The recording

01:04:18.400 --> 01:04:21.360
becomes available on Spotify, by the way, just so you know

01:04:21.360 --> 01:04:25.440
Spotify. Most people think of it as an audio platform. It also

01:04:25.440 --> 01:04:29.760
supports video podcast. So any recordings from our sessions

01:04:29.760 --> 01:04:32.560
goes there. For example.

01:04:34.160 --> 01:04:35.440
Spotify.

01:04:36.960 --> 01:04:42.640
And log in. And there is the podcast. You can see this two

01:04:42.640 --> 01:04:45.360
recordings from the previous and the video pops up.

01:04:46.240 --> 01:04:48.480
This is where you can hide it. This is where you can bring it

01:04:48.480 --> 01:04:51.760
back up. That's the video. If you play something that pops up.

01:04:51.760 --> 01:04:55.280
It's a video capable platform these days. Many people don't

01:04:55.280 --> 01:04:57.280
know about it, so people complain that you know I cannot

01:04:57.280 --> 01:05:01.440
see a video. But yes, you can with that. I'm going to stop

01:05:01.440 --> 01:05:04.800
streaming by streaming guys. Bye bye. See you next time.

01:05:04.800 --> 01:05:06.640
Bye bye. Stopping the stream now.

01:05:11.600 --> 01:05:12.800
OK, the stream is stopped.

01:05:14.640 --> 01:05:16.960
The streaming audience can no longer view the meeting. You're

01:05:16.960 --> 01:05:21.120
welcome to ask questions without having it like showing

01:05:21.120 --> 01:05:21.760
up outside.

01:05:21.760 --> 01:05:23.760
And there you go, hi.

01:05:25.840 --> 01:05:30.000
Can you hear me? I cannot hear you. Yeah, I heard you. I heard

01:05:30.000 --> 01:05:34.720
you go ahead. How are you doing? Yeah, all good. Actually, I

01:05:34.720 --> 01:05:36.240
joined a little bit later.

01:05:37.280 --> 01:05:40.720
Nobody nobody. So that says always a pleasure to hear you

01:05:40.720 --> 01:05:45.280
live. The live sessions are thanks for the live session. OK,

01:05:45.280 --> 01:05:46.560
yeah, you're welcome. So that's.

01:05:46.560 --> 01:05:49.760
Yeah, go ahead, OK. Hi.

01:05:51.280 --> 01:05:53.760
Yes, yes, it was a good session.

01:05:54.560 --> 01:05:57.760
I don't have right now questions because I don't really join.

01:05:59.280 --> 01:06:00.480
So I don't know.

01:06:01.760 --> 01:06:04.480
That means I was super clear and easy to understand.

01:06:06.400 --> 01:06:11.840
And I was I was just asking like another question key like on

01:06:11.840 --> 01:06:13.600
the other side of the screen.

01:06:13.600 --> 01:06:18.800
Key like on the other platform it was available on in video

01:06:18.800 --> 01:06:22.480
format or in audio format. I just checked in the night.

01:06:22.480 --> 01:06:25.280
Spotify is video. Spotify is video. I was just showing you

01:06:25.280 --> 01:06:28.720
that. Let me show you again. Spotify is a video platform. So

01:06:28.720 --> 01:06:32.720
here you go Spotify and you play one of these episodes and

01:06:32.720 --> 01:06:35.680
you play and he starts playing.

01:06:35.680 --> 01:06:44.720
And so I play the video from the last session and here is

01:06:44.720 --> 01:06:46.400
the recording you see.

01:06:53.200 --> 01:06:54.960
Live production and for your custom.

01:06:55.760 --> 01:06:58.480
Right, this is a video site you saw you saw it.

01:06:59.520 --> 01:07:00.720
Like that the other.

01:07:00.720 --> 01:07:05.440
The other is also a video podcast, so Docker Fundamentals.

01:07:06.000 --> 01:07:07.280
I will play it now.

01:07:09.280 --> 01:07:13.760
So these are videos that you can see on.

01:07:15.760 --> 01:07:19.280
On Spotify, if you don't see a video, you know you should tell

01:07:19.280 --> 01:07:20.720
me because something's wrong.

01:07:22.880 --> 01:07:26.800
Yes, it's actually I I checked in the night and I saw it.

01:07:26.800 --> 01:07:29.600
I know, I know there was a problem.

01:07:30.640 --> 01:07:34.160
There was a problem with Spotify, so I contacted them and

01:07:34.160 --> 01:07:37.840
they fixed it. That's why I'm telling you that it is now

01:07:37.840 --> 01:07:40.880
working according to Spotify and according to what I see.

01:07:42.000 --> 01:07:45.120
In fact, I also tweeted about it. Let's go see where that

01:07:45.120 --> 01:07:49.920
tweet is. I tweeted with a picture.

01:07:49.920 --> 01:07:56.000
Of how it is working for me. So here I go. See that the

01:07:56.000 --> 01:07:56.400
picture.

01:07:58.000 --> 01:07:58.800
Yes, see.

01:08:00.640 --> 01:08:02.480
Video shows up in Spotify like that.

01:08:03.520 --> 01:08:04.320
There's a link.

01:08:06.080 --> 01:08:09.600
And there's a vote that people can only hear audio playback,

01:08:09.600 --> 01:08:12.400
so only one person voted like that, so I want I'm I'm

01:08:12.400 --> 01:08:14.400
listening for feedback. I'm listening for feedback.

01:08:14.400 --> 01:08:17.120
I'm listening for feedback. I'm listening for feedback.

01:08:17.120 --> 01:08:20.480
So I want I'm I'm listening for feedback as to what people

01:08:20.480 --> 01:08:22.320
are seeing, but Spotify says.

01:08:23.440 --> 01:08:25.680
It is video. I see it as video.

01:08:26.800 --> 01:08:31.200
If I open Spotify on the phone, let's see what happens.

01:08:31.200 --> 01:08:32.400
I think should be video.

01:08:33.280 --> 01:08:35.520
So Spotify app started.

01:08:37.200 --> 01:08:42.480
Spotify app started as you can see, and then I'll open up my.

01:08:43.680 --> 01:08:44.320
My.

01:08:44.320 --> 01:08:48.000
Video and I'll play it.

01:08:49.520 --> 01:08:52.240
Come on, go away. I call it hello.

01:08:54.080 --> 01:08:56.640
And update post.

01:08:57.680 --> 01:09:00.720
Yeah, it is. It is working. The video is showing on the

01:09:00.720 --> 01:09:01.440
Spotify app.

01:09:02.800 --> 01:09:04.320
So it is working as video.

01:09:05.120 --> 01:09:07.360
I know some people did have trouble last night.

01:09:07.360 --> 01:09:13.760
And they were seeing only audio, which is strange, but.

01:09:13.760 --> 01:09:15.280
But yeah.

01:09:17.280 --> 01:09:20.640
So any other questions anybody else?

01:09:27.440 --> 01:09:31.440
Oh, Prashant says he can see a video. Let's see. Prashant just

01:09:31.440 --> 01:09:32.480
tweeted apparently.

01:09:32.480 --> 01:09:37.680
Akshay says seven tweets.

01:09:37.680 --> 01:09:40.400
Prashant is in India and he says.

01:09:41.360 --> 01:09:44.880
You can see the tweet so you can see the video, yeah.

01:09:51.440 --> 01:09:55.360
Did he tweet or sent me a photo on a DM? Yeah, so he says the

01:09:55.360 --> 01:09:58.400
DM picture and so there is the video DM.

01:09:58.400 --> 01:10:02.240
Hey Prashant, you should tweet public and tell people that you

01:10:02.240 --> 01:10:03.520
are able to see the video.

01:10:06.800 --> 01:10:08.960
DM is awesome, but tweet.

01:10:12.160 --> 01:10:12.800
Beautiful.

01:10:15.600 --> 01:10:16.320
What else?

01:10:18.800 --> 01:10:22.320
Are these sessions useful to you guys? Do you find it any

01:10:22.320 --> 01:10:23.920
use? At all?

01:10:23.920 --> 01:10:30.720
Yes, of course.

01:10:30.720 --> 01:10:30.960
Yes.

01:10:38.160 --> 01:10:39.760
Did Akshay say something funny?

01:10:40.480 --> 01:10:41.840
Yes, sir, go ahead.

01:10:45.680 --> 01:10:50.080
So Nilesh, I thought that the session would talk about Docker

01:10:50.080 --> 01:10:53.840
files. Well, what you showed was more into a Docker Compose.

01:10:53.840 --> 01:10:56.720
Involving Docker images, but it did not.

01:10:56.720 --> 01:10:58.000
It did not talk about anything.

01:10:59.280 --> 01:11:03.120
I know I know I Docker files. Yes, true, you're right. I began

01:11:03.120 --> 01:11:05.440
saying Docker files, but then I saw that I haven't finished

01:11:05.440 --> 01:11:08.160
that portion, so I jumped over to that to finish it and then

01:11:08.160 --> 01:11:11.040
next time we do Docker files and how to create them and all

01:11:11.040 --> 01:11:14.160
that detail. We had to do that and it's there in the exercise,

01:11:14.160 --> 01:11:14.400
but.

01:11:15.360 --> 01:11:18.960
In one hour, you can only fit so much and I don't want to jump

01:11:18.960 --> 01:11:22.160
to a next topic before covering the previous topics, and that's

01:11:22.160 --> 01:11:24.880
the reason why I began thinking about Docker files, but then I

01:11:24.880 --> 01:11:28.640
saw that you know what? Bang, I haven't done it, so I'll do

01:11:28.640 --> 01:11:31.680
it. Will it be discussed next week?

01:11:32.480 --> 01:11:35.440
Yes. Yes, I'll be there.

01:11:36.240 --> 01:11:37.760
Thank you, I'll see you there.

01:11:40.720 --> 01:11:43.280
Yep, otherwise it's a good good session, Nilesh.

01:11:44.320 --> 01:11:48.480
I'm glad you're liking it and glad you can make use of it.

01:11:48.480 --> 01:11:51.120
There's another chat here. What are people saying?

01:11:53.280 --> 01:11:54.000
Chat.

01:11:55.040 --> 01:11:58.720
So that goes without saying, though I need to do a lot of

01:11:58.720 --> 01:12:01.440
work with every Docker. The live sessions are useful,

01:12:01.440 --> 01:12:02.080
nevertheless.

01:12:04.800 --> 01:12:05.520
Suraj.

01:12:07.920 --> 01:12:10.880
It's not as microphone not working apparently, so he's

01:12:10.880 --> 01:12:14.080
typing and chatting, which is fine. No, no, no, no, no, no,

01:12:14.080 --> 01:12:16.160
no, no, no, no, no, no, no, no, no, no, no, no, no, no, no, no,

01:12:16.160 --> 01:12:18.560
no, no, no, no, no, no, no sessions are terrible.

01:12:23.680 --> 01:12:26.720
Sessions are terrible.

01:12:26.720 --> 01:12:27.840
I'm kidding.

01:12:29.840 --> 01:12:33.280
I know you. You. You. I think I've never told anybody

01:12:33.280 --> 01:12:36.800
else other than you, but your laughter sounds like Elon Musk.

01:12:38.240 --> 01:12:38.640
Really?

01:12:41.120 --> 01:12:44.480
Well, I don't have. I don't have a South African accent.

01:12:44.480 --> 01:12:52.240
It's tough to do. You don't? Yeah. Although the South African accent does sound a little bit

01:12:52.240 --> 01:13:03.040
British. British? Not Irish? No, not at all. Of course I can speak with an Irish accent. Oh wait, I can't.

01:13:03.040 --> 01:13:17.600
It's nice. This guy's hilarious. Well thank you very much. What's funny is that on St. Patrick's Day I

01:13:17.600 --> 01:13:24.240
actually spoke with an Irish accent. I felt, I felt, you know, I just wanted to, you know, throw

01:13:24.880 --> 01:13:30.880
laughter, well not throw laughter out, but to make the folks laugh so much because we're always,

01:13:30.880 --> 01:13:35.360
you know, you know, busy or we're stressed. I just wanted to make them, you know, feel a bit loose.

01:13:36.080 --> 01:13:42.480
Yes, yes, yes, yes. So by the way, I just want people to know that Namit is a Mridang player

01:13:44.240 --> 01:13:51.520
and he plays, he plays Mridang in our temple here in, in where we live. So he's, he's almost a

01:13:51.520 --> 01:14:03.600
neighbor, almost. He works at Boeing Company and plays nice Mridang and sometimes you will see him

01:14:03.600 --> 01:14:08.960
playing Mridang on live stream from the temple. Yeah, you won't see my face but you can hear me

01:14:08.960 --> 01:14:19.600
play it from time to time, not every day. Cool, cool, cool. So let me go have dinner and I'll let

01:14:19.600 --> 01:14:23.440
you guys enjoy your day and evenings wherever you live.


Show more...
2 years ago

The Cloud Seminar
Docker Compose #0002

I used this git repo in this session.

GitHub - beacloudgenius/dockerfiles: multi container architecture
multi container architecture. Contribute to beacloudgenius/dockerfiles development by creating an account on GitHub.
GitHubbeacloudgenius

AI Generated Transcript

So hey guys, we are running this live teams meeting and it's also being streamed right now.
Let's go test whether the stream is successfully working. I think it is and so let's go test it out
on LinkedIn. Is my stream live? I think I got a notification on yeah it is live.
So that's the live stream. And let's see on Twitter. We should be live on Twitter as well.
Here we go. So notifications on my profile. We should be seeing a live stream of us talking.
Like that's where we should show up. So there it is. And so this is the live stream happening
on Twitter as well. And so I'm not interested in seeing the live stream, but it's very
interesting our meeting. So that's what we're doing. So let's recap. What are we discussing?
Docker. I have this Macintosh in my hand. And I want to connect it to a Linux machine.
That address of that machine is 192.168.1.10. It is an iMac.
And it is in the same room that I have, so I can locally SSH into it.
And this machine has Docker installed and EOCKER. That's where I will be experimenting.
So for this experimentation today, we will discuss Docker and Docker Compose.
And I have a Git repository already prepared. I will give you a link to that so you can actually
use it. And I will also clone that Git repository locally onto this machine.
And using it will be a good demonstration of what Docker Compose is and how you can put
things together to construct a variety of applications and run them in Docker containers
plurality, like more than one. So multiple containers coming together to form what is
needed as an architecture for your given application. That's the design point.
So we are looking about talking about a Git repository. I have that repository with me.
I will open up a browser and show you that repository and also tweet it out so you can
access it. So here I go open my browser and go to GitHub. And
here in GitHub, I will have to go look for it. So the repository is in my company account
where the thing is called Docker files. I think that's the
repository. No? Yes. Yeah, that's the name. So I'm going to go there, Docker files.
And this is a public open repository so anybody on the planet can access it. So there it is.
That's the repository. I'm going to grab that code link, copy it, and then use that link to clone the
whole thing locally into this iMac, the machine that is running Ubuntu. By the way, this iMac
is not a Mac. It's just the machine is Mac. It used to be Mac like a few years ago.
Now it is running Ubuntu. So that is where I want to bring this Git repository and put it right there
on this box. So let's go there. Terminal. And right now this is the Macintosh.
You can see it. Now I'm going to SSH into the machine, the iMac. I SSH. Now you see that this
is an Ubuntu machine. And there I already have this thing Docker files cloned. So I don't want
to use it. What I want to do is remove that folder called Docker files, which I cloned yesterday.
So I'm going to remove it. And so apparently permission denied because I was like running
something running there. So I'm going to go clean it out completely. So sudo rm-rf Docker files. And
it should die. It died. Now nothing is there on that folder because the folder itself is cleaned
out. So what I want to do next is make it bigger and then git clone. So it comes down. The folder
containing the entire repo is now available to me in this location, Docker files. And that's the
folder. Here you can see inspect the contents of the folder. So there are exercises here that I
will be doing live that will explain what is Docker Compose and how we can put things together to run
a multiple container application structure. And we can use buzzwords about end tier architecture
and all the buzzword bingo. I don't do buzzwords. Absolutely no buzzwords in my talk. I talk simple,
plain, but get things to work. That's the idea. So this is the folder we are looking at.
And I want to go to that folder so that you can see it in a visual fashion for which I will be using
a visual editor. So here it is, VS code. Actually, this is not VS code. So what Microsoft does
is they snoop and look at what your activities are and they monitor you.
So that is a bad behavior, so I don't like that. So what I do is, actually what many people do
is they have forked this thing called VS code and they have created a thing called VS code M.
So I'll tell you about VS code M. Here it is VS code M. This is actually the open source clean
version of VS code. Open source libre, like open source as in no monitoring, no Microsoft nonsense,
clean, genuine, open software, which has no relationship with Microsoft. That's what VS code
M is. It's basically VS code. VS code is open source by Microsoft, but many people have
contributed. Many people have modified VS code to create this thing called VS code M, and it is
a very good product. Why? Because Microsoft would not know what we are doing. If you open VS code,
they will know certain things. I don't want anybody to know what I'm doing, unless I'm
disclosing it. So privacy is important to everybody, including you and me. So we are using VS code M.
So not VS code, code M. Slightly different, very, very similar. Everything works just like that,
but Microsoft does not come in the way. Nobody comes in your way. That's the underlying concept
of freedom. So when I talk about free, I actually think of it as a free environment.
Free means freedom, not zero dollars. That's not what I mean. Free means freedom, and that's what
this thing gives me, open source. So VS code M is what I am running, and there I am going to connect
to that machine, which I told you about like that, and then hook it up. So this is a VS code M
connection, remote connection to that computer that I told you about, and there it is. So you can now
look for that folder that I cloned, and it is, what was it, Docker files, something there.
So that's the folder. If you can see it bigger, a little bit better. I think that's better. So here's
the folder called Docker files, and in there you can also, by the way, locally clone. If you have
a computer with you, you can clone it, and you can see it. And what I will do now is in that folder,
by the way, this is the same machine that I was talking about. You name iMac. The same iMac is
what contains that folder called Docker files. Same thing. That contains the same exact thing.
We are now remotely connected through VS code M into the machine, and we have the files here.
So the reason I do it this way is so I can actually look at the step-by-step instructions
and show it to you, and then follow along so you can understand what's going on.
And this is basically a hands-on exercise. Everything I try to do is hands-on, and it's
written down in some Git repo, and we'll actually execute instructions. That's the idea. So having
said that, let's do it. So step-by-step. Here is this part one, like the first step. The first step,
in that first step, what we have, let's get rid of these browsers. So browser window closed.
Don't want this. I think you need to tweet this out. I'm going to tweet this link.
Tweet that with the reply, I am using this repo today. And tweet. So people will know.
And so people who are looking, they might see it.
Okay. And next, what I want to do is run these steps that we have. So in our step-by-step folder,
we have this file called one. That one, file number one, that file. It has written instructions
that only I can interpret and understand because it's not very nicely written. But I know what I
wrote, so I can explain it to you. The first thing, A and B are equivalent. What I mean by that
is this step A, that I highlighted in blue color, is very, very similar, actually identical,
equivalent to the step B here. It's basically the same thing. What do I mean to tell you
is that this is execution of docker-compose on the command line. Whereas the B section,
Nilesh, here B, these two commands, one at a time. So one and two. So two separate commands
versus this command. Nilesh, can you hear me for a second?
Yes. Yes, Sanjay. Hi. How are you? Yeah. Yeah. Good. Good. Hey, Nilesh, can you,
I think, first of all, I'm getting your screen cut off in the left-hand side and the right-hand
side, all the participants are getting displayed. So half of the thing is basically that participant
the screen is taking. So I know that's a problem with teams. So I don't know how to fix that
participation videos. You have shut off your videos, which is nice. No, no, no, no. But you
still see the circles, right? You still see circles. No, you just, I think, show participant
or if you remove show participant on your side, then those will go away. Only your screen will be.
I understand. I just don't know where the button is. Can you tell me?
Oh, no, I'm a participant. So I get that. I think it's better now. I think whatever I did,
but half of the screen is taken by those participants and half of the screen is
only displayed. So I made you a presenter and can you modify it to suit what you need?
Okay. Oh, you made me a presenter. Yeah, I made you a presenter. So see if you can modify. I just
don't know how to hide other people's circles, right? That's what I see coming in the way on
the right side. Is that what you tell me? Yeah, but that's okay. I think my screen is 32 inch,
so still I can see what you're doing on the left hand side now. I think I noticed that this issue
that I don't know how to fix is with teams and the teams, what it does is like gives me circles on
the one portion of the screen. Like, you know, about 20% of screen is wasted, which is not a
great idea, but I will look at and ask somebody in Microsoft as to how to fix it, but I just don't
know right now. Yeah, go on. Basically, I have a big screen, so half of the screen is going with
that. That's of no use, but that's okay. Go ahead. Sorry, I break your. No worries. So let's see if
I can remove you from presentation and then see if I can keep sharing and making myself full screen.
Let's see if I can highlight myself as a full screen person like person with view. So view,
I want to get full screen. No, that's not what I want. So view, I want to get.
Gallery at top maybe maybe that fixed. No, did it improve improve something?
I don't see what you see. That's the challenge. So tell me if it is improvement.
Tell me if it is not good. Tell me that too.
I think nothing is happening on on your side, but things are happening on my side. I don't know how
to fix that issue that you brought. I will take it away. Nilesh, what I did. Sorry, this is just
small thing. I did a large gallery preview and everything got fixed. Now everything is in middle
what you're showing and participant went down somewhere. I see. So the way to resolve for
everybody else will be what again Sanjay? Yeah, so you that press on that three dots that is
horizontal three dots and there is a large gallery preview. Just large gallery preview. So select that
a large gallery preview. OK, got it. So everybody please select large gallery preview in your view
after you click the dot dot dot in the teams meeting. That should resolve most of the problems.
Yes, it's done now. OK, nice. So now I will continue. What I was talking about is that
these ways of running certain things, right? So let's go see what I did here in terms of
this is the a scenario. Right and then the B scenario. So this is a this is B. So let's go
see what then what I am actually meaning by these two ways of executing the same idea. So let's go.
It is this ink. And then. Execute one of these things at a time. So we have this command called
Docker compose and then uses a file here called dash F and then I'm looking at line number five
in the screen here. Line number five, this line and Docker compose uses this file reference here
called one. Docker compose J Wilder yaml. That's the file name that file is somewhere here. I think.
One of I think that's the file I'll cross check and then you bring that stack up. So Docker compose
will bring whatever is defined in this file will bring it up and run it in demon mode.
That's the idea behind this command. So we will check whether this file that we are referencing
is actually this file here and will examine that file itself and read it and then execute that
command to see what actually happens. So let's cross check whether it is the same file. Yes,
it is. So so this file is what we are executing in this section and we're bringing the stack up,
putting in a demon mode and Docker compose will actually inspect this file to do what it's supposed
to be doing. So let's go read that file ourselves and then let's see and understand what that file
actually contains. So here we go. Go open that file that I have and inspect. So let's go see what
is inside here. Inside we have this file and there are two services defined. One of them
is this portion. By the way, if you're reading this file for the first time in your life,
I should warn you that this file is a YAML file and it is very very finicky in terms of indentation.
Indentation. It is like Python indentation. If you have the indentation wrong,
like how many spaces, how many tabs before every line, then the whole thing breaks and nothing
works and nothing works. So be super careful with your typing and especially indentation,
which is whatever you have before this I or before the W. So here this side,
how many spaces you have, you have to literally count every space or every tab that you have put
and it has to be properly indented for YAML to actually work. If you now look at this YAML again,
you will see that this indentation or indented block is one service and this is another service.
There are two services defined and we will, when we execute this docker compose, it will bring up
two docker containers. One running this, another running this. Let's go see what those things are
and let's begin with actually running them and see if we can actually understand them in the
context of a runtime. So actually execute these things. Let's go run it. So what do I want to run?
Step number one, line number five and there I will execute the step-by-step instructions
just like that. Copy it and it says docker compose not found. So this is a change that recently has
happened in docker where early on docker compose used to be a separate piece of software. Now docker
compose comes with this thing called docker. What do I mean by that? What I mean to tell you
is earlier the command was like line number four. Now the command is like this
because docker compose is now a part of docker. So you don't need this extra piece of software
called docker compose. It used to be a separate software early on. Like this was the software.
You needed it separately installed but nowadays docker comes with compose and it is structured
like this. So what I have in my git repository is the older way of running docker compose whereas
I need to modify and remove the dash symbol. That's all I need to do to make it work. So let's do that.
So that's the new docker compose by the way which I have to modify this file. So I'll modify this
file everywhere. Docker compose everywhere you see. Docker dash compose. Make it docker compose.
It's two words. So I will now copy that line. I am line number five again.
Oops and paste it and that should bring up two new containers and it's pulling them right now.
You can see it's being pulled and those two containers are starting and something happened
and something failed and I'll tell you what failed and how do you bypass that and all that.
I'll discuss that. So let's go see what failed. So here's the failure and this failure is expected.
So nothing you know abnormal about it. It says bind for port number eight zero failed because
it's already allocated. I am using a bunch of things in this machine already are using that port.
So it cannot be allocated to another application. This current application that I'm dealing with
right now that I just started or attempted to start wants to get the port number eight zero
but is occupied by certain other things. So what do I do? But I sidestep. How do I sidestep? By using
some other unallocated port like I'm going to modify line number seven just like that.
Yeah I just inserted some other port number so that this particular container will run on that
port number eight seven six zero randomly chosen number and I think it is not allocated. Eight seven
six zero is not taken I think but let's see what is taken in my machine here. Docker if I look at
docker ps-a you will see a ton of processes like here all these guys. Lots of things are running on
that machine called the one I'm connected to the iMac and bunch of services are running and at
least one of them is taken over this thing called called port number eight zero and I don't want to
you know basically like this this new app that I'm trying to invoke here cannot cannot get that port.
So I modified my port request like like I did like I showed you I'll show you again
like number seven I modified the port that I wanted it was initially eight zero but I made it
two eight six eight seven six zero that's the change I made and then I can instantiate this
stack one more time and you will see that it is running and it started. So let us see what is
running and you will see that you know top level object must be mapping.
I think these two are running so let's go let's go test them. How do you test? We have to go read
that docker compose file one more time and what are we looking at is that we have to go let me
explain this thing to you a little bit. So what this container does is it it maps itself on port
number eight seven six zero on the iMac and then that is mapped to the port number 80 on this
container called nginx proxy and this proxy in turn will look at the other container running here
called whoami. Whoami is a different container running this image whereas this nginx proxy was
a container running the json builder nginx proxy image so it's a separate container this container
is looking at this container and actually showing you whatever this thing is so there is some result
some output from this container I want to see that and so this proxy is actually looking at the
result and showing it to you on that port that's what the structure of this docker compose is it's
a very simple example let's go inspect whether we can actually see what we are talking about right so
I will now attempt to open port number eight seven six zero on the iMac let's see what happens when
I open browser and open the iMac and then port number eight seven six zero and let's see what
pops up this service temporarily unavailable this guy eight seven six zero is not responding
properly but it is showing you nginx that means this thing is actually running the right set of
uh uh service that we expected to run this is running nginx and nginx proxy so this thing is
actually correctly showing you that it is running nginx now the other part of issue that we have
is I want to be able to see the whoami application like this this application I want to be able to see
and that proxy should connect and show me what this guy is showing you and that is what is not
visible to us so let me explain and elaborate what is going on and how do we see what this whoami
is showing you and so that we have to go back to this file and read the instructions of that file
to understand what are we actually dealing with so let's go back to here and how do you test it
when I try to open that browser it did not show you any result that you expected to see but showed
you that there is something unavailable although it shows you it is being given to you by nginx
which is the nginx proxy running by the way it doesn't show you our whoami output
whoami output is not visible to us on the browser window but let's go follow the test instructions
so you will see why it is not visible and how you can make it work so that this very simple
subtleties are involved here to understand that's why you had to go back to the write up and and see
how to test it so that this test step in line number nine by the way you have this repository
with you on an open public github repo and now you have a link on the tweet so you can see it
now let's go back to the terminal command line and follow the test instruction line number nine
and see what actually shows up I did not copy properly so let me copy it properly here I go
and then I will expand the screen and test it like that now I'll describe this test instruction
to you first let us execute and see what I what it does it says move permanently and if you if you
go to move permanently that is let's go let's go curl this thing with a dash i option so
to see the headers and it is going to HTTPS by the way so it has redirected to I think I think
there is a change in nginx proxy created by json builder which is what is forcing you to use HTTPS
and its new location happens to be this so it is not going to show you on localhost because
nginx is forcing you to go to that domain that is specified in the in the docker compose file so
let's go read the docker compose file one more time and here it is you will see here that I am
let me describe the docker compose one more time before we actually go further investigate and test
and get it to work so here this this file here let's go investigate that piece so here in that
file I have defined that this who am i container will be using a host name foo.bar.com and that is
what is being picked up by nginx proxy as the name this container should be using so if you go
directly visit the ip address where this container is running it will show you unavailable that's what
you saw in the firefox browser when we try to visit this through curl command it is telling you
that nginx proxy has modified and this thing is going to be forcefully require you to use HTTPS
and not just HTTP if you now go back to our curl command it is forcing us to sorry it is we are
using we are using HTTP command not HTTPS you see a direct reference to localhost no reference to
foo.bar.com so what I need to be able to do in order for us to see this is for the DNS to work
now for some of you DNS may be a new thing but I'll illustrate a quick simple way to work around
for DNS to work properly on the machine that I don't have a control over this bar.com domain
I don't own it but I can bypass that by using a file called etc hosts so let's go modify that
etc hosts file and insert this new domain entry on the etc hosts so if this is complicated ask me
to stop and explain I will explain if you have done this kind of thing before
you know tell me to continue along so what I'm doing is modifying my host file
and in that file I will add on a new entry called foo.bar.com and this goes to localhost
sorry the way you write it is
like that that's how you describe that my domain foo.bar.com belongs locally to this machine
and then if you curl the same way except this time it will be HTTPS we'll get a certificate
failure error because we don't have a proper certificate that is expected
see certificate problem so what I will now do is allow each of these to work
in a fully configured proper certificate example which is also probably in this same exercise set
or maybe we'll do a certificate related thing in another session you will not run into certificate
problems like you are running into right now because we don't have a properly signed
certificate we are issuing a self-signed certificate you have to bypass it so how do
you bypass a self-signed certificate you have to bypass it so how do you bypass a self-signed
certificate you have to bypass it so how do you bypass a self-signed certificate you have to
provide some insecure flag I think let me just quickly check how do you pass a insecure flag
curl insecure how do you specify that how do you ignore the way the command is I think that
that's insecure that's it so that's the command we transmit in our section and this should give you a
interesting
still not showing you the right I'm still seeing a permanent redirect issue which is
something that I I don't know how to explain this right now and we also check our time
as to see how much time we have elapsed we already have about 30 minutes passed so let me show you a
slightly more interesting example instead of this curling and command line thing a slightly more
visual example which is also in the same set this can be daunting for people who are not used to
command line and curl and secure certificates and all that so let me let me jump to a simpler example
which may be easier for us to comprehend what we are dealing with in a slightly easier fashion so
what I'm going to do is skip the step-by-step I'll come back to this in another session I want to
jump to a simpler example of a docker composed and this example is an empty file all these things
that you see here are basically comments so you can ignore the comments by leaving them alone
and what I want to do is grab this example copy it from here from this file and put that in the
docker-compose.yml file like that that's it so what did I do I copied from this example called
three tier which is there are three tiers here one two and three three tiers of architecture
and put all this file from from this file I copied all the content put that in this main file called
docker-compose and I will a little bit edit this file because there are some changes that we need
to make like we did before so before I jump into the actual action I want to make sure that I
in this in the step number one here we have the docker-compose I want to bring that down
one dash docker-compose.jwilder.yml and I want to bring it down so those two containers I was
running I removed all them all of them and then I will come out of this step-by-step folder and now
I have here what I did do is I copied the content from the docker-compose.yml file and then I
step folder and now I have here what I did do is I copied the content from this three tier example
file and I put that into this file this was empty to begin with by the way this file was empty as
you saw here it was like this before and I took content from the three tier file and put that in
here and what I want to do here now is the same port collision problem I want to bypass it I'll
say eight seven six zero some port modification I did line number 26 so that allows us to bypass
the port collision and I want to see if we can bring this entire stack of three containers up
and running for us to get some gratification of something worked finally that's what I want to
get to like something that you can actually play with so I will attempt to execute this
get it to run and then we'll describe it as to what that means and how do we actually use
this thing in real life so that's what I will be doing now I will close this file from here
and get to the terminal and then say docker compose up and see what happens and I think
something happened so let's go see what happened and whether it works so I will open my browser
and there I will go to that same machine and go to the port number eight seven six zero
and see what shows up and there we go we have something working finally so this is a ready-made
example so I'll need to dissect it what what this thing is by the way it is a wordpress application
which contains three different containers for it to work properly what are those containers
let's go see them here in our three tier example which we took from here and copied that into this
file the docker compose yaml file which is how the instructions are laid out that's how I wrote it
so what do we have here we have this instruction set copy the yaml snippet from the example files
and paste them into this file and then bring up the stack by typing docker without the dash
so just these are older instructions so remove the dash the newer docker compose does not want
the dash so you just don't have it and say docker compose upd and that will bring up this stack with
three services let's go see what those three services are the first service is this
very simple and I'll describe that the second service is this
by the way this is a trivial example don't put this in production don't run your website
containing wordpress using this instruction set it's not a good idea but it's good for
understanding conceptual understanding of what this thing is so that's the reason I built it
this way this is not a production-ready design so don't run it in in large numbers it's not
designed so don't run it in in live production and for your customers in your wherever you are and
just come back to be saying hey something went wrong please don't do that so this is not for
production not good for production just a caution this is good for understanding that's the reason
why I structured it this way so not for production repeating that don't blame me having said this is
the second service running a database and the last one this is a service running wordpress
so what are these three things again this is the application this is the database and this is the
place to store data for the database so the connection is like this this guy the application
container will use the database container which is a mysql database i think no maria db so it's
the same basically the same thing so maria db is like mysql but better why better
because oracle doesn't come in the way so these big companies like oracle and all the big companies
like them misbehave basically they misbehave they want to you know put unnecessary license
conditions they want to extract money from you so the oracle got mysql and they put some god
knows what license on mysql and so people did not like that so what did they do just like vscodium
and vscode people took mysql modified the code it's open source and made maria db and removed
all the oracle things so all the bad things that you know bad as in legality and you know bunch of
other big company nonsense you remove all that and make good database called maria that's basically
compatible with mysql you know exactly even it even it uses the same syntax you can see it
but it is a different application called maria and it is i think better than mysql so that's what
i'm using here and it is a container and it requires a place to store the database data
and so what it does is get this storage location from here
and so this guy uses this container and this database software uses this place to store data
so let's go begin from the top down now so at the very top we have a service called data
which is building something called data and what that means is building a folder called data and
where is that folder right there
so we have to go inspect that data folder to understand what happens when you build this
container and run it when you say docker compose up what happens that's what i want to show you
so we have to go inspect this folder here which means i will erase my ink
and then use my mouse to go to the data folder and there you will see something called a docker
file right right there that's how it is it's a very simple docker file and what it does
it instantiates a new image called busy box so very very small tiny 1.2 megabyte image
very small linux image like really tiny and this busy box image is available on
where is that now firefox browser and let's go to docker hub busy box you will find that it is a
tiny tiny image called busy box it's it's a barely working linux just the minimum parts and this is
what we are using and the size here is like very small you can see 2.2 megabytes and that's it
and this is what we are using and the size here is like very small you can see 2.12 mb
1.85 mb so tiny tiny sizes really small size os so that's a good thing small is beautiful by the
way don't mistake small for for useless similarly you know people ask me this question about
lightweight docker is a lightweight container software don't confuse lightweight with heavy duty
lightweight doesn't mean light duty it can do heavy duty stuff it does they do heavy duty stuff
you know so don't confuse lightweight with you know it cannot do big things it can do anything
you want as long as you're following the instructions it will do it so what i'm
what i'm telling you is lightweight is a good thing heavy duty is a good thing don't confuse
lightweight and think it is light duty so this is a lightweight container image very good i love it
i love it busy box another one of my favorite is alpine alpine linux it's good for containers
and container design and applications using containers the alpine thing is like tiny tiny
how much 3.25 megabytes beautiful most of my actual running applications that you see
that i that i run are actually using alpine so very efficient small powerful lightweight
heavy duty you know container image you can create and you can basically so understand these things
like small is beautiful and that's what you need to keep track in mind just to give you a contrasting
example here it is where is that windows windows let's see windows what pops up so when i think
they i think they took away they took away microsoft took away windows from here
they are their own container registry where they store images but just to compare and contrast the
smallest size of a microsoft windows server image for a container is used to be i don't know currently
if i'm wrong five gigabytes yes five gigabytes imagine the waste of time and effort and storage
and bandwidth you will have when you want to pull down a docker image containing what
five gigabytes are you kidding me yes there are people from microsoft who will listen to my talk
that's too bad i'm going to expose that that's a fact compare with alpine you cannot compete
that's what open source is so just be remember that don't forget it small is good
small is good so let's go back here so this busy box is another small image that i will be using
i am using and i am exposing exposing this folder as a place for us to store data that that's it
that's the entire design of this particular data storage location so what the container does it
starts the container and exits and provides a volume a volume reference for other containers
to store data in this location so the database container that i have that i will talk about next
basically uses this volume to store the data in that location bar lib mysql that's the location
that mysql expects to store the data for the database also maria db same thing same exact
location that's the location so i will use the database container for maria db and let it read
and write from that location so that's the distinction of what i'm trying to differentiate
is the database from the place to store the data for the database so there are two different things
what this thing gives you is a place to store the data for the database and what this thing sorry
hold on where is that yeah what what this container does is actually runs the process maria db process
basically mysql like process where it will mount this folder inside the container
into that location in the macintosh somewhere here somewhere here i'll identify where that is
and store the configuration you did for this this for the mysql database to run properly
and mounts the data storage from this service so that's the database here database server
database server and this is the place to store database data that's a place storage
that's it there's nothing else in this particular piece of puzzle just a place to store data
this is the service that you're running that runs maria db and runs like a database server
so that's the second piece of the puzzle third piece of the puzzle is the actual meet the real
thing which is the application you want to run so this is uh i will describe this also let me just
pull up and refresh a couple of things here and so here we go there so now we now you see things
here there we go now so now what i'm talking about is this section here
which is by the way already in this location in the gtrepo that i i shared you a link with
and it is mounted inside the maria db container in that location what does it do it passes a custom
configuration to the maria db image so that when this container runs it takes my customized
configuration into the container and configures this database container correctly the way i want
and this allows me to have this other container third container to actually communicate successfully
with the database with proper permissions if you don't have permissions this guy will run this guy
will run but it will not be able to talk and that's what this custom configuration does
so let's go see and inspect that custom configuration here it is and all it does is basically allows
the bind address of 0000 so this is like specific to database implementations of maria db
like pi sql in a containerized setup by default maria db will listen on this port
and this ip address only internally to that container and that means the other containers
cannot connect to it so you want to modify the bind address
not this but this
and that is the only way that that's one of the ways there are some other ways also that this is
the one of the way the easiest way is to get some other container to connect to the database
container so that permission i needed to expand and which i did that using this custom configuration
like that and this configuration file gets mounted and it will be able to connect to the
configuration file gets mounted at the time of execution into the database container like this
line number 16 excuse me i need to mute
yeah so that's the configuration passing over to database container and oops i need to erase the
link i erase that and now we will talk about this the third container which is the volumes that we
will pass this location where we will store everything inside the wordpress the user generated
content of wordpress is stored in this location in the wordpress container this is your wordpress
image it is running on that custom port that i chose it is linking up to the database here
like that db goes to this db and links up to that thing called mysql it like mysql it's actually
maria db and mounts this folder here which is also here onto the container inside
and that is why you are able to actually make use of this wordpress image which in turn connects
to the mysql database maria db which in turn stores the data in this location so that's the
design now let us see whether we can actually put this application to use so i will go back to the
browser and see if you can connect to it so here's the browser and there i am looking at wordpress
interface so i i feel happy about that then i go continue and it says give me the database name
username password host and all that so i say let's go the database name i'll be using is whatever
the defaults are so i'll just use the default name wordpress and then by the way wordpress
is open source just so you know and so you can modify it if you like so here's the wordpress
database name i chose to be wordpress username i chose deliberately to be whatever the thing
gives to me by default what did i do that just to make it easy on me and you can actually choose
a custom username i deliberately chose username username username in line number 19 in the docker
compose file you can see it line 19 right there i deliberately chose the password called password
in line number 20 right there the database name i chose wordpress as wordpress in line number 21
why so that i don't have to type these things because that's what the software automatically
gives you so i'm lazy i think some of you know that so i don't have to like type in this thing
so i just chose it to be exactly what i wanted it to be so i don't have to do other stuff like
modifying this entry modifying that entry modifying i don't have to this is a bad idea
by the way if you're doing it in production so you don't want to use a username called username
and a password called password don't do that but i'm doing it because it takes my life easy
now this database host is not the same machine or the same container running the wordpress
this is not so you have to modify that this needs to be changed because the database actually running
the host is this one not the local host so we'll make change right here and this you can keep it
the way it is it's not that critical although you can modify if you want to have a different table
prefix in the mysql database you can change the prefix if you like excuse me so what do you think
i should put right there i should put this name db so that name goes in here so that my host name is
in here so that my host name is db so i will make that change like the db that's it and then i say
submit so it says all right sparky you made it through this part of the installation and so
wordpress now can communicate with the database and you are ready to run the installation so
we'll go click the button and we have wordpress running so now we'll set the title for this thing
called you know what i'm going to be doing we'll set the title the cloud seminar the username
is nilesh the password it suggests you very strong password which is a great idea
but you know what i'm not going to memorize all that nonsense so i'm going to erase that
and i'll say password is one two three don't do that in production it's a bad idea so i confirm
the weak user weak password one two three is my password my username is nilesh and my email address
is my company address which is this cloud genius and then i'm going to discourage search engines
from indexing this site for now because i don't want google to look at what i'm doing right now
i'm not ready to show because i am not properly dressed up i mean my site is not dressed up
properly for public visibility so i'm discouraging search engines to index this site because i'm
telling them i'm not ready and when i install wordpress and now we have wordpress up and
running i need to log in and i need to type in my username and my password and then i
password and then i login and that's how it works right as simple as that there are some updates
available and some plugins and all that nonsense but you can dismiss this and look at the plugins
and see there's a newer version update now fine updated done what else we have nothing clean out
there are some more updates so the updates keep coming we can update later on but the idea is we
are able to create a new post like that so hello world you can modify it and maybe just view the
post right now this is how the blog looks like the wordpress blog looks like that hello world
so what i can do now here is go back to that site again which is this site and there i will modify
go to the dashboard and look at our posts that we have the hello world post and i edit that
and call it come on go away i call it hello cloud genius and update the post and then
view the post there it is so it updates so what are you what are you looking at is a functional
two-tier architecture with some backend storage that that's the design so let's go look at the
look at the design one more time so i'm going to go back to our notepad and describe the diagram
of what did we create and by the way you can also do the whole thing just like i did you can do it
on your machine provided you have docker properly installed with the latest docker docker compose
comes with docker these days so what did we do we have a machine i call it the imac it's actually
ubuntu it has docker running docker the app the software running docker compose also available
so we created three containers one container called wordpress this was exposing itself on
port number 8760 but it was mapping itself inside like that
so me as a user can visit the imac on that port and see what wordpress is showing me
this wordpress container in turn connects to a database container running maria db
and that container runs on port number what three three six nine if i'm not mistaken i don't
remember right let me just quickly check maria port my sequel port my
sequel port number
what's the port number three three zero six three three zero six okay so we should not three three
six nine but three three zero six at the port that this guy runs mysql and wordpress connects to
that port on the maria db mysql container and this container stores the data in the mysql container
and this container stores the data in a location called where what is the name i forget what's
the name again uh where lib in the docker file where lib mysql so where lib mysql that is where
the maria db mysql container expects to write files in the database so it is exposed to that
location through a separate container i created called data and this is simply for illustration
and separation between the database and the actual storage so this is the database service
and the storage location just to separate that out is the reason i created the third container
to illustrate the point that you can kill this container bring it up again as long as you have
the storage separate away from it there is no problem your data remains intact so just remember
your data remains intact so just remember that similarly this guy stores the data outside in a
folder called what is it called let's go see it is storing the data in a folder called where is the
file compose file it stores in that location somewhere here in line number 30 right there
it stores in this folder called docker files and wp content that's where the actual storage is
you can see that you know the storage goes right here wp content that's where the storage is
there so what does it mean that means that you know this this whatever you store in the
application called wordpress it will actually be stored on the imax in a folder called tilde slash
docker files slash wp content
that's where the files that you put in the wordpress application will belong the data will
belong in this storage for the database so just remember that there are two storage locations
for these two containers and we are keeping them separate the reason i i designed it this way is
to illustrate and drive home this simple point which i will now demonstrate next is you can kill
the container and it doesn't matter as long as you're preserving the data outside you don't
remember to preserve the data away from the container so the key takeaway here is keep your
data away from the container that's what i'm doing see wordpress data is outside the container
database data configuration outside the container data itself also outside the container so three
things separately stored not in the container but outside what does this give us what does this give
what does this give actually is the ability to die and resurrect you can come back online no
problem let's go see if it actually is true so we have these three containers right
the data container which stores the data so i will leave it alone we have a database container and a
wordpress container i will kill this guy and kill this guy and then bring it up again and you should
see everything like like it was let go begin and actually test and verify that nilesh is not
bullshitting let go see it so i want to kill this container called docker files wp1
died okay and so that that means our browser should show you nothing so here we go refresh
nothing right so what do we do now we bring it up docker compose up
up and then we go to the browser and refresh
and it says continue our application came back let's go and so we have to go back to db submit run
run and nilesh one two three and continue and you will see our post view hello cloud genius
see this cloud genius is not known to wordpress i modified it our modifications are intact they
did not disappear it stayed that's the key takeaway so persistence the takeaway here is
persistence of data let me describe that one more time you want your machines and things that you
run should persist because disasters will happen persist that persistence is important that
persistence comes as a result of separating data from the container
container that's it nothing much to it whatever data you want to preserve and persist
because the containers will die and come again up and die and come again up and keep on happening
as long as you are keeping the data out away from the container separate in a good location
i will describe what good is in subsequent sessions but keep the data away in a good
you know robust location you are golden you can destroy your containers left and right and doesn't
matter they'll come back again in fact in kubernetes this thing happens by itself if you kill a container
it comes back again by itself you don't even have to run docker compose up like i did here you see
i did docker compose up and it brought back the whole stack in kubernetes you cannot kill a
container even if you kill it doesn't doesn't matter new one pops up automatically that's the
design so that's the idea so that you saw one example now at this moment i should maybe pause
a little bit and ask you questions about what do you think that you that you did not understand
in my demonstration of this this concept of running three containers in a two-tier architecture
with the idea of running something like an application on top the database below it and
and keeping the data relevant data away from this container structure so any questions if you have
go ahead no questions quiet that's okay i don't have to ask questions but you can
but you can so let's go further and i think uh let me let me uh inspect i have a variety of
examples in that same git repo i want to inspect that git repo and see if i can bring up a relevant
example that actually works the way we want it to work in an easier to understand fashion because
you know i can go deeper and nerd out with you with curl and you know insecure and dash i and dash
this it's a never-ending game i i keep going that's not what i want to do i want to give you a
concrete thing that you can take away with you and and play with it and maybe next seven days or so
you show me your own wordpress running on some machine somewhere i don't care where some any
cloud you take any cloud run it you know install take here's a quick trick take a cheap cloud from
some location or maybe a free cloud from many companies give you free stuff so take that like
amazon gives you free stuff google gives you free stuff i think even microsoft does and so basically
for a few days for a few months sometimes a full year they give you free stuff take it use it to
start one machine cheapest one really because i don't want you to burn money so get the cheapest
machine you can find for free install linux on that on on some cloud and install docker on that
and then bring this git repository and say docker compose up like i just showed you what i what you
want to do is go back to the repository that i described again this file was empty to begin with
right so i copied from the three tier wordpress example like that copy the whole thing and put
that in this file and you don't even have to modify line number 26 like i do because i have
a constraint you probably will not have such a constraint in a cloud setup because there's
nothing running to begin with and you bring this whole thing up it should work send me a link
just to tweet tweet me that link after you get it to work like hey here is my cloud running
wordpress with this example so do that i think that is what i want you to consider experimenting
so do stuff as opposed to you know not doing it so basically do it the only way to learn is by doing
there's no other way and that's the takeaway so this is how this is how it should be like port
number 80 on your cloud machine and a simple example you can play with i think will be say
digital ocean that will give you like a free something are they giving free yeah i i'll tweet
out a link they probably give free stuff but if they don't give you amazon will definitely give
you free tier aws.amazon.com slash free should give you some free stuff there we go so they have
the free stuff so take create an account here and let me give you further details on how to keep it
free for one full year so here it comes one full year you can keep it for free as long as you follow
their constraint so what are they telling you they're telling you that you will be not charged
provided you consume 750 hours every month so in a month typically you have like 734 five hours
in a in a given month give or take less than you know basically less than this many hours
so that's good so basically one month free every month for 12 months that's one constraint
the second constraint is that you have to use the cheapest possible machine that amazon sells and
they sell you a t2 micro or t3 micro instance that's what they're showing you in the in this
fine print so let me go back and show you the fine print again here you will see that this thing
oh the thing disappears so t2 micro or t3 micro instance running linux you can get that for free
for one full year so that's the machine you should get don't get any machine bigger than that because
it will cost you money and i don't want you to waste money so spending money great idea wasting
money bad idea don't waste money as you're learning this is a good idea so take a t2 or t3 micro
machine install docker follow the official instructions you will ask me how do i how do
i install docker so here's how you do it you go to the source always go to the source so there'll be
like hundreds of websites giving you how to install this and how to install that don't listen to any
nonsense go straight to the source so go to docker documentation docker documentation on the internet
you will find hundreds of thousands of things that are conflicting with each other how do you
resolve it you don't listen to anybody except the source so here you've got docker reference
and actually the way to search it is docker install ubuntu so there we go so that's how
you install docker on ubuntu so you get a ubuntu instance on t2 micro t3 micro on amazon free tier
for one full year install docker engine like this follow step by step you will have docker
just remember to read carefully and you have a machine running docker then you go to my exercises
here and run through just exactly what i did that you will have a wordpress running to play with this
show it to me and next time what i want to be able to do is improve upon this example to give you a
proper ssl certificate tls certificate provided you have your own domain some of you may not have
so what do we do you need to get a domain getting a domain is not free but very cheap
how do you get a free cheap domain you google search the worst possible site you can get and
this is my opinion so don't take it for for what i'm going to say right now but godaddy sucks
godaddy they're horrible they're horrible site in terms of the user interface
but you know what they're cheap they give you a site a domain name not site sorry i said it wrong
no we don't buy a site from them no please don't get a domain from godaddy or anybody else for
cheap cheap one dollar price sometimes they don't give you a one dollar price right away
right so some random domain.com you search and they might give you something so it's like what's
the price right now one cent oh even better than one dollar here it is take it like yeah absolutely
this kkwhateverdomain.com for one cent absolutely buy it immediately and that's your domain i mean
don't do that what i would recommend actually is get a proper domain with your name because then
you can use it for yourself to make a portfolio for yourself so for example akshay kumar right
we have akshay kumar right here so you should find a domain called akshay kumar and buy it let's go
see akshay kumar.com probably this domain is taken by the movie star domain is taken some other guy
it doesn't look like akshay kumar but that's an idea so you don't want akshay kumar maybe get
something else like with your last name or maybe just akshay or akshay k i don't know probably
taken out as well so yeah it's it's kind of difficult to get the proper name but i got it
this mylastname.com i am i have it so this is available to me uh for last 23 years maybe more
i just have the domain i'm using it occasionally not too much but that's how you buy a domain if
you don't buy if you don't get a cheap cheap domain for like less than a dollar on godaddy
what do you do i'll tell you a trick now what do you do is go to google and search for
a competitor to godaddy something like name cheap name cheap one dollar domain and you
should do these things one after the other so name cheap domain godaddy domain and just just
have the browser register cookies for both these websites and then an ad will pop up like it just
did i can see the ad right there 99 cent domain name registration bingo why did they give you
suddenly a 99 cent domain name because they saw a cookie by godaddy placed on the browser window
and so they're looking at competition and suggesting you a coupon there we go so now
you can search for a domain you like 99 cents or or maybe in your your currency you find a cheap
cheap domain use it for one year at least for the first year first year and before the end
of the year you move it to the at cost domain provider what is an at cost at cost domain
provider what does it mean it means that they don't charge you any fee on top of what is costing
them so the there are certain at cost providers the cheapest ones but they are not cheap the first
year first year is cheapest with these guys godaddy name cheap another other people i have my domains
at a at cost dns provider called cloudflare they are not free to begin with a not like a one dollar
to begin with but they give you at cost cloudflare cloudflare at cost dns so here it is for at cost
domain the pricing is really really with zero markup you can see the orange lip orange flag here
orange line here cloudflare fee they don't charge you any fee on top of what they cost what it costs
to them so whatever the dot com wholesale registry fee is plus the i can fee they don't charge you
anything see that and that's the cost for a dot com domain in reality for other domains it's
slightly different and our cloudflare will soon add other domain top level dnss here but right now
they are limited they're limited to what domains you can get but once you have your own properly
structured domain you can craft out something that is relevant to you for example here is
this
carol george now this guy created a domain and his website and he wrote down his portfolio created
a project site this is the same guy you see on my website he was a boeing employee then over the
years he he kept on working with what what we do at our place and you know he is now a
god knows him some vp somewhere he is 25 years old yeah carol carol george he is what
he's a vp of site reliability engineering at galaxy digital since 2022 just the same guy you
see on my website he worked hard he worked hard basically doing hands-on every single thing he
wanted he did it with me and on his own much of it is on his own but smart guy that's how you should
do so build a portfolio for yourself and learn and show and describe and write about what you're
doing on a post on some post like you know maybe you use the wordpress site on your domain and
start writing posts on your own wordpress blog that you create using the exercise i gave you
that's the idea i hope that is useful to you and i think uh we are reaching the hour mark i'm going
to keep you like waiting longer than expected so we are like about 53 minutes into the conversation
is that right maybe not i don't know how much time has passed i have no idea i lost train of my
thought is it eight o'clock or seven what's the time right now 753 so we crossed the one hour is
it 823 yeah that's more than yeah more than 23 minutes beyond one hour i'm sorry i just lose
i have no sense of time but i absolutely have zero sense of time only thing i remember is when to
start and only i remember when i actually promised somebody that i will start at that time
otherwise i don't even give promises as to when will i start i don't set up appointments that's
why i just do it all you know like there were no appointments like many people ask me for an
appointment and i don't give appointments no not at all because you know when i when i promise
something that i have to do it and i have absolutely zero sense of time because that's
how i work like i have no connection with time or reality or anything i just do what i do and i
enjoy doing and that's it so with that i will give you some time if you have any questions
i will give you some time if you have any questions go ahead and ask otherwise we will
you know stop streaming and continue our private conversation if you have any
if you don't have a question for the public stream i will stop the stream
uh see you guys next time we will run a session like this on a on a building up topic you will
see the the topic list you can see it on the cloud seminar website that's for the next series of
again docker file docker images some more docker we'll also jump into people have asked for
kubernetes we'll do some kubernetes sessions and i'll keep updating this site with every
same time so the same time will be whatever this time is in india it is 8 a.m every wednesday
in the us in seattle time zone it is 7 30 if you are in a different time zone please transfer
this time to that time you know like like you know you know how to transfer times so yeah use this
that's the timing for every weekly session for me it becomes tuesday at 7 30 pm seattle time
every tuesday that means every wednesday 8 a.m we are going to do this session like this
it's a new topic that you will suggest on tweet or any other method of contacting me
and that's the plan we'll keep doing it and until you get tired of it

Show more...
2 years ago

The Cloud Seminar
Docker Fundamentals #0001

AI Generated Transcript

So that's that's just me so you know I think you know some of
his friends summer friends friends are going to be joining
in later with what they feel like or they when they get
up. But I'm going to start now.
So here we go. The idea would be to keep it interactive.
So if you have a question you can just open your mic and
ask that.
That's the way I think we should operate.
So let me begin focusing my attention to my.
Desktop so here I go so you see my desktop and you
should be able to see my handwriting where I'm writing here.
There we go and so that that you should be able
to see that.
Now once I confirm that with you,
I would like to now describe to you the basic concepts
of what Docker is like.
How do we put to use so that's that's the concept
we will do that.
So let's begin. So in order for us to run
some program like some kind of a process.
Or some program we want to run.
We want to execute it,
so we need to provide it a computer.
To run right, it needs to have some CPU.
Some storage.
Some memory or RAM.
Let's call it RAM and so that that's basic resources
you need to have for the process to able to
be executing properly.
That's what the computer really provides the operating system on
the computer typically provides these things.
For the process to be able to consume these resources,
so that's the that's the common idea.
We know that we know that I'm ready.
You want to run something that's what you need to
give.
So for example, I'm running this thing called Notability,
which is the application I'm using to write on my
computer.
It is using some memory, some CPU,
some storage on the computer.
You can see that in the activity monitor format.
And here you can sort out CPU consumption.
And memory consumption and disk consumption network consumption.
And let's go focus on the process that called Notability.
So let's see we can find Notability here.
And go by N so letter N there we go.
So one of these guys should be Notability.
Where is it? Is it hiding or something there?
That's the Notability app, right?
So if you now look at this carefully,
this is consuming some amount of CPU.
Or it moved, but that's that's the one 0.5
sometimes one.
So this is like a percent of a CPU,
like half a percent, 1% very very low consumption of CPU
from this application called Notability.
So it's a very good application,
very consumes very little of CPU,
so that's the CPU consumption idea.
We have the next concept here which is about memory
consumption.
We can do the same thing here.
Look for the application called Notability.
And see how much memory is it consuming.
So here's the Notability app.
I hope this is very small.
I think it is small,
but probably still you're able to read because I'm
highlighting.
I'm assuming that it's legible,
so Notability seems to be consuming 159 megabytes.
Of memory. That's the consumption from this particular application
called that that I'm using to write notes on the
computer.
And same with you know energy consumption,
how much battery it consumed or how much electricity it's
consumed for that particular process.
So they give you data,
more data available these days from Macintosh.
Disk consumption. You can see how much disk space is
being used by that particular process and how much
network activity is taking on on behalf of that
process.
Now typically an application like this.
Will not consume any network activity at all,
unless you have configured some kind of communication between
this Notability application and maybe have it back it up
to iCloud.
Or back it up to some other storage location that
you have.
So all my notes that you have here might get
backed up to some other computer somewhere else,
and that is network based activity,
right? So that's that's the network consumption.
So we are looking at a computer which gives you
some storage like disk storage network.
And it's being consumed by some application called Notability.
That's an example, right? Now if you want.
A particular port. On the network.
Let's say port number 3132. I'm making stuff up
right now.
That's the port assume that you need that port
on the machine.
And this requires some storage, so you you allocate like say
10 GB of storage.
That's probably too much for this app,
but I'm just giving it. I'm being generous.
It required like 159 MB. You saw that in the
in the.
In the in the activity monitor,
so you might give it like say I'll give it
400 MB memory allocation.
The actual usage is this much.
But I'm allocating a quota of 400 MB as a
allocation of quota. Maybe the CPU consumption you saw was
ranging from 0.5%.
To 1% of the overall CPU availability and I have
multiple cores here,
so that's a lot. It's a it's a decent size machine,
but what we have is I think people are pinging
me on LinkedIn and let's see what's going on there.
Hmm. Are they having trouble joining in or what?
No, no, no, no, no, no trouble yet.
This this teams thing I sometimes don't like it at
all,
but the so you get the idea that we have to
allocate the CPU that we have the memory that we
have the storage that we have the network that we
have in our computer to a process in order for
it to function properly.
So that's the concept. Now if you want to run
multiple of these things simultaneously.
That becomes a challenge. Say for example, I want to run
two sets of notability.
Another version of notability at the same time on the
same computer.
Well, I can allocate in a 1% to this guy because
I have like lots of CPU,
so maybe I have how much CPU do I have?
I don't know. Let's go find out.
So we have how many CPUs M1 Mac is like multicore,
so lots of probably 8 core or maybe 60 core.
I don't know how many course we have,
but it's. So so so I have 1600% of CPU available
out of which 1% can be very easily given to this
second notability very easily.
Same with RAM. I have tons and tons of RAM.
I can allocate like extra 400 to this guy.
No problem. Storage I have quite a bit of storage so
I can allocate 10 GB to this guy.
No big deal. The problem comes in when we have
a collision like this notability will want to back up
its notes and will also use the same port.
3132 of that's a conflict.
And that means we have collided one notability with the
other on the port access.
And that's why the second notability will not work.
But I want to work.
I want things to work the way I want.
Anytime I want wherever I want that's my desire.
And that is where we need to have a way
to break this collision like 3132 by this notability and
3132 by this notability.
We need to break somehow find a way to.
Address that conflict. To be to be to be taking an
example from our.
Friends company Redis, let's take that Redis so Eric who's
online right now works for this company Redis.
That is an open source product by the way.
He. Redis, where is Redis?
So Redis has provided us some getting started documentation.
Let's go see that. How do you install it?
And how do you install on Linux and a bunch
of other things?
But bottom line is we want to use the
Docker version,
which I will be using.
As I said, you know when Eric joined,
I just told I'll be using your example.
I'll be using now this guy Redis uses a port.
So let's see Redis port. What's the what's the port
that Redis uses?
Let's go find out. I think it's 6379 so this
Redis app that.
Redis uses 6379 port.
That's the port it wants to occupy.
That's it. That's how it is designed.
So if you run Redis on a computer it will
take on that port.
Now if you want to run two Redis instances on the
same computer,
impossible. They will want the same port and collide.
But I want to run multiple Redis things,
multiple Redis instances on the same hardware.
How do you break that?
That is where Docker comes in.
What Docker does?
Is it basically gives you?
A completely isolated environment.
What does it mean? Let's go find out.
So let's go to this thing called the container store,
right? If you go to the container store,
it has boxes, right? You see?
This thing that you see the container store is giving you
this box and that box and that box.
You can put stuff individually in separate boxes,
so that was a very dumb example.
Let's go look at a slightly better,
more relatable example.
Which is going to be.
Another search, let's call it Docker container and look
at some images.
So here is a classic visualization of a container.
Let's see some more.
Specific physical related examples,
physical world related examples.
So for example, shipping containers is a very relatable idea.
So this is a shipping container.
You may have seen it multiple places,
especially near the port.
Some kind of a port you will have this kind of
thing.
This is a shipping container.
Now the idea of shipping container is that it is
standardized.
It's exactly that dimension, so worldwide is the standard of
a container and that's the container.
That's how it is designed.
You can put it on a train.
You can put it on a ship.
You can put it wherever you want.
It's the exact same size.
You can track it stack stack one on top of
the other and you can create.
Whatever you want and it's.
Isolated within the whatever it whatever whatever is inside
has nothing or no relation with anything outside the container.
It's like completely full full,
you know. Self contained setup inside the box inside the
container.
So that's the concept where Docker came along.
What are we doing is giving each set of applications
a separate?
Self contained. Container.
That's the idea of Docker container.
So if you have one computer of some sorts.
It can be, you know, Linux or Mac or Windows.
Whatever you have, what it does.
Is that it creates?
Separate isolated environments.
Any number of them as long as your machine can
handle them.
So whatever your capacity of the machine is,
you can create and. Let you run individual Redis applications if
you like.
Redis again on the same computer.
And 6379 allocated to this Redis 6379 allocated to this
Redis.
No problem because it is isolated from each other.
What does it mean? Isolation means that these guys cannot
talk to each other like absolutely not.
There's no connection whatsoever at all.
Absolutely no connection whatsoever between the containers and with anything
else outside the containers like zero connection.
That means this machine or this container cannot talk
to the computer.
Cannot talk to the Internet.
Cannot talk to any other container at all like nothing.
Completely disconnected. That's the design.
The beginning point. Now.
When you have such a setup,
you will think why is the list even talking about
that?
Why would my machine not be interested in talking to
another or my computer or my public Internet or
whatever I have?
I need a way to connect.
I need a way to communicate.
I need a way to interact.
So yes, that that is absolutely possible,
but by default everything is disconnected,
isolated. Imagine you have.
You have an iPhone.
And you put this iPhone on a desk.
And the desk, so let's go get this iPhone.
Oh. I should definitely, but yeah,
get this iPhone and then bring it home.
Put it on the desk. Put airplane mode on,
disable Wi-Fi, disable Bluetooth, disable network, disable the SIM card.
Whatever you have, the connectivity to your cellular company.
Disconnect everything and put it on your desk.
What can that phone connect to?
The answer is nothing. That's exactly how the container will
behave.
Nothing, no connections whatsoever. By default, nothing is connected.
By default, nothing is able to talk to anything else
on the planet.
So now we have to explicitly open things for it
to talk to other things,
and we'll talk about how we do that by illustrating an
example.
So by default, nothing can communicate to anything else.
Everything is isolated. You can run random processes here.
For example, you can run your your your engine X
engine X process here if you like.
You can run a database here like MySQL if you
like.
Or you can have more containers running some other random
things like PostgreSQL if you like.
And they will all be isolated from each other.
By the way, we'll have another session just like that
extension of the current session about Docker Compose where we'll
actually talk about multiple such containers simultaneously being deployed and used.
That is a separate follow up topic.
We call it Docker Compose. We'll go through that in
the next exactly seven days from now.
So you know Tuesday, same time, which will be India,
Wednesday, 7 o'clock, same time, same everything, but we'll have
a separate detailed follow up discussion to this on
Docker Compose with multiple containers right now focusing on fundamentals.
Just one container. That's what we're doing to understand
fundamentals.
Having said these ideas about what a container is,
let's go into examples. So here is my command line
where I have.
The Docker application installed. Running with nothing.
So it is blank. And so you see that the result
came out with absolutely blank results. There's nothing running right now.
So now we will run something. How do you run
something?
You need to get something to run so I don't
have anything.
If I look at any of the images there are none.
These images that I'm talking about are something like.
Something like let's go see here. Let's go to the
applications.
And I was talking about this thing called notability,
right? With notability.
There so that app you see.
This notability app.
Is the image of the app?
And whatever is running on the when you double
click this thing.
That's an instantiation of that image.
So it starts to run. So when this thing runs,
it looks like.
Looks like that thing which I saw where the
not there there.
So this thing yellow thing.
The yellow paper that I have.
The yellow notebook is notability.
That's the instance of.
Where did it go finder come on there yeah.
So this is a image.
And the instance that I have run because I ran
it.
So it it runs like an application that's the.
That the PS command will illustrate that as we
as we execute things will will take various examples to
run.
So we I don't have redis on my machine,
so I need to get that redis image from somewhere.
Right, that's what I will be doing now.
So I have notability. I'm able to run it by double
clicking on it so I can just double click on
this and it starts notability.
So you see I double click. And there I go
double click and starts notability and this is where
I write.
So that's the idea about notability app and image and
its instantiation.
So this is an instance.
That. Is the image of the application you get
that from the app store.
So go to the app store and find notability.
You will find it somewhere here.
So if you search for it.
Come on app store. I think it's kind of slow for
some reason not responding,
but a big deal it will.
It will eventually load up.
For right now it's not talking to me,
so I'll ignore it.
Yeah, forget it. Yeah, you can download app from app store.
That's where the app comes from.
You can download an image from the image store,
a Docker image. So the Docker images come from this
thing called.
So notability there's notability for Mac and that the app
you can update it if you like.
I don't have to update right now,
but you can update for the nap.
But that's where it comes from.
That's the source of this application called notability.
So now let us see where we can get a
redis container.
So I go to this thing called the store for images.
So most commonly used store is called Docker Hub.
Docker Hub is available. Let's I think I'm already logged
in into Firefox,
so I'll just go to Docker Hub there.
And log in and you will see that I have.
Not signed in. I thought I did.
Maybe I did. So I sign in.
I put in my password.
And then I put in my authentication code.
From here. And I verify.
And then I am in to inside Docker Hub.
Now in Docker Hub there are lots of applications available.
Lots of images available, so let's go look for Redis,
not registered Redis. So here is Redis image updated a
day ago.
Our friend Eric has updated this or maybe his friends have
his company has.
So Redis has an open source product for key value storage.
It's kind of like a very useful.
It can also be used as a database if you
like by the way it is.
So that Redis thing you can download an image from here.
How do you download that image?
You run this command. Redis pull a Docker pull,
so we run that command on the terminal like that.
Like this. And I'll make the font a little
bigger so you can see it.
There we go.
And here I'm going to pull that Redis image.
So it is pulling down and it came down.
So now I have that image.
Typing mistake Docker images there Redis image created 27 hours
ago yesterday.
Basically somebody from Eric's company created this image a day
ago so that image came down.
Which came from this location.
So that's the image. You can see that image image ID
this ID number 84 echo Delta.
Whatever you see is the same thing that you see here.
Where is the image ID?
Oh, I think I have to look at the ARM version
of this to match the.
Image ID. Because my machine is a arm machine,
not a Intel machine. That's why the image ID did
not match.
So I should clarify what I just said,
which I did not clarify this machine that I am
dealing with this computer is a M1 Mac.
It is the arm architecture.
It is not Intel.
That is why these numbers are not matching up.
It pulls up the right image for the relevant architecture.
And this one is by default shows you on the
browser website shows you the Intel architecture image IDs.
That's why you see a mismatch or apparent mismatch of what
came down from the store.
But bottom line is the valid image is available to us
in this location and now we can actually make use
of that image to instantiate a container running Redis.
How do you do that?
Simply double click, but not really because there's nothing nothing
to click here.
It's a command line approach, right?
So we have to actually execute that.
How do you execute that?
You say Docker. Run.
And then you have to run that thing called
Redis,
but you will get surprised that it will not.
And you will ask me why did it not run?
If I just say run Redis and it will just
do nothing and it actually so yeah,
Redis has changed a little bit.
It is running right now.
You can see that it is running.
It used to not run in earlier version,
but they have changed. It looks like so.
What I'm showing you now is let's go see that.
So here I started. To run Redis,
the image that I downloaded from Docker Hub,
which was created this mean these many hours ago,
it is now running on.
Docker right there. That's the Docker application.
And it is ready to accept connections.
It is running on the port that I mentioned 6379.
And it is. Available for anybody to use.
However, you will notice that if you try to try
to talk to this Redis instance,
it will not respond because it is isolated.
So let's go try that and it will not respond.
And so I'm going to open another terminal.
Uh, let me just it is my ink here,
so I'm going to erase the ink.
There we go, and then I'll leave this container running
here on the on the on the right half.
Open a new terminal. And try to interact with that
container. And you will find that it doesn't want to
talk to you. Because it's isolated.
So here I go. Docker PS dash A.
And you see that this thing is running.
Up and running up and running for about a minute
at that port number 6379.
And if I try to ping it.
There is no address to ping because it hasn't been
exposed,
so I cannot actually ping this this port detail needs
to show me an address.
I need to ping. I don't have an address.
I just have a port that is all within the
container. So we have in our machine a container.
Running Redis. And is using the port number 6379,
but it's not exposed, so my Mac.
Cannot access it. Because it is not exposed outside the
container.
I need to run it in a way that it exposes
that port to the world outside.
I haven't done that in my ordinary in execution in this
step here, but I started Redis container.
It did not expose anything in just.
I just ran it like casually running without actually telling it
to expose that particular port to the machine here on
the Mac.
I did not do that,
so let me show you how to do that and then
we can interact with that Redis container.
Actually for real. So let's do that piece.
What I'm going to do now is.
Break that container. So I broke it.
And then see my Docker PS dash A.
You will see that a dead body is there.
The dead body was exited 9 seconds ago.
And this was created 2 minutes ago.
And. It is now dead,
so I need to clean up this dead body.
You don't have to clean up dead bodies,
but you can. I call him dead bodies,
but they're actually exited containers at the right phrase
to say I call it dead body because it's exited,
but it's dead container so you can clean it up
with this.
And what I'm typing here is the container ID number
from here from the beginning.
I just typing a few letters of that and it
cleans up the dead body out completely.
OK, I forgot the commands apparently.
Docker. RM minus F. And then 89B02.
And then it kills the dead body out completely extinguishes it.
Now you see Docker PS dash A.
It will show you nothing.
So blank. No dead bodies.
So now let us run that Docker container one more
time.
How did we run the first time I ran it
like this right?
What I want to do now is to expose the port
that it has.
I know it's 6379. I want to expose it.
To the container to the to the machine outside.
What does it mean? It means like this.
So I have the container.
Port number 6379. I want to map it.
To the actual machine on the Mac.
On port number 6379, that's the mapping I want to
allow.
So I had to write this like this.
I had to say dash P. 6379.
Colon 6379 and I'm going by my memory.
I haven't even referring, but I think I'm right.
So that's the command you have to pass.
To this command line.
And then this port 6379 will become available to the
Macintosh.
That's what you will see now.
So let's go run it.
I'm going to erase the ink.
And type in. P 6379 colon 6379.
And then run it.
It fails. Am I writing it incorrectly?
Probably. So let's go see.
So container networking feature sets are written down in
documentation and this is how you do it.
Yeah, so I was doing it correctly.
But apparently. It did not like it.
Bad directive, wrong number of arguments.
Let's type it again. Maybe the typing mistake of some
sort.
So Docker Docker run Redis.
Dash P and I'm going to map this to some
other port.
So let's say. 6379 happy to 6379.
And I'll follow the instructions provided by these guys.
So map it to the.
Map TCP port number 80 to the container port on
Docker host.
This should work.
No, no, no, it's not so.
Let me let me show you a different example.
I did not. I just picked up Redis because Eric
showed up so I don't know what they have changed
with Redis,
but I'll show you another example that I that I
it might work.
So the example I would like to use is engine X
slightly simpler and I'm kind of familiar with this a
whole lot than Redis.
I just picked Redis because Eric is here.
Eric worked for Redis. So try it was a good
try.
You must have changed something.
I don't know. I'll figure out maybe next time when
we meet on Tuesday.
I'll have a reaction to that.
So engine X as the application as a web server.
It also has a Docker engine X image available,
so let's go look at that.
And so here is your Docker engine X image.
We can bring it down from this location simply just
Docker pull the image from engine X so it pulls
down the image.
Now you will have that image available to us locally.
We'll make use of it. What it is.
What engine X is is a web server,
so it it runs static websites or even dynamic website.
But for our example, we'll just run a simple default engine
X installation,
and so now we have in our machine two images.
They are the Redis image.
And the engine X image we have any dead processes here
with us.
So let's go see how many dead processes we have two
of them.
I kill both of them by running this command.
Docker RM minus F.
And Docker PS minus AQ.
That should clean out all the dead bodies.
So now we have doctor PS dash A with nothing.
I want to run engine X,
so I'll say Docker run engine X that should run engine
X.
And it is running engine X runs on port number
80.
So. I will. I will look at the details that
is providing us.
We are running engine X process and it is.
Not giving us the port number detail in this log,
but I know it runs on port 80,
so we'll go look at that.
But before that we had to expose that port to the
machine outside,
so we'll do that piece before we can actually access
the engine X process.
Engine X casual run like that.
And remove the dead body.
You don't have to remove dead body,
but I'm just going through the process that there is
there is clarity.
So the dead body of engine X is dead,
it's gone. Oh sorry,
Docker PS dash A is nothing there.
Now I'll run Docker run engine X and this time what
I want to be able to do is map a port.
Like that.
Who you know what? Something is broken with Docker.
This has nothing to do with either Docker for Mac.
So what I want to do is change over this machine
to a Linux box.
I'll just go to a Linux box right now.
Here we go.
So there we have a Linux machine.
And here are lots of images right now.
I have tons and tons of images there.
I'll just download our engine X machine and play with
it.
So that's a different machine it's running Linux.
And here I will just go back to already example.
Let's go see Docker pull radius.
Good pulls and we should be able to run
it just like that.
Docker run red radius.
Port number 6379 colon 6379. And run it.
Strange.
Am I forgetting something about port mapping or what?
Yeah, I'm looking now and trying to look at the
commands.
That's I think I don't think you need the extra.
If you don't change the host name,
I think I'm going to put in chat.
Whoops, but I think this is all you need.
I don't know if they're changing the port number on this,
but I thought that was the command.
All you need for setting the port.
For Redis, but that would be Redis.
Right, this is the ping command,
but I want to expose it first,
right? I see what you're saying.
I see the that's just yeah,
I thought this was to change the port here.
Did you say 6390?
Yeah, this is to change the port because yeah,
that was that you change the port.
That was like if you want to change the port.
For I see, I see, I see what you're saying.
So doctor run, doctor run Redis.
And then 6390 that's just to change it.
It's you can set it to fix 379
because that's what you have in the config,
right? There's also a config file you could edit.
Etsy host file and Etsy host directory.
So maybe it's this.
I'm looking at this.
I don't haven't set change the ports so,
but there is this code.
Looking now here it is.
Host port host port database.
So let's let's follow the official instruction.
So see what these guys tell us.
So here it is.
So how do you quit pull?
So we pulled it right then we want to run.
So you say Docker run and it runs.
Now we have to run process and storage.
And. Where's the port mapping?
You don't see it there.
Is that it down there?
I think you need the CLI,
or maybe it's this URL talks about it,
but it's the CLI. Yeah, so.
And there it is. I think we have to run it like this.
You're right. Yeah, you gotta repeat the port.
It's like it's just start port to end port.
Looks like right that repeats the ports.
It's the address range.
Support range, right?
Because it's 6379 to 6379.
Looks like it's a range.
Let's go. Let's go try what these guys are
suggesting in the documentation.
So I'm opening up.
A command line that I will write what I have.
And. See what the command here may be pseudo run
dash D name Redis test port mapping and then volume mapping.
So let's go. Let's go exactly reproduce what these guys are
doing so we have Docker run dash D then the name.
Then the port mapping.
We'll follow exactly what this documentation suggests.
And then give it the image name.
Let me write this so Docker run dash D.
Then a name.
Call it whatever test then port mapping.
6379.
6379 and then a volume mapping which we don't need to
within pass the image name.
And that should work. Maybe did.
It did. It did work. So by the way it is working so missing.
The dash D option. Apparently it needs to be passed.
Looks like earlier I was running Docker.
Run and Redis.
And just doing a port mapping like that.
But now that I was the thing I was missing with the
dash D option. And that is what.
Resolved it. So now we have it running. Let's go see what is
running. We'll see that it is actually running a port number
that is available to us on local computer. Was it sorry to
interrupt you? Was the dash D option for Docker? No dash D
option is to run it persistently in the background.
Persistence OK, thanks. Persistence in the background
so it will keep on running in the background. You don't have
to wait for it on the command line, whereas the other option
here it makes you wait on the command line. So there is some
difference in the way Redis operates it seems.
In terms of without the dash D option, so let's go clean up
everything and do it again. So Docker RM dash F clean out
everything and then we have. We have nothing running.
And then we'll run what we have in the line number 9 on this
side and will clean out the name part and just leave it like
that. So it's very similar to what we have before.
Right, and even match it up like just like I was saying,
Docker run Redis with the dash D added and a dash P added.
And the only thing I add is dash D and let's see if this line
number 9 runs it properly. I think that's the resolution, so
let's go verify that. So here we go. We have nothing running.
And then we run the command from line number 9 on the right side,
type it on the left side and we get a fatal error. That means
we have to have this dash D up.
Ahead here somewhere. I think this is the how you how you
configure the command. I think that's where it boils down to.
So let's go see we have nothing running here. We have dead
bodies, so we clean them up.
And now we have nothing running here and then we run and it
runs. So that is the modification. We have to insert
this dash D here.
In order for it to properly execute in the background in a
fashion. So that's that was the resolution. Now let's go see
what Docker dash D does. Docker dash D is a daemon mode. If I
remember right, that's the way Docker describes it.
Docker daemon mode.
And so that's the daemon mode configuration and it does
mention a dash D option somewhere.
Where does it say?
It doesn't describe it, but it is definitely daemon mode. That
is for sure. So it is running. Let us go see what is running.
You will see that it is running a Redis container and we should
be able to interact with this Redis container. How do we do
that? It is it is dead.
Why did it die?
It ran and died. It still doesn't like that. It is dying in
the background. Still the same error, but in the background in
daemon mode. In daemon mode it is still dying. So let's go
to daemon Redis and let's switch to NGINX. So same thing.
NGINX.
And I'll try attempting a cleanup.
And then I examine that nothing is running and then I run this
next thing. This should run and let's go see what is running.
And you see that it also died.
Why is it dying?
Well, I don't know, but that's the best part of a demo is when
they when you have to troubleshoot. So it's it's the
best way to learn for sure.
Exec P not found. I mean, come on, are you kidding me?
OK, let's go. Let's go change the machine to Linux and
reproduce the same thing in Linux. So this this Macintosh
may be different. I don't know. I usually run mostly on the
Linux side, so let's go SSH back to Linux machine.
And here we will run the same command like line number 10 line
number 12. That command. And before that I need to pull
Docker pull NGINX. It should pull.
And then I'm going to execute Docker run NGINX and port
number 80 is probably occupied, so I had to give it like some
other port.
So I'm assigning an arbitrary port for me to use on the other
machine, and let us see if this thing runs.
And see if I can name it something name it Nilesh.
It ran. Let's go examine its logs.
And so you see that this thing is actually running something
else by the name Nilesh, not by this. So something else is
running by the name Nilesh there.
So there are lots of process. This is a live functional
machine and so there are lots of processes already running
right now, but one of them should be the one we just
started. So Docker PS dash A and then grep for NGINX and see
what comes up.
And yes, it is.
NGINX is exited again.
Nine minutes ago exited hmm.
What is going on? I'm at a loss, so why is it dying?
Maybe because I'm not using it properly, so that must be the
reason there's no other reason. So Docker RM NSF NGINX and I'm
going to bring this one up here and clean out all the NGINX
processes. Then I will look for anything running with the
NGINX. There's nothing then I will run Docker run NGINX and
see what pops up.
And it is seemingly running something.
But I cannot access it because I'm not exposed that port to
anything outside. So I'll exit that.
Look for the NGINX dead process and this time I will modify my
command and I let's go read the proper way to run on Docker
website because I must be missing something fundamental.
So Docker run.
Port mapping. Demon mode, let's see, how do you do that?
This is exactly how it describes.
So where's the port mapping thing?
That is how you do it. It's a darker Docker run. This is the
official documentation. Copy paste from documentation.
And so no changes made. This is the documentation. The only
change I will make is the image.
Will use NGINX. There's the only image only change I'm making.
The only change I will make is the image will use NGINX.
There's the only image only change I'm making.
And let's see if you run it that way. What happens?
Oh address occupied. So this address is occupied on port
number 8E is occupied. I had to assign some other port 8887
randomly assigned port 8887.
It ran, but it exited. Why?
Now it is running. OK, we did something and it is running. So
that command we just tried.
And this thing seems to run. Let us examine without killing it
on another terminal. What is running and how and where?
So here I'm going to go back to the same machine I was dealing
with. And look for my Docker processes.
That contain NGINX.
And so I have something running right there. This guy.
Is running for 34 seconds and it is accessible to me on that
word. Let's go dissect this and so here we have.
This process ID 3E401 running engine X up and running for 35 seconds.
And the port mapping is like this.
What does it mean?
Let's go dissect that.
This port mapping is what I want to focus on.
And what it does is it maps.
It maps that port to the machine port 8887.
This machine port. Which is the machine called iMac.
So I should visit that port and I should see engine X on my web browser.
So I should visit that port.
On the iMac.
Which is running Linux, by the way, just so you don't want to confuse you,
runs Linux.
And the port was 8887.
That should open up engine X and there it did.
What am I visiting? I am visiting this URL.
Let me let me clean up a little bit so you can focus on exactly what we did
and how are we running it.
So this is the command I think I ran. Let's go cross check that.
Erasing ink.
The command I ran was that command.
So I'll put that in the notepad.
The line number one, that's what I ran. Line number two same thing.
And then it runs by this process ID.
Which is a randomly assigned ID. The image name.
The entry point up and running for so long and then the address mapping.
Here is the mapping of the ports and when we open that machine iMac,
which is my internal machine, you can also see the same result.
If you go to my machine's physical address, which is 192.168.1.10, I think.
And then the port number is 8887. You will see the same exact result.
If you visit that page, let's go see that.
And I will open a browser, new tab, open result, same thing.
Do you see the same index result coming up available to you?
We are visiting.
We are visiting this port on that IP address, which is the same thing as this port on this name.
So the traffic from this Mac.
Safari.
Is hitting that IP address on that port on a Mac on on on the iMac.
The name is iMac, but it is actually running Linux.
And this.
Is the machine there which gets mapped to.
That port 80s number 80 on this container.
And that's why it shows what it shows. Otherwise it would not. I think somebody else is.
We are letting you know, Nilesh, are you coming up close to the hour? A couple minutes.
Yes, I understand. So somebody just joined Shondalin Betts.
And I'm sorry, I think I ignored that person for quite some time. Apparently that person has been waiting.
For so long, and I'm sorry I was just ignoring you.
Hey, you can speak. You can open your microphone and speak if you like.
Hi, hello.
Hello, how are you? Nice to meet you. It's nice to meet you also.
So I'm so sorry for keeping you waiting.
You're OK. How long did you wait for this? Not too long. Not too long. Not too long. I thought I must have ignored you for like so long because I was like busy talking describing something.
You're good. You're good. No, don't worry.
I see. So I'm sorry again for delay because I'm.
So let's let's recap. What did we just do?
Erasing that ink so it goes away and then.
What did we attempt? We described the idea of what a Docker container does. How does isolate itself? And so we were successful.
Let's see successful finally in a configuration on this machine.
The name is Mac, but it is not a Mac. It is actually Ubuntu. I just want to clarify that.
I just have a Mac that I do nothing with, so I run Ubuntu on it.
It's an old machine, but it's a very big giant computer, so I don't want to like throw it away, so I put Ubuntu on it. So it actually becomes useful.
This has the same IP address here.
And on that machine. On this Linux machine, I was able to get an engine X image pulled down from the Docker Hub engine X image pulled out from Docker Hub, and then I ran it.
Ran it like command number one line number one here. That's what I used to run and it ran, but when it ran without the dash P option.
It did not expose any port, so you can run engine X and it will run engine X just fine.
But not expose this port to the machine here, so there is no connection.
That's why we cannot access it in order for us to access that engine X server running on that container.
That we downloaded image for from Docker Hub.
We ran it like this so that this connection becomes valid.
The port mapping becomes valid.
So when you run it like this, the extra command flag passed along.
It maps this port.
To the port number 80 inside the container, so this is the container side.
This is the machine side.
And that's what we're visiting.
Now let us go see similar things with other other ideas like, for example, I initially began discussing concepts of of network sharing.
Which I illustrated this example also illustrate. By the way, if you if you if you need to run because of time, you welcome to hang up and disappear.
Thank you for joining. If you're leaving, we'll catch you again next Tuesday at the same exact time, same exact method, except it's a different registration link.
The same it's still free, still open to everybody. You can just sign on. If you want to go, you can hang up and go.
I'll conclude what I am describing and summarize it and then we hang up and we'll meet again Tuesday.
Same time, so I think I plan to do this like more often or rather I may plan to continue this every Tuesday, every Tuesday at the same exact time.
Tuesday when I say Tuesday in India, it becomes Wednesday. So just realize that I'll be doing this, but I need ideas of topics.
If you if you suggest topic ideas, please do that. I will add on new sessions every so often every seven days.
I'll do something of your choice. So if you have something in mind, bring it on.
I welcome anything and everything in terms of Linux or cloud, whatever it is, bring it on, suggest a topic.
I'll take it up and we'll talk about it. We'll do live exercises without using PowerPoint. I don't have any.
So that's that's my plan.
Eric is typing something. You can also tweet on Twitter, social media, LinkedIn, whatever, whatever you feel like. You can type here also. No problem.
If you want to hang up, you are welcome.
Maybe developer toolkit would be cool or like, you know, like developer platforms, different full stack kind of.
You like, I don't know, node or I don't know, Tanzu or anything like the stuff you're talking about is really cool.
Docker related is good too, but maybe how you go like the end end like maybe review like what you're developing in like like the tools you're using, right?
To load Docker and the script, maybe more scripting like bash even. That's just some ideas.
OK, OK, I welcome that. So I will I will bring it on the next session we will have on next time, seven days from now.
And then after that I will schedule new topics that I'll post them on LinkedIn and Twitter and you will you will see them coming along.
So let's let's continue with what I just said about network mapping. You saw this network mapping. Maybe I should clarify that a little bit more.
If you are missing on this idea, which is this number here, number four, line number four, I'll elaborate on that.
Make it bigger. And so this is the mapping.
And we accomplish that by this flag here right there like that.
That's the flag we pass in line number 12.
And the mapping goes like from the machine.
On that port.
To the container.
That's what you see in this representation, which expands like this, and so that's why we are able to see what the container is showing us here.
Because we are visiting that port on the machine, so it shows up. Having said, let's talk about a different topic, which is storage.
So this is the default page you see. If I want to change it to some other page or something else, I need to provide that page.
I need to say hello Nilesh or hello Eric or something like that, right? You need to change the page and give it to the container for it to pick it up and show.
That requires a second mapping, a second mapping called volume mapping with a dash V flag like dash P here.
Port mapping. We have a different flag available for it to be able to.
Map some file.
To a file in the container.
Let's see how we do that. What I want to do is change this.
The default page. Welcome to engine X page. It's something else. That's my plan. I want to do that by passing on a file from here.
To the container by a V mapping dash V mapping. I'll do that now.
So here I go.
I will expand our discussion here. Put a V mapping dash V and give it some file dot HTML and map it to.
The location inside the container, which happens to be for engine X happens to be. I think it is user.
Share.
Engine X HTML. If I am not mistaken, that's the location.
But if I'm mistaken, we'll we'll debug it again. No, no big deal there. So this file dot HTML I need to create and put it in some location, right?
So that some location needs to exist on the real machine.
And that some location needs to contain that file that I'm talking about, which I don't have yet. So I need to create a new file called index dot HTML and I'll put that in some location.
On the machine I'm dealing with.
This is a machine locally sitting right next to my feet on underneath the desk, and that is the machine that will carry the some location folder and the index HTML file containing say hello.
Summer point.
That's the file I will create now. So what I'll do is go to the terminal.
Break this engine X.
Kill everything.
Come on, die with the death command.
I need to write it again apparently. So here we go. Radar car RM or don't kill it with this. This is a live machine. I cannot kill everything there. So thank goodness I didn't kill.
It's like runs.
Multiple processes are running right there. I don't want to kill them.
There are probably a huge bunch.
Thank goodness I didn't kill arbitrarily.
Bunch of processes I already run there, so I thank goodness I didn't kill them.
Having said I will leave whatever that is there running as is examine what is.
Containing engine X.
And clean out.
So there are four things that I need to like clinically kill them. So I'll kill these guys specifically, not everything.
Or I just leave the dead bodies alone and handle them later. But what I want to do now is find a folder, create a directory. I call it.
I call it some location, right? Some location there it is some location.
Now in there I need to create a file so I create that file like this.
That's the file created in that some location location.
And in this file I need to have something like hello summer part.
So I added that.
And now I can see that the file contains hello summer part. What I need to be able to see is when I visit that website.
I should see hello summer part as opposed to welcome to engine X.
And I want to do this with a volume mapping. So how do you do that? Like line number 22.
We have.
Created this file in some location on that machine. We want to map it like this.
And pass it alongside here.
And execute the process one more time.
What it will do is it will override the default file that is usually sitting in this location that looks like this.
And swap it out.
With our own index HTML that's volume mapping.
So that's what you will see now and I hope I will succeed.
You never know you may have to resort to debugging.
But it's OK.
So let's go do it.
So I'll take this.
And craft.
My next command.
Which looks like.
The first line except is a modification. The modification is.
Like that.
So what did I add? The initial line that we ran was like this.
And we added on this component.
In this section.
But rest everything else is the same, right? So this should pick up the new file and show us hello summer fun.
And that's what I expect to see. Now let's go run this command.
So I'll take that command.
Copy it.
From here line number 27.
And.
Go to my machine.
And there I have.
The some location path has to be very clear and succinct, precise. That is a requirement.
We need to call it out that it is actually in the home location.
Home folder followed by some location where the index HTML sits.
That has to be clarified, otherwise it will not know where the file is.
So here I go. I will copy this now.
And.
Paste it.
So it seems to be picking up. Let's go see whether we go to that web browser and see if it shows exactly what we expect to see by refreshing the web page.
And we see hello summer fun right there.
So that was volume mapping.
So Eric is saying need to get ready to bed. I think it is. He's on the East Coast. Eric is on the East Coast. It is bedtime for him. So we say bye bye to him, but he's saying that we can connect on LinkedIn with Nilesh, but I know him.
Everybody else.
He wants to say connect to everybody else, and so you should. Absolutely. And in fact, I would suggest that before you hang up, sign on to this website, the cloud seminar. It is a free site. It is my site.
Sign on here and you get notifications and whenever I do live sessions, they just show. So if you are if you are here, you can, you know, just just say subscribe and it is free.
So you just put in your email address and then you will form. You will be invited to a community of sorts. You can connect through that and you can of course reach out to each other, talk to each other, connect with people on LinkedIn.
There are various companies. People are here like some of you. I don't even know personally, so I would like to get to know you personally. I will do that.
So yeah, welcome. So definitely sign up with this. This this cloud seminar. Just put in your email address here and say subscribe.
That should send you send you my messages whenever I send a.
Run a session like this. I will send out a message. You will receive that in email. You will probably more likely to receive those messages on Twitter and LinkedIn and Facebook and bunch of other socials in addition to this, but it's a good idea to subscribe to this.
And by the way, here you will see that I have tons and tons of content. I've been doing this thing for 14 years. This is my 15th year.
And so you will find that you will find lots of things here.
Which may be of your interest.
I cannot find my own stuff. That's the challenge.
Where is my stuff? Maybe here.
Yeah, here I think that should should get your attention. So see, I've been doing this for 14 years, 14 plus years. So this is the 15th one. I have done 557 video presentations recorded.
865 GB of files.
10,000,000 429 652 words spoken.
This is not a joke. I actually calculated each and every word and you will tell you last me how and I'll show you how 1356 hours spoken.
And all of this is available to you for free. Yes.
All the content is free now, so you can watch it if you like, or you'd like join life sessions.
Now, how did I? How did I?
Count the words you will ask.
Well, I have the answer. I use machine learning and.
Something like chat GPT you may have heard of the same company said that creates chat GPT also created a thing called whisper.
Whisper is a transcription tool and what it does is transcribes any audio or video into plain text, basically transcription.
So now I have transcribed each of these videos, 557 of them, and I have a text file containing each and every words ever spoken.
Then I put them in a command like this and I'll show you the command I will.
This is the command I basically use. So hold on, hold on.
Mate mate and the command I would use to get that would be.
Word count.
Minus W and file all of them concatenate and pipe it to word counter and I get the answer.
So that's how I counted each and every word I ever spoke in the last 14 plus years in 557 videos by transcribing every single video I ever did.
Each of these videos like a three hour long, so that's how I did it, and it is actually available so you can see it there.
Click on it, you have access. Having said, let's go back to our doctor discussion.
So this thing is you saw volume mapping also works like that. You can map other things like you know you can limit how much memory can be allocated to a computer to to a container.
You can constrain the idea. The idea of container is to be able to put limits.
Or to contain.
To contain.
Or to limit.
That's that's the thing that is the reason why we call it containers. They are in form.
It allows you to limit things that a container can use. You can limit a container that you will get only one megabyte of memory.
That's it. I may have hundreds of GB, but I'll give you their container. You can get only one megabyte. That's it.
So that you cannot consume more than you are authorized to connect and consume to that much memory limits I can set.
That's a constraint you can put on a container. So that's another way to handle conflict or handle.
Contention between containers. So that's that's another idea. So let's go recap now and you know choose you know in a few minutes we'll actually finish the discussion.
And so we started talking about the concept of sharing sharing. How do you can constrain CPU? How do you constrain RAM?
You can also put limits on CPU and RAM just like this command for mapping a port.
Just like this command for sharing a file. You can share file resources. You can share storage resources.
You can also do network mapping like I just described.
So whatever resources the underlying computer provides, you can craftily allocate it to a given container at the runtime and make use of these things in
a combination of multiple containers running together to produce a valuable useful service that you want for your customers.
So we'll talk about how do you put multiple containers together in our next Tuesday session.
Today we just discussed the fundamentals of CPU RAM limits and I did not actually show you how to do that, but we can show that by another.
I just read the documentation and show you how to set limits. There are commands you have to pass in the command line to set CPU and RAM limits.
And same thing with file storage. You saw here file storage sharing. You saw network mapping in this command and these things I did not show you,
but I can point you to the documentation as to how you can actually limit and constrain CPU consumption and memory consumption for a given Docker container.
Having said, I'm open to questions, so you're welcome to ask if you have or you can always ask anytime you can break the discussion and ask a question if you have.
So go ahead.
Questions are welcome if you have any.
I hope you can see me.
So a question for Shandel in where are you located?
I am in Alabama.
How did you find out about this thing? I don't know you, so I would like.
A friend told me about it on Twitter.
Who?
Um, one of your followers, right? But who? I have many. I just want to know who I rather not say.
It's OK to say.
No, and so I just joined in to see just to.
You're welcome. You don't have to disclose, but I'm just curious. So yeah, I don't. I just don't like to say certain things on an open like network like I see.
Yeah, and so that is totally, totally, totally fine. You don't have to disclose, but you know, nice to meet you. I would like to say.
Yeah, if you if you feel kind of comfortable connecting with me on LinkedIn, you're welcome to do that. Oh absolutely. Thank you.
So if you want to find me on LinkedIn, you can go here.
And type in.
Let's see, what do I type? Type this linkedin.com slash in slash LV Nilesh.
That's my same as Twitter handle.
Do you follow me on Twitter or not yet?
Not yet.
Do you?
Not yet, but that's where I got the information to register.
To me, yes, yes, yes.
You can follow me wherever you feel like or don't follow me if you don't like that's OK.
Totally OK. If you if you feel comfortable talking on a one on one, you're welcome to do that.
Yeah, you're welcome to tweet me and say let's talk and we can talk one on one if you like. If you don't feel comfortable like talking to like in an open group, that's totally fine.
I'll connect with you on LinkedIn. Nice, nice, nice.
So any other questions you have about this topic before we disconnect our session today, please let me know.
I have questions for you. Go ahead.
So I don't have a question particularly on this topic, but I'm just in general curious like why are you doing these sessions for free as such?
And why are you making all your content available for everyone? Like what is your motivation behind this?
Very good question. Very, very good question. I should answer that honestly. So see, I am 56 year old.
I have had three careers. This is my third career. I built a business of my own and made enough money to retire.
I have already retired five years ago, but I still keep making money.
Do you understand that? Yeah, that's a good situation to be in and something which kind of promotes giving back type scenario.
I know. So I do these things because I like to talk. I do these things because I love technology.
I do these things because I like Linux and open source. And so people ask me to do these things that I do it.
And you know, that's the honest answer, because I enjoy doing these things. I've been doing it for 15 years.
I told you so, you know, if you don't have to join and you don't have to listen to my nonsense or you don't have to even, you know, do anything at all.
Do whatever you like. I do this because I like to do. That's the reason I started this whole company is because I like to do these things.
I left Microsoft. You probably know me, right, Amit? Yes.
No, I mean, I think the question was not why you are doing this.
I think it was more why you are doing it for free, but I think you answered that because you kind of retired and you think like you want to help people.
Maybe it's exactly I like doing my stuff, so I keep doing it. And so, you know, if I do it alone, it gets boring, right? Yeah, I would like to have people associated with me. And so I just do it with you as a perfect.
That's perfect. You already helped me on one topic that I asked you questions, so that's perfect. I am yet to experiment and build something around that.
By the way, your question is very valid. Why are you doing it for free? That's a valid, genuine question. No doubt about it. No, because not many people do it these days, so that's why it is very strange.
Yes, that is absolutely true. Yeah, I mean, I appreciate your time that that's all I want to come to, you know.
Yeah, you're welcome. Thank you so. Yeah, you're welcome to disconnect if you like. I think some people already left, but I have a question for you guys, and that is how did you like the session today? What was it that we did? Nice. What was it that we did not that you did not like? Tell me all those things.
Tell me all those things. Tell me what you did not like. Tell me what you liked. Tell me how should I change.
Go ahead.
Hey, Nilesh, this couple. Hi.
No, session went well. This is just a feedback. So on your team screen on your left, I see Nilesh Lodha then welcome to Cloud Genius. So when you start. Yeah, that should go away.
Yeah, because when you write on, you know the app, yeah, some of your text was up that yeah, but I forgot to disable it. Yeah, I'm sorry. Yeah, I thought it's like a template and doesn't go. So I just want to give that press a button here.
This is this will come back. If I go like this, it comes back and I have to like hit the buttons here on that device for it to disappear and I did not do that. Press a button. It goes away.
What this device is?
This device is a stream deck and basically it's also open source by the way. Open source companion app configures a whole bunch of things. I can even turn off my lights and all when I talk, connects audio, connects my microphone here to a device, a sound device, lots of configuration available and all open source stuff. So the device is just a button. It's just a bunch of buttons.
Okay, and yeah, yeah, that's a good point. By the way, I forgot to suppress it. I should suppress. No, I thought like it's a template, you know, in the teams of like, you know, it's not teams. It's me.
This is this is clean video. This is the clean video. Yes, yes, yes.
This is clean feed of the desktop without me. I can move around from corner to corner if you like jumping from corner to corner. Yeah, no, no, sure, sure. I don't like it.
I was like myself. It doesn't do that. Yeah, yeah, no, you're in on the middle screen. Yes, yeah, I can go real size. This is the zoomed up size. Nice. And this is the regular size. This is minimized.
And this disappeared.
Nice. So thank you for that feedback. I forgot. I should have removed it, but I didn't. No, no, no, you're good.
Yeah. So another question for the doctors, you know, mostly I've seen the doctor use cases specifically like the web based applications. Right. So what about what about the the heavy compute intensive applications, you know, like, you know, as an example, maybe
a COTS application. I mean, it's just something Docker is looking at. Yeah, yeah, yeah. So I'll show you a really heavy application. I run here right here.
Very heavy.
It has a tensorflow Kubernetes. Sorry, no, no, no. TensorFlow running here.
And this is my photos app, open source photos app. It has all the photos, albums and videos and, you know, bunch of people like that. And so this is the app that runs all the photos I have like all like probably 69 terabytes of storage.
All the pictures I ever taken in my life are here. Now it's running in a Docker container. Can you believe that?
It is running right here on the same machine that I was talking show you about the iMac, the same iMac run this. This is called photo prism. It is a heavy loaded application.
Are you sharing or I just see only you? Yeah, because we are not sharing.
That's so dumb of me. I just forget to press the right buttons.
So is the image called photo? What did you say the image is called?
Photo prism. Photo prism.
Photo prism is an open source application.
And here it is the documentation for that. And you can run it in Docker or Docker compose.
And so that's how you run it. And it contains a tons of things like here. You can see that I have a huge number of photographs.
All all family pictures. I don't want to show you the photographs, but.
But that's the idea, right? All the pictures I ever taken since I was born. Maybe probably before that. So I have them. I have them stored here. 69.
Terabytes. So thank you. Is it a lightweight application? Is it a web application?
Yes, it's a web application. Is it lightweight? No way. No, no, it requires GPU processing runs tensorflow for face detection, image detection, location mapping, layout and everything.
And it's able to do it like I have tons of such applications running on the same stupid back.
Like here. Sure, the same. Let me break this engine X.
And if you if you minimize it.
See all these apps are running or something. I don't know what they're running. I don't go and read.
It is running something. I'll show you a nice example here.
Another one. Heavy.
This is called paperless.
Paperless is an open source app.
That basically makes my life paperless.
What does it mean? Anytime I get a paper.
I use an app for paperless, which is a free open source app, but I scan it and it shows up here.
Anything any random document I receive in the mail. I want to keep it. Take a picture. Boom, it shows up here.
And it is searchable and it is open source and it runs in Docker.
It runs. Let me show you the the actual.
Execution of this.
So you so you make these apps only private to you only, right? Like, I mean, they are locally locally locally in the company inside the office.
I can expose it to outside if I want. No, no, no. Of course you don't want.
I just wondering. So yeah, yeah, this is totally local, but I run them.
And it's also heavy.
So how do you scale these apps like, you know, you mentioned other that you have a 69 terabyte of memory. So but the photos is something that you keep out on. Keep in mind.
Right. So that's something that the scalability factor you built into the configuration when you.
I'll show you the storage. Let's see.
I'll show you the storage parts. So it's a distributed system inside the home. So I'll show you that. What's the part trueness?
True.
Yeah, yeah, OK. So this is my storage system. It is detached from the Docker container. It is not on the same.
Hold on, let me find out my password.
No worries, yeah.
Yeah, so this.
Is my machine.
With store stuff I have here.
My shares if you can see I have some Unix shares.
Let's go see the shares that I have Unix shares here. Which has storage called NFS storage.
And this actually exposes all those disks that this machine carries on the local network in form of NFS NFS as a protocol of sharing files file storage file share.
Like you have in your company, probably Samba share or sip share and Microsoft share.
This is NFS share network file share Unix share or Linux share. So it exposes all the storage to anybody who wants to use it inside the home.
Not sure that this paperless and this photo prism and every other thing that I have will use the shared storage in this machine. This is a dedicated box just for storage that store stuff.
That's all it does.
Not sure, sure, sure.
So that is how I configured this one.
OK, that's good enough.
Yeah, it does.
Keep asking. I have no problem.
I'm good. Thank you.
There are various ways from this storage box. You can share. You can do Apple shares, which I don't use. You can use block shares like hard disk shares or I SCSI shares if you like.
I use the Unix NFS shares quite a bit.
There are some web dash shares that I don't use.
There are some Windows share that I have.
So that's where I you know my recordings of all the videos of my software, my sources, source code, my test and my company documents are stored in these locations.
And so all the machines that I have will mount these folders from that computer.
For example.
If I open my Finder.
You will see that this Finder has a network access to that same TrueNAS device with the folders that you're looking at.
See this recording. It is coming from here. Software coming from here. Test from here. TrueHome coming from here.
TrueHome.
Sure, so that's the storage that I use in this Macintosh, which is actually sitting on this box behind me.
OK, sure.
So I've been building these things like a like a company would.
Yeah, yeah.
And that's why you see what you know. It's not a typical home. I have like a properly configured corporate firewall and storage system and you know.
Bunch of things all within the home.
Sure, I have tons of other things like you will even see monitoring stuff, you know, like here.
This is me sitting in my office. I'm monitoring myself.
There we go. You can see my head. Yes.
Then this is my front yard.
See.
There's a truck coming in.
And going away.
And so like that I have a bunch of cameras. You know all of these are open source based products running in Docker containers. No kidding. Here we go. This is also in Docker. This thing is called. What is it called?
Home.
Bridge.
That's home bridge is a product on GitHub. You can see it.
There it is. It gives you home kit support for any device like any device that supported by Google or Alexa or whatever else. It brings it to CD.
Home bridge. Sure, sure. This I run it in a Docker container somewhere. I have several machines slide around in you know various rooms. I have various machines configured and they do Linux stuff run containers and this one of the boxes runs home bridge.
And so this home bridge looks like this from a from a this is their website. My home bridge looks like this.
My home bridge looks like this. No, not this. This is a different product home bridge.
My home bridge looks like this. I need to log in.
Come on login.
What is my login?
Home bridge there.
That's my login.
What?
What? Login can you care?
OK, view.
Copy.
Paste.
Here this is my.
Status of all the accessories I have in my home and every door has a sensor.
Every room has a temperature humidity. God knows what sensor.
They all pull together all the detail information in home bridge and it exposes it to Siri home kit and I'm able to see what's going on like somebody triggered this.
Can't buy.
You see this can't buy.
Yeah, actually the name of my robot which cleans the home.
Yeah, yeah.
No, it's it's it's a Xiaomi device. It's a Chinese.
And so lower floor is called Cantabye in the upper floor is called Adam.
Oh my God.
And so yeah, this is also Docker containers. By the way, a bunch of containers I have. I don't even know. Sometimes I forget.
It's it's they have them running. Sometimes something stops working and then I go look what's happening and then then I fix it.
And then then it starts working again, but occasionally I have to go and fix because I don't have to like I had to call myself when 800 call Nilesh.
Yeah, yeah.
What was with the drone? I think I saw something with the drone drone. Yeah, yeah, yeah, Docker image or something.
I see I see drone drone drone is I think I have running drone drone is running a CI CD.
And so there let me log in.
Come on, login, please. What do you use for CI CD? What tool?
So this is the second tool I use Jenkins.
Also, yeah, Jenkins.
Did you try go CD? I tried almost every single CD CI CD application, but.
So that is your drone dashboard.
And it has some hello Docker thingy running. I tried experimented and it's still running, but I'm not using it. I'm using this one.
This is actively used. Sure. And it does actually create my websites. It builds the websites for me. So there's a pipeline constructed and bunch of builds successful. Some failure while ago, three months ago, there was a failure.
And this was a build failure apparently, and then it keeps building stuff whenever I push something. So it does help quite a bit. That's Jenkins. It's also running in the home. Yeah, everything is mostly in the home unless I need some resources, then it goes out to Google Cloud.
So why do you do a free session? That's a good question, man. Did I answer you properly? Did I answer that question properly or not? I mean, the only thing I got is like.
You like your stuff, but I think. A lot of people like their stuff, but like why do you? Like you are sharing your time also. It's not like you're just sharing your recorded lectures, right? I mean, you're sharing your time. I mean, you're sharing your time.
Also, so I feel that. You know, sharing your time and then really see a value coming out of it would be really nice, but I maybe you don't. Do you see value coming out of it? Oh, I see it. I mean, I told you, I told you, I told you, I told you.
That question that I was stuck, you know, in the past and you answered that the peer to peer. The P2P, you know, so that was excellent. And so I'll do that. I have similar questions around how to cheaply.
Build sensors, you know, which has microprocessors so that you know we don't need even Wi-Fi antenna. Then what are the other solutions we can build? Because I think we can make very nice products out of all these.
Knowledge and you know, yeah, do these things so we I would really like to see like your lectures like how people are using it in in what sense. Yeah, I think that's a good question.
Because I think that will also be a very nice. Knowledge sharing type thing, you know, yeah. Yeah, so I will definitely show you something that you're telling me that I did not answer your question. Basically, why free that question is still unanswered, right?
Um, maybe I don't know. So a short resolution to that issue is you can pay. Yeah, I mean, I like to. I like what I want to do. I don't know. I don't know what I want to do. I don't know what I want to do. I don't know what I want to do.
What I want to do is pay with, you know, by showing you what I'm implementing with that. Yeah, that's something like that. Yeah, that that will be actually useful. I want you to actually build things and then that'll be nice. Yes, yes.
Yeah, maybe tie. Yeah, tie this to something, you know, some objectives. So that would be really. I don't have any objective, so you. I don't have no objective. I really like that that you're actually asking for ideas, because that would be really helpful.
I really like that question answer type scenarios, you know. Yeah.
really helps. I really like that question answer type scenarios,
you know. Yeah.
Appreciate that. Thank you.
Thanks Malaysia. I need to talk for another meeting. Thank you.
Thank you for the call earlier. I appreciate that. I will
follow through that and implement. I already know. Yeah,
yeah, did you try the iPhone app and it didn't work for you?
It worked for me app, but you know, then it conflicted with
the Mac address. They blocked me. So yeah, I mean, because
it's like a one to one service. But then I use a different
provider. Then I bought a you know, I have a Android TV for
but I bought like a $10 Android USB from Walmart. And then I
was able to clone and then it worked properly fine. So I see
you guys. Yeah, got it. Yeah, yeah, yeah. Nice.
I mean, yeah, with that thing, maybe you will have more ideas
how to use that service for for for your broadcast as well.
In your lectures, I have enough ways to broadcast.
But yeah, let me know if you if you need any help. Yeah, we'll
get you know, we'll jump into the call and thank you. Thank
you very much. Yeah. So let's let's let's disconnect and say
goodbye to everybody who joined today. Thank you very much. I
appreciate that. I'll see you again Tuesday. Same time. Thank
you guys. Yeah, thank you. Let me thank you. Thanks. Bye bye.
Bye everybody.

Download Transcript for 0001 Docker Fundamentals
0001-Docker-Fundamentals.m4v.txt
71 KB
download-circle
Show more...
2 years ago

The Cloud Seminar
ये निलेश किस खेत की मूली है? #0000

Summary

Who the Eff is Nilesh?

This is a recording of a spontaneous conversation with Twitter friends in the Hindi language on Twitter space.

Hit the ► button below

https://t.co/yb6SChCLFe

— PRATYUSH PAHARI - 161🔥 (@PahariPratyush) April 17, 2023
Show more...
2 years ago

The Cloud Seminar
Summary Confidently ship production cloud services like a genius ✨