 So yeah, thanks for coming along folks Basically, we're going to do a really quick look at a different web frameworks So we're going to start looking at some micro frameworks going to look at some batteries included ones I'm going to finish off with some async So yeah, just a quick introduction to who I am And if I could remember to turn my clicker on that would be good Yeah, so I'm our ambassador That's my Twitter handle. It's very imaginative. It's literally just my name and I'm Going to try and go for because it's like it web frameworks We're doing it going to the whole little world. It kind of sounded a bit like, you know around the world 80 days But Jules Vernezy So I'm going to go for like a bit of a steampunk Victorian kind of aesthetic for the whole thing So I probably should be a bit better on this image give some a hat Let's swap out those Ray vans Gotta have a bow tie if you're going Victorian and like that facial hair really needs it upgraded So yeah, so this is me. I'm a developer advocate for people who don't know what that is I literally get paid to wear branded t-shirts and hand out leaflets I do that for a company called next mo We're one of the sponsors here today. So we have a a booth actually on this floor, I think So if you haven't checked it out yet, you should we may still have some t-shirts left Hopefully go grab some swag talk to us about what we do but essentially we're just a An API company we do telecommunications API so make it really easy to add the ability to To kind of invite an SMS or voice calls and things to your own applications. So I work with this team We're Kind of a bit different than most developer relations teams and that we don't come under sales and marketing We actually come under product. We're all developers. We write all our own code So all the client libraries and things that any developers interact with they were all been written by the developer relations team You know, we we still program an awful lot to be honest as well as programming We we write a lot as well, you know, we we want to make it as easy as possible people integrate our APIs So we write a bunch of tutorials So this one uses JavaScript and the Ionic framework. This one's Microsoft, but Android and firebase Flask and Google Cloud the that peer-to-peer protocol and hug express and deployed on the glitch Sanic Django Android Swift Angular Express. We go through a lot of different Technologies at next moment because well, as I said, we we're an API company We want to like show people how they can integrate our products into whatever stack they're using but also it's kind of fun You know, we enjoy trying out new technologies. We enjoy trying out new frameworks I personally come from a background of Python and Django. I use Django for a very long time So a lot of the stuff that I first arrived there was written in Django Now I've started to branch out look ever kind of Python frameworks look at lots of JavaScript frameworks And that's what I'm going to be talking about today is the fact that like over my last year doing developer relations I've obviously worked with an awful lot of different frameworks and writing these blog posts and reproducing this content And I'm going to look at some of those that have used as you go through this. So what I'm going to build is essentially this so In order to power a lot of our APIs we use Jason We call it an next-mo conversation control object, but it's a Jason file. It's essentially just a list of actions So this one is telling a telephone call to use a synthesized voice to read out some text You know pretty straightforward and that's I'm going to build for each of these different frameworks today So it's going to be one route. That's just going to spit out some Jason, you know, so really kind of easy So the first one we're going to look at is flask So flask actually started off as an April's Fool's joke The offer of flask Was quite well known at the time for being incredibly critical of different frameworks So as neighbor's Phil's joke he decided to write his own framework a framework that did everything He hated about micro frameworks and he released it and he didn't tell anybody it was a joke He just released it on the get hub. He did a screencast He actually got like a friend of his to record the voice and stuff for it we wrote a couple of posts and things and You know, even I think even the source code was actually obfuscated when he first released it before People started asking for the source and it's not incredibly popular Probably one of the most popular micro frameworks and this is something that guy built with everything that he hated So I think they were full jokes really kind of on him Beginning up running is very straightforward It's a single file kind of micro framework, you know, so you just create a Python file We can see here that I'm just importing kind of flask I'm starting a new flask app and then my route declaration is just a decorator on a function and that function using the jsonify Flask method will set the headers correctly to say that it is a it's actually Jason that are returning It'll properly encode it and it'll then serve that up and running it again is incredibly easy You know, I've got it here telling it what the name of my file is and it's just flask run And we have that served up and ready to go So that's the first one kind of a teaser of what we're gonna be looking at today I'll put the URLs up for for each of the different frameworks as we go through them Don't worry too much about trying to like write them down or anything I'll be publishing all the slides on my Twitter anyway So next one is cherry cherry's a little bit older than flasks being around for a little bit more But it's very very similar. It's uses class-based views rather than function-based use. So here we can see I'm defining a class Just a regular kind of object and I have again a couple of decorators on the methods and I'm just returning Again another Python object We're just gonna be quickly encoded in the Jason and served up on that route So this one rather than defining the actual route on the method like I was before we're defining this Sorry and our cherry pie quick start we have our different routes and we're telling what handlers to use for those There's no special way of running this, you know, you run it with guinea corn or your point your Python file on it There's no cherry pie run etc. Like we had for flask, but it is very very similar again. So You're out for it Falcon's kind of in bit new It's really kind of geared more droids creating API. So it's You know really kind of easy to to return Jason on it. That's what it's kind of expecting You're gonna want to be doing it anyway We can see here. It's very similar to what we have a cherry pie. We're declaring a class We have an on get and then we're just returning this this object We don't even need to tell it that it's gonna be Jason code or anything it expects that because it's it's built for API's Now This is kind of where well, I'll put it live up for it falcon first. So Falcon you can kind of see some of this stuff. It's It's nice, but it's a little bit convoluted So the people behind the next one hug kind of agreed in that as well And they tried to simplify it a little bit. Now, we can see with hug It's very similar to what we had with kind of flask or what we have a cherry pie You know, it's just a function that's returning a Python object that's gonna get encoded into Jason We have a decorator that's telling you what the root is, you know, it's very compact. It's very easy to run You're not saving an awful lot of space compared to what you wear or an awful lot of code compared to what Falcon provided But that's only for the very simple example of hug Where it kind of gets more interesting is when we start looking at more complex examples So in this example, you can see I've actually got two functions that are the same name And each function is actually operating on the same URL. So they're both on this ncco root, you know, they're both Called it called ncco. Weirdly enough But whenever we actually try to call any of these URLs, you can see it's got a versions in it So the first one has got this versions equal one and the next one's got this versions of a range of two to five So whenever we call a URL now, we can just add the v1 or v2 v3 in the URL and it automatically does the versioning for us It also allows us to provide things like examples. So in the second example there the we can see I've got this f string It's going to substitute the who into our hello world that's returning and we're showing in the in our decorator that you know this Who or we're sorry, we're providing example of what who should be so we've got like who's an equal world and we're also saying in our In our method that we have this who parameter is coming through and we can actually type it as well So we're saying that it's going to be a string. It's going to be a hug type of text Now if I try to access a URL doesn't exist or I try to provide the wrong information to hug We get this lovely kind of error output in the browser You know, so it's showing us what roots are available. It's showing us what those roots are going to return It's showing us what the examples were that we provided You know, there's a lot of kind of really useful information from whenever trying to explore that that API And this is all kind of provided out of the box from hugs. It really builds upon what Falcon gives you But then extend extends it with a lot of kind of useful things that you end up building time and time again yourself in Falcon anyway So that's hug So that's our first kind of just look at micro frameworks. It's not an awful lot to them That's kind of the point of them as you can see in the code. It's you know, we're talking four or five lines each and you're up And you're running and they're really really handy in that With the micro frameworks a lot of the stuff that we do is obviously building demos I mean want to get stuff up and running really fast You know, we want just to be able people wouldn't be wondering too long about the infrastructure or the code or The things that aren't the next way PIs essentially We just want something that we can show them a couple lines of code have it running in the browser immediately And they can they can get to work and that's where where these really come in and we can see the majority of them they're looking really kind of similar and The money code that's required. They're looking very similar in hiding which they handle kind of fiber class-based views or function decorators so We've done our our quick look at the micro frameworks. I know they're Not an awful lot of code to them. That's that's kind of the point of them. So I'm going to move on then to These batteries included framework and the term term grab bars included really was kind of coined by by Django It was the first kind of batteries included, you know, everything's in there with the micro frameworks They just give you the littlest amount possible, you know, they're going to maybe give you rooting They might give you template handling and they're going to give you kind of Views and that's it, you know, everything beyond that point is up to you But with your batteries included frameworks, they're going to specify an awful lot more and they're going to provide an awful lot more and for many of them it's going to be kind of You know a convention over configuration, you know, so it's they'll have a way in which you they Prefer you to do things and if you stick to that then it normally works out pretty well So if Django We have a few different commands once it's kind of installed you've done your your pip install your pip and install etc You've got this Django admin and Django admin has a start project Which essentially is just going to build out your your initial kind of template now for anybody who used Django Probably not point nine ish to one point four maybe Whenever you did your original kind of start project and then you would do your run server It wasn't the greatest experience didn't set up your static files for you things were a little bit Difficult shall we say? Not anymore with Django now as soon as you run your do your start project and do your run server You immediately get this lovely kind of webpage already up and running for you It also has a start app. So here I'm creating a new conversation app And it's going to create a bit of a file structure for you So I've got just a print tree of that there we can see that You know it's going to create a new folder and that folders can be things around for your migrations for your date for your database for your Models for your views it really gets an entire kind of structure And that's normally in the structure most people continue to follow with Django is the one that it kind of suggests So once we have our app created we need to add it to our settings This is where we can kind of see now these these frameworks a little bit provide a lot more They need a lot more configuration as well There's a micro framework so it's like a single page that you just wrote some code in around your Python you were done with these There's going to be multiple different files any change lots of different bits need to be updated It's why we tend to avoid using these a lot in demos because you end up having to explain an awful lot of boilerplate The people but if you're using it for your own kind of major projects It's probably what I would go for rather than micro. So anyway here we're in stock. We're adding it to our installed apps We then have our URLs So you can't put the URLs directly in the URLs file What most people tend to do is have your URLs file local to each app and then Just reference that from your main URLs file. So here I'm I'm looking at I'm including these conversation URLs and then we create our view now Django does support function-based views so with You can just have a View that's going to return take a request and return a response They preferred method nice to use class-based views. They've been around for a while. They're still not By some people fully understood or fully utilized. I personally prefer them to make it a lot easier to test stuff trying to isolate things even one large function-based view for testing is problematic And the class-based views obviously makes the testing a lot easier If people are having problems trying to get their heads wrapped around how class-based views actually work There's a fantastic reference called ccbv.co.uk It lists all the different views that are in there It allows you to drill down into them, you know See exactly where they inherit from what the methods are available on them What the code of those methods are should you need to extend it yourself? It's incredibly useful I probably spend more time on that site when I'm writing Django than on the actual Django documentation itself I don't know if that says something about Django's documentation around class-based views or not But it's still a wonderful reference and I highly recommend it The other thing that we have here is I don't know if people spot it is whenever I'm turning this JSON response So I'm overriding the regular kind of response that we have coming back of this get handler and instead I'm returning JSON And I do have this cf equals false That's always a major red flag whenever you're having to do cf equals false on any method Probably not something you want to be doing lightly Maybe want to be considering first and the reason for that is is I'm actually returning a a array as part of my JSON Now there is a Vulnerability around returning a JSON file that has an array at the root So if you were if you return a JSON file where essentially it's a dictionary at the root You know, so it's an object rather well or both objects, but where it's a dictionary rather than the rain And you include that in a script tag from a on your own website, so Kind of cross to me an exploits that won't render, you know, it's not going to execute anything You can't just include a a JavaScript object on the page using an external tag It's not going to actually run anything However, if you have an array at the top level Well, the you can then overwrite the array function in JavaScript and have that read out the contents of it So essentially the the array becomes like your JSON P your function wrapper around around that code So there's a great article that goes into this in a lot much detail, but why it's a really bad idea It's also why things like Django by default if you try to To return a JSON response that has an array as the root element It's not gonna let you do it. You're gonna have to actually specify that. Hey, I know what I'm doing I'm a I'm a big person. I'm a professional Please let me shoot myself in the foot. It's okay But you're still gonna have to let them to actually kind of go. This is my responsibility and I will I'll handle any repercussions from it Okay, so once we get a review then we're gonna reference that in our in our URL So this is the actual URLs for the the app itself We can see we've got this app name equals conversation. I'm renaming the year the actual URL. This is just it's a nicety It allows you then if you if you reference the net URL throughout your code rather than happen to To like reference the URL itself or the roots you can just do your conversation colon ncco I mean, so if you change the roots or your URLs change at any point You don't need to go through all your coding and reach and change all your hard-coded paths so we've been all together, you know, we've got our Modifications to our settings file. We've got our two different URLs files that need to be updated And then we've got our view itself which is actually doing it all the hard Kind of work all the heavy lifting so there's a bit more to it The actual the once you get down to it the views are very similar to what we've seen before It's just we now need to kind of place them within the structure provided from Django So there's a lot more boilerplate to update. There's a lot more kind of configuration settings to set There's obviously gonna be a lot more code as well when you look at all the generated code from Django start project You know, it's gonna create an awful lot of stuff a lot of kind of things It's gonna require to run but Yeah, I'll give you the URL for it as well most people probably were familiar with Django anyway The other one that we've got then a lot on our kind of our bar is included is permit so Permits got a long history. I think actually the clone people might be down there Like sponsoring so they're probably to give you a lot more of the background on it and I can But their slogan is start small and Finish big You know, so and then you really can so with permits it can act like a micro framework, you know You can have it all in one page You can define your your views in there using your decorators to tell you want to render some Jason Configure app and you're done, you know, there's not an awful lot more code there than what we saw for the likes of Falcon for example or cherry pie, you know, it's it's a single function per view That's just got a decorate on it, you know, it really can start that that small if you want But they've got this whole thing about finishing big So if you need it just for doing really quick kind of micro framework stuff You can do it that way if you're starting off on a larger scale project Then they actually use cookie cutter for doing their templating So rather than having like a built-in kind of admin like Django does and there's using cookie cutter There's a bunch of different cookie cutters out there depending upon the type of project went start I'm just using their their default permit starter. So you can see I've Done my cookie cutter here. I've got this Pippin M install Of all the dependencies one of the things that I find a little bit strange Probably just my my own way of approaching these is the fact that permit actually Packages everything as a Python package. So your project then becomes deployable as a Python package itself You know, it's just gonna have its own set up the pie in there Which is gonna list this kind of requirements, etc Whenever you're doing your development, you can see that I've in Pippin installed that with dash e to show that You know, I'm still actually in development on this so I can still modify that the code is contained within there and have it executed And then it comes with all the configuration is done in any files, you know, so you'll have a development any a production any For one for all your different environments And we have this P serve to allow you then to start serving the files up And once very similar to Django once you've run this kind of P serve on your your different configuration file Then it's going to stand up a server for you and present you with this lovely web Very red web page in this instance Now once if we're using it as a in this finished big kind of way So as a much larger kind of framework rather than using it as a micro framework on a single page Then we're very similar to what we had with With Django, and we've got a couple of different configuration files to edit and it's one. They actually put it all in your init.py And so we have this pyramid.config We're telling you where to lift its settings from we're setting up our roots So we don't have separate URLs that pyre anything like that for it sold on within this configuration And then we're telling it just in this instance just to scan our our views file and find any any views that are in there So switch from using just a single kind of Function of a decorator in this one in this instance now instead. We're actually switched to a class-based view Again, it has the same kind of benefits as what I was outlining with Django We set a lot easier to test and it makes it a lot easier to To override different methods and to create mix-ins etc And we can see here that I have created a really simple kind of roots that again is just returning This Python object is going to be automatically encoded for main adjacent returned with the the correct application type So the URL for pyramid there and if we look at the two kind of side-by-side We can see even with Pyramids kind of finished big mentality. There's not a huge amount of difference between the two So pyphons or Django's is a little bit more scattered three different files some of that's not really necessarily required That's just my personal preference Things like having an additional URLs that pie It's not actually needed. You could just put it all in your in your First URLs. In fact, there's actually a project out there that will turn Django into a single file Framework much the same as flask or anything were micro frameworks. It's disgusting So the the good thing about any of these kind of large frameworks over the micro frameworks is that There is conventions in there, you know, there is ways you should follow to get things done There's lots of books and things out there that explain Vagango two scoops is probably the main one, you know, I'll go through all the best practices and Hopefully if you approach one Django project, you know, it should look very similar to any other Django project You're gonna be structured very much the same way You're gonna your models are gonna be using the same ORM in order to access a database You know, your views are gonna be structured in very similar ways Okay, you might have some use functional base use rather than class base use But again, it should all be in a logical kind of place And you should be able to navigate the directory structure and find what you need very quickly Micro frameworks, they're slightly different in that. Well, they just give you the very very basics and leave the rest up to yourself And for developers sometimes that even for larger projects, that seems like a great idea you know, we don't want to be constrained by Other people's ways of doing things sometimes, you know, we've got this grand grand plan of what we're gonna build You know, we're gonna pour a heart and soul into this project and it's gonna be fantastic And we're not gonna make any of the mistakes that Django made or any mistakes that pyramid made, you know Our use case is unique to us So we're gonna start with the most basic framework we can and then we're gonna like start adding in all the different Things that we need that are written exactly for us and just the way that we need them You know, we're not gonna worry about the fact that you know, obviously Django is a great framework There's a lot of work to be put into it But concessions have probably had to be made because well, it's it's not geared exactly to what we need So instead you you start off a micro framework and then you might add in like sequel alchemy Or you might start adding in like some of your own ORM stuff Of course, these are all interesting problems and that's what developers like to do So that's why we do it. Why would we use somebody else's ORM? You know when it might not do it exactly the way we want So we write our own and we integrate that instead and well, that's the interesting part Documentation is not interesting. So it's all documentation. Nobody does documentation so the next developer comes along and they Maybe they like what you did. Maybe they don't like what you did, you know, they might Like it meant it slightly differently or they may not quite understand the way we have meant it There's no documentation. So they might use it slightly differently to what you'd use that They might not even see what you've done previously and they might start a completely new way of accessing the database And then a third developer comes along and they actually they don't want to rule their own So they just go and like Google it and take the first stack overflow answer and start doing it that way instead You know and suddenly this lovely framework that you designed in your head starts to look a little bit different You know, I've seen this happen as well in Countless different places where they go. We're gonna we're not gonna use Django because you know, we don't like the way in which it handles Views or we're not gonna use pyramid because we don't like the way in which it's its package for deployment Or we're not gonna use, you know, list your favorite frameworks here, you know We're gonna we're gonna build it ourselves because we can do better, you know probably not Okay, so we're running for this really quickly, but we're now on to our async So we're gonna start off with probably a granddaddy of all async ones, which is tornado the benefits of async Most people think of immediately is kind of speed Tornado is actually slower than Django Considerably slower than Django if you're talking about first response times to render a piece of Jason to the to the browser It's considerably slower like I think a factor of two But where it really excels is in concurrency And also in accuracy So whereas with Django as your number of concurrent users in increases your error rate also increases With tornado it tends to stay pretty consistent and pretty low as well You know, so it's gonna be able to handle requests might be slightly slower But it's gonna handle a lot more concurrent requests with a lot lower failure rate So let's look at how tornadoes kind of set up then Again, it's gonna be pretty straightforward It's much the same as a lot of the micro frameworks. You can use kind of last class based views You can structure it a lot differently. It doesn't really put a lot of kind of conventions around you here We can see I'm just defining a a class with a get method I'm configuring my my roots again, and I'm starting my application Now this Will work, but if we look at this section here We can see it's not as you're gonna work for next one next one requires that to be a list Even though there's one only one action occurring in there. It has to be a list Now if I try turning that into a list and running it in tornado, we're gonna get this You know, it's gonna throw an exception because of that that security vulnerability that we talked about earlier It's a really nice exception actually and it explains why it's going to do it But it's trying to stop me from introducing a security vulnerability in my code You know, but as you've talked about earlier like I will find a way to ship myself into food My tornado doesn't have a way of me just to go, you know, see if equals false and allow me to do it It just blocks it, you know, it's It's saying that this is a security vulnerability. You should not be doing this. We're not gonna let you do it But it's it's a Python class, you know It's got all this lovely we can go in we can look at the actual The code for it. We can see it's got all this error checking in there, you know, it's looking to ensure that That it's either bytes a unicode type or a dictionary, you know, it's making sure that it's not going to be an array There's an array is going to return that that exception But we're professionals You know error checking is for people who do not have confidence in their code So we're gonna get rid of all of that, you know, and because it's a class-based view We can just strip all that stuff out. We can overwrite their their right method. We can remove all that all that Error checking, you know, let's we will be wholly and solely responsible for introducing all the security vulnerabilities We want in our code. Damn it. It's our code. And if we want to be insecure, we will be So we remove all their error checking It now doesn't even check to see what kind of thing we're passing it It's just gonna be everything's gonna be Jason from now on. That's that's that's fine We're just gonna always return Jason And we we run this line. It's gonna work So it's returning them Now the the last kind of one that we're we're gonna look at and I know we've gone through seven already I really wish I brought some of that water up on the desk. Um, yes, the last one we're gonna look at is Is Sonic So whenever I first came across Sonic, I actually completely and artfully dismissed it. Thank you so much. Um, I Thought it was a joke to be honest I it came up in like hacker news. I went to the get hub page and this is their mascot Very enterprise friendly You know, I have for people who don't wear it's just really bad drawing of Sonic and hence Sonic But yeah, it actually completely turned me off from the project, you know And even when you start off the terminal like you get this in the terminal like they've really gone all in on this mascot And It I I immediately assumed it was a joke. I thought okay, so somebody's done basically a flask, but for async And I I completely dismissed it like I didn't really look into it anymore I didn't go back to it for probably like 18 months until at another conference somebody was raving about this this Framework I completely forgotten all about it. I'm whenever I went to look it up. I was like seriously This is still a thing. That's a long-running joke But no, it's actually great And I don't know if this is I don't know the moral here is like I ever don't judge a book by its cover or maybe branding matters I'm not sure but Yeah, I know I know people sometimes have a go at the whole Django like Pegasus unicorn type thing and how it's not You know, it's not enterprise friendly. It's not very professional Yeah, it could be worse Yeah So Sonic came up by basically because of UV loop and so in in Python from 3.4 I think we've had kind of async There's not a drop-in replacement for kind of the built in a second Python call UV loop. It's a lot faster And Sonic really just came as a way to take full advantage of that Much that we have before it's really simple to get up and running, you know, we're we're just defining a a Function and we're going to add our decorator on that to say what the root should be So it's always gonna be this ncco for any of our our calls here And then we just we just run it from the command line with our our Python Hello.py. I think we call these and we're gonna get this similar this output. Thankfully this I should say this only appears If you've got debug set to true We don't get the lovely mascot if and your production when we're running it. So it's not quite so bad But it can also support class-based views So we can see here that It looks very similar to some of the ones we've had, you know, I've defining our class We have this and in this case, so we're using async So we've got this async methods that's gonna return our JSON for us and then we can just run that as we did before So our sonic one Now as I was going through Writing the code for all eight of these different ones By the way, that's that's that was a fantastic idea of mine. Let's let's let's do a conference talk I need to write the same code eight bloody times That's going to be right in the code as you start to notice that it's really similar So here is how we define our our root in flask and here is it in sonic and Here is it in hug You know, we've got very very similar You know, okay, so it's app dot root app dot root hug dot get, you know, but it's it's a very similar kind of structure You know, and I said those are things like a pyramid, you know, so whenever we're defining our roots there, okay It's not app dot root, but it's again, it's you know, if you come figure in a root name or whenever we're looking at Our class base views, you know, we've just got these get methods and then on tornado We've got a get methods and on Django. We've got a get method and on falcon. We've got an on get You know again very similar And then I started noticing things like someone falcon there. We've got this API add root as well You know, which kind of looks like tornadoes, you know first to configuring it was kind of looks like pyramids for configuring it You know throughout all these like the actual similarities to many of them were well very similar So it's it's kind of an odd one then if you know What's how do you choose a trimmer to use or which one's the better one and to be honest? I've Got very little kind of differentiation between them Django would be really my favorite to go for for batteries included because I know it best If I'd started out my career writing pyramid, I'd probably be up here like using pyramid for most of my examples instead Whenever I come to use a micro framework again I'll normally use flask because that's the one I use first, you know, it's it's not because I couldn't Articulate that so my reasoning for it why I prefer flask over cherry pie or why I would use flask over Hug or or over falcon because it's it's not a case of oh It's this particular feature is a killer feature or that particular way that does it is the way that I really enjoy It's just it's the one I use first, you know, and I probably should explore that myself a little bit more because I probably am missing out on on better ways of doing things because I You know like most people I've stick with what's familiar now I stick with what I know and but what running a lease is turns out that actually You know the examples are at least the basics of each one is so similar that that reskilling or learning the different frameworks Didn't take very long at all But I guess that's kind of like the whole point of hyphen, you know There should be one and hopefully only one way of doing things apart from if it's string concatenation Then we should have lots of different ways apparently Okay, so I've been our ambassador. This has been my talk on eight different web frameworks Hopefully you got a chance to to Absorb a little bit of each one. I know there was an awful lot of code going through very very quickly there and I will post the I have a github repository that has everything I went through all the code examples With like explanations how to run each one and so that's all up on my github I'll tweet it out on our ambassador. I'll also put it on. I should probably go right about to the start there was a lot of slides and Just one or two here, and there we go. Here we go. Keep going. Oh, right and On next most account as well. So we have a next with dev account I'll put all the links to the slides links to get hub repositories Also the different blog posts that went through earlier, you know, so ones of Angular, Swift, Android, Django, Sanic, you know Express or peer-to-peer stuff all that kind of blog posts all up on our next one. I come to Again, they're going to be using all different frameworks. I've talked about today This is actually one from Mark. So mark is one of my colleagues You may have seen him. He's the other dude in the kill walking about who doesn't wear it quite so well So he's going to be talking actually around today, but about have to so I Recommend catching that as well if you can Other than that, we're going to be on the booth for the for the rest of the conference Please come say hello, and you've got any questions about like any of the frameworks and things that I went through I will try my best to answer them But as I said a lot for a lot of them, I'm really just a beginner as well I've just been using them because I thought they were interesting and trying to get some example code and stuff like that for people but yeah, so Again, that's my my Twitter Please fall along. I'll tweet out all links and things and thank you very much for your time Thanks, Aaron. Hey, that was quite nice of of you You mentioned at the end that you Probably would just go for flowers go just go for general because you're good got experience there When you look at the frameworks from a more Company or from a business decision, would you consider or have you looked into any? I don't know security Handling of those frameworks and how they compare to each other would that be a thing where you would make? decision-based on Yeah, so for me really the Reason that I probably would pick Django again and this was probably people will be able to tell me that all the frameworks of this I'm sure but is their deprecation schedule The way in which they handle kind of releases Stability of the actual framework is in my mind Crucial for really any kind of company and that feeds into the security stuff I've seen companies where they just feel to upgrade because there's too many breaking changes or the way in which the different frameworks have handled kind of Deprecation off of API's etc. Has been so bad in the past that they're really scared to do any kind of upgrades And that means they end up not doing even security upgrades as well So for me the fact that they have a stable release schedule a Published and deprecation schedule they stick to And the handling of their actual releases both security and and feature It's probably why I would stick with Django My question is is it you Could recommend some API over another if you plan to have a JavaScript framework managing the pronoun and more the backend site handled by some Django Python API and the other question Can you say again the website that you are using for Django reference? Yeah, sure. I'll I say I'll just put the let's get that slide back up sitting here somewhere Well, I have to move thing off Cholists up back on my face Let's just exit our list and let's just go direct with this slide. I kind of forgot just how many slides actually had Yeah Yeah, so for anybody you can't read it. It's cc bv code UK And it's a reference for Django's class piece views. It's incredibly useful so the first part of your question is is so if you're Essentially using the back end just as an API like so driving either. I'm assuming like react or or view your angular And The all of the ones we're looking at there had the ability built in to respond of Jason for some of them like flask It required using like jsonify rather than like the right regular response ones like Falcon are are really built to be API kind of back ends so you don't even need to specify that you're returning Jason as soon as it detects that the Your it's the object that you're returning from your view is a Python object rather than like one of their response objects Or just plain text. It's gonna And assume that you want that encoded this Jason anyway So most of the modern frameworks will be geared towards that that kind of way of working Django obviously is slightly different in that In order to turn it into really a API kind of back end you're gonna need to use something like Django REST framework Which is really mature If he's excessively on several kind of large projects and things so I've highly recommend that if you wanted to go Kind of the Django root Again, even with the async ones They're gonna be geared towards being API back ends as well You know so things like tornado again if you just provide it with a a Python object It's gonna assume that you want a Jason response So I wouldn't worry too much about you know whether or not they're gonna act as a Just isn't as an API gateway All of them are capable of doing that and they all handle it really well again It's just looking for whichever one kind of suits your your style or your requirements best Rob Hello Hi, thank you for the talk It's pretty nice being someone spending time to fight eight times the same thing and as he said there's a difference between But there is no real life code Yeah Usually So for For flask I know that they do flask has got a very mature kind of plug-in Kind of ecosystem around it. It's it's one of those ones as well that for things like database database access That there tends to be you know a preferred method of doing it So if you're giving around you're gonna find for flask, it's gonna be flask It's gonna be sequel welcoming and it's gonna be flask alchemy You know those those things combined is normally when most people do the database access But because the whole idea is it just does the minimum mind required and allows you to configure the rest yourself And I have come across situations where people will be using flask and using sequel alchemy But then they've written their own or M and top of it rather than using flask alchemy, etc For falcon and and hug which is based upon falcon. I'm not overly sure. I know they're fairly new I've not done a lot of research into what's available for them at the moment I do know for Most of the different frameworks to win through as well. They do have like for cherry pie essentially especially they have a very mature kind of Ecosystem around different extensions for it. So they will have a preferred method of doing it again The second for your question is if I've seen any major comparisons between all of them I haven't normally what you'll find is comparisons between maybe one or two, you know one or three like Okay, this is how you get database access and flask and this is how you do it in cherry pie You know or something I'll look at like okay, so here is that how you will do the preferred method in falcon But I've not seen so many do it for like all of the micro frameworks No problem