WEBVTT

0
00:00.480 --> 00:05.460
Hey guys, welcome to 100 Days of Code. And today we are on day 29,

1
00:05.760 --> 00:08.760
where we're going to be building a password manager.

2
00:09.270 --> 00:11.610
So we're going to be doing this using tkinter.

3
00:11.880 --> 00:16.620
And the real inspiration for this project came about because I was trying to

4
00:16.650 --> 00:16.880
register

5
00:16.880 --> 00:21.880
for a website where it asked for a password that was just insanely

6
00:22.460 --> 00:27.020
complicated, something along these lines, or it has to be really long.

7
00:27.020 --> 00:29.510
It has to include lots of different things,

8
00:29.840 --> 00:34.130
it can't match your previous passwords. It just has a whole bunch of rules

9
00:34.610 --> 00:39.610
and I really struggled coming up with a password that actually match all of their

10
00:39.680 --> 00:42.110
requirements. And by the time that I came up with it,

11
00:42.410 --> 00:44.420
I've already forgotten what the password was.

12
00:45.080 --> 00:49.070
One of my favorite blogs is Coding Horror by a guy called Jeff Atwood.

13
00:49.250 --> 00:52.100
And you might not know him by name,

14
00:52.130 --> 00:55.520
but you will actually have used something that he's made.

15
00:55.730 --> 00:58.130
He is one of the founders and original creators

16
00:58.130 --> 01:00.350
Stack Overflow

17
01:00.380 --> 01:03.230
which I'm sure by now you're well familiar with.

18
01:03.650 --> 01:08.650
And even he was talking about how password rules are just really terrible.

19
01:09.290 --> 01:13.730
They're so long and they're so complicated and they've even inspired

20
01:13.760 --> 01:16.400
a really good XKCD comic,

21
01:16.820 --> 01:20.270
which essentially tells the truth that through 20 years of effort,

22
01:20.270 --> 01:23.570
we've successfully trained everyone to use passwords that are hard for humans to

23
01:23.570 --> 01:27.380
remember but easy for computers to guess. This is the crazy state of things.

24
01:28.340 --> 01:31.640
So we're going to be creating a program to combat that.

25
01:31.880 --> 01:35.690
And it's going to be called MyPass, our password manager,

26
01:36.230 --> 01:40.220
and we're going to use it to store and generate passwords.

27
01:40.700 --> 01:43.820
For example, if I wanted to create an account on App Brewery,

28
01:44.300 --> 01:48.770
then I enter the name of the website so that I know what this password is for,

29
01:49.130 --> 01:53.990
I put in my email, and username is already prepopulated in my password

30
01:53.990 --> 01:58.670
manager. And then all I have to do is to either come up with a password

31
01:58.700 --> 02:03.500
that is hopefully not terrible, but I can obviously never remember,

32
02:03.830 --> 02:08.830
or I can use the builtin generate password to just generate me a very complex,

33
02:09.530 --> 02:14.530
very long password with all of the required numbers and symbols and all of that.

34
02:15.200 --> 02:18.170
And once I'm done with that, then I can click add,

35
02:18.620 --> 02:21.830
and I get a popup asking me if this is okay.

36
02:22.490 --> 02:24.980
And if that all looks good, then I click Yes

37
02:25.190 --> 02:28.610
and that data gets added to a text file,

38
02:28.640 --> 02:30.530
which I have on my computer.

39
02:30.980 --> 02:35.750
So this is not an internet-based service and you keep everything locally on your

40
02:35.750 --> 02:36.583
computer,

41
02:36.770 --> 02:41.180
which some people feel is a lot safer than using a third-party service

42
02:41.180 --> 02:43.400
like LastPass or whatever else.

43
02:44.420 --> 02:48.350
So this is what we're trying to build and it's got some really neat features.

44
02:48.680 --> 02:52.280
For example, it's got some basic validations. So if you, for example,

45
02:52.280 --> 02:56.690
leave one of the fields empty and you click add, you get a popup that tells you,

46
02:56.720 --> 03:01.030
please don't leave any of the fields empty. Or if you generate a password,

47
03:01.210 --> 03:06.210
then you can actually immediately use it by pasting it. What's happening behind

48
03:06.250 --> 03:09.130
the scenes is as soon as I click on generate password,

49
03:09.460 --> 03:14.440
then my password is saved onto my clipboard and I can paste it into the password

50
03:14.440 --> 03:16.810
field on the website I'm trying to sign up for.

51
03:18.340 --> 03:20.320
This is what we're going to be building today.

52
03:20.410 --> 03:23.410
And it's going to use everything you've learned about tkinter

53
03:23.830 --> 03:26.680
and we're going to be learning some new things that you can do with 

54
03:26.680 --> 03:28.930
tkinter as well. Once you're ready,

55
03:29.020 --> 03:31.600
head over to the next lesson and let's get started.