 She is an open source enthusiast, currently working as a DevOps at the issue systems in a mempadat in India. So he recently completed his studies as a master's in information technology, and he has also participated a couple of times at Google Summer. So let's start. Currently the talk is in a Python tag, and it also has a Django in title, but actually the thought is more of around DevOps things. So we'll see the Django part later on, and first we'll cover the DevOps part first. So this is about me. I'm working as a junior programmer analyst at issue systems. I'm also co-organizer of Java Meetup Group in Ahmedabad. I'm also part of a code team of the JVJ Ahmedabad, and you can find more about me at Twitter and my website niquestrucker.com. So yeah, long story. So it's not really long, but we can say it's a long story. So I'll start it with one. Actually, how many of you are Hacker News fans? Like Yuri Hacker News, anyone? Okay, so many. So actually, Hacker News is a very cool thing. If you are a programmer and want to be aware of what's going on in the industry, and want to know what other people are thinking about what tools and technologies are going on, you find really nice articles. And more interesting stuff is into the comments part of the article. So one day I was reading one article. It was from the MailChimp CTO, and it says that social login buttons aren't worth it. So MailChimp tried to remove the user management functionalities from there and tried to use the social buttons, but it didn't work for them. So the CTO shared his experience, but I couldn't agree on his thoughts. So the discussion was going on, the article on Hacker News, and I went through all the comments. And it was very, really, really interesting things, like people were arguing about what should be there and what should not be there. So I put a thought process on that and tried to come up with something that I can present to people and make them like, this is really not worth it if you use it in a correct way. So another part of story is, I started my career one and a half years back. I was into internship at a startup for 31 months, and what I built is the user management functionalities for one of their projects. And then this article came up and then everything I went back to that day, like when I was working on that user management functionalities. So I spent many days designing the login and registrations and coding for the user management functionalities, and then I realized that that thing was not worth it. I could have utilized that time more efficiently, working for something that generates value for the company and for the people who are going to use the project or use the product. So I thought, why we are wasting our time behind something that is not at all important, because your first focus should be your clients. And you should be aware that how to get your client into your product. So that was the thing in my mind. And we'll talk about few more things like, I took this thing from different perspectives, so we'll see from which perspective we should look. So we believe in code reuse. So the first thing, when we start learning programming, the first thing we learn is about reusing our code. Whatever code we write should be reusable. So actually the user management functionalities are already there, but whenever a new web project comes, the first thing come to our mind is start creating a registration page, start creating a login page, and create a user table and registration table in your database. So our thoughts are lies around that thing only. We don't think about the actual thing that is going to generate the value for us and for the customers or the users of the application. So the next thing is agility. So like agile is a big word. Big word we are hearing nowadays. So everyone wants to be agile. But when you are saying you are agile and you are building something that is already there, are you actually agile or are you actually using agile in a correct way? So that was the thought process that came to my mind because everyone wants to be agile, but they are not picking up in the right way. So that's the different perspective to look at. Then the third thing is rapid development. We are living in an era of like everything is going so fast, people are coming with mobile apps, people are coming in with the new web portals, and a new thing every day we are getting a new thing every day. So the development is going very fast. And if you want to catch up that speed, you need to be doing a rapid development. Like if you attended the Drew stock in the morning, we have talked about the prototype production. So we were doing a release in three days, four days, and we were releasing a new feature every three, four days. And that was really a usable thing. So at that time we also needed the user management, we needed a user for our application, but we didn't spend time on working on user management model. Rather we spent time on creating a feature that actually generates the value for our product. And actually it was very easy. Like in three steps you can actually get a new user into your application. So we'll see that. So the next thing is we believe in mobile first. So like millions of mobile users are there, and we are targeting them. So if you are, and the another part of thing is like, if you try to do this thing for mobile platform, it becomes even more easier. So we believe in mobile first. And the next thing is, and our customers are not always. So when I'm saying this, actually in every registration forms you see, we'll ask details about the first name, last name, birth date, all those things. But that means you are not, you don't know your customer, you are trying to know him. But actually they are all there in different, different platforms. And like the best example is this conference. If I'm meeting some guy and saying it's like this name tag, I'll find out his Twitter handle and just go over the Twitter and find out more details about it. So that is already there. So why don't we use the same thing for our applications or what we are doing? So that is the one thing. So I can use Twitter or special, like Facebook logins, Facebook credentials to get new user into my applications. So why we are not doing that for our applications? So the next thing is people trust giants. Like if it comes to Google, Mozilla or Facebook, if you are providing, if you are building something around those applications, and if you are providing login through these giants, people will be interested because they know that if they are providing details to them, the details is secure with them. So they won't let it go with some random guy and they won't let it use it in a bad way. So let's see how to do it. So now we are not building a user management model for our application. But another thing is many people using this social authentication for that application. But what criteria should be taken care before considering to integrate any of the social authentication? So I will talk about few things. So if you have any questions so far in this thing, we can take one question. So there are no rules for like selecting your social authentication back end. But it's kind of common sense. There are millions of users on Facebook. So even I'm building an application. Should I integrate Facebook as a social authentication back end in my application? The question depends on like are you really, are the Facebook users really your targeted customers? So there are many different things like if you are targeting someone who is like professional and you are integrating social, let's say Facebook as a social back end in your application, they won't login into your application because they don't want to mess up with their personal identity and their professional identity. So in that case if I provide a back end which uses a back end like let's say LinkedIn, people are more likely to login in my application because my application is related to something professional and they are using their professional identity to login into my application. So that is one criteria to consider. Another thing is personal versus professional versus social identity. So like the same example, I'm building some application which helps them improve their professional lifestyle. They are more likely to use LinkedIn as a back end in my application. So LinkedIn as a login into my application. If I'm building something like which is around Facebook or Twitter, so I should integrate Facebook or Twitter as an integration. And if I'm building something which is like notification system or those kind of things, it is more likely to people will login with their email IDs because I'm providing them a digest or a reader digest or something kind of those kind of things as an output of my application. So those things needs to be considered. Then the third thing is where first or versus mobile first. So if you are targeting customers which are on mobile platform, then you need to consider like if you consider Facebook or Twitter as a back end, people are more likely to use it because it's very easy and like it's very easy for you to build and it's very easy for users to use because it's very easy to like you are logged into your Facebook account in your mobile, then you need not to input anything while login. So that is one thing. So now let's come to the Django part of this sort. So when I did it, it was really easy. I integrated the social authentication model in like three easy steps in around hour or so. So we'll see how this, I'm using a Twitter as a back end for this demo. There's a code on GitHub. I'll set the link. So first thing you need to do is whichever back end you choose, it will provide you the, you need to create an app within that back end. So in case of Twitter, you can go to apps.twitter.com and create your application. So here, if you can see, Twitter is the app which I've created for this application. There is a create a new app button. So once you click that button, you will be asked a few details to fill up and your app will be ready. So then you will be able to use Twitter as a back end into your applications. So you have just saying Twitter that I'm using your services to login my clients with your identity. So you need to provide the application name and the, this is the important thing, the callback URL. So once Twitter has done the authentication for you, it will redirect the user into some URLs so that URL you need to specify here. The step two is to configure Django to use that particular social authentication. So a few steps are required. I have used the project called Python social auth. So you just need to install the Python social auth and then you need to provide this social apps Django app default thing, the second last line into the second block into your installed blocks. And then in your authentication back ends, you need to specify social back ends at the first because Django provides the authentication back end too. But we are not using, we are using the social back end. Then you need to include the social apps URL thing into your URLs.py. And whichever back end you are using, it will provide you the secret key and the secret to use for the authentication of user. So these things you need to consider, configure. And the last thing is you just need to put this line into your login.html file. And you are ready to go. So there's a bonus step. You just need to run your applications. And let's say it's running. So I'll show you the running demo. So if you see I'm on the local host and you can see the landing page of my application. This is like login with Twitter. So once you login with Twitter, Twitter will provide you all the required details which you need to use for your application. Like you need a first name, last name, the description is coming from the Twitter, all the links are coming from the Twitter. So you can use additional functionalities from the back end. So what we did is we created an application which was like parsing resumes. So Dhruv has already talked about it. We did it using machine learning. So that required import LinkedIn profiles of the user's profile from the LinkedIn. So we integrated this. We provided social authentication with LinkedIn and we asked users to share their details with us. So in application permissions you can specify what details you require for your application to use. And we also integrated Dropbox because we didn't want to load all the data on our servers. So we asked two things from the users LinkedIn profile and their Dropbox access. And what we did is we loaded their resume from the LinkedIn and we passed it and we stored details on their Dropbox account. So we have no data of users. We just know that users are logged through LinkedIn and we are storing the details on their Dropbox account. So they can see the output of our application in their own account. So we are not taking any data from users. We are not storing it on our servers. We are storing into their personal storage. So those kind of like, parks comes with like, if you use such features from social authentication now. So, yeah, I think that is it from my side. If you have any questions surrounding. Yeah. How is it different from buffer? Because buffer also allows like, you know, Yeah, so actually you can use any of the project. I'm not, yeah. So I'm just saying that you don't need to create a user management module every time you create a new application. So it's, it was very easy for, in our case was very easy with Django. So we did it with Django. You can use like any platform if you are using Java there are libraries for this thing. If you are using any other language, there are libraries for that. Yeah. Yeah. So actually, this is the basic example. If you specify a login pipeline where you can specify what all stuff you need from the backend. So if I'm using Twitter as a backend and I need first name, last name, description, all the things. So I can specify the stuff in my login pipeline and it will load into my details. And then you can use those stuff or add more things into that. Do you still use custom login or do you keep a user option? Do you create a user or do you have to create a user? No. We don't have a create user app. Like what I would suggest is there's a browser ID provided by Mozilla. So if you use that as a backend so if your user are not there on any social profiles like LinkedIn they must be having an email account. So the Mozilla browser ID takes the responsibility to authenticate the user using the email account. So that will do the job for you. You need not to create a, like a forward password and all those things. Mozilla will take care of that thing. And it will send the link for the confirmation of profile into your email account. And once the email ID is confirmed it will send you the notification back that this is the authenticated user. And then they will be able to log in. I have done some testing of measurements. Like how many users will come to your site and go away because they cannot actually email or create the account or they don't have a Facebook account. So actually in our case we have a very targeted user base. So we don't have like option to, we have only option for login thing. We don't know who has visited our site and we don't log in. We have only login data. But if you are, we believe that if you are providing a valuable thing to your customer then they will log in. Maybe add a battle. I really want to have your account. Yeah, I can do that. Okay, okay, thank you.