BEGIN:VCALENDAR VERSION:2.0 PRODID:-//FLASKCON2021//flaskcon.com// WEBSITE:https://flaskcon.com ORGANIZER;CN="Abdur-Rahmaan Janhangeer";ROLE=Adminstrator:MAILTO:flaskcon@ gmail.com BEGIN:VTIMEZONE TZID:UTC CONFERENCETIMEZONE:UTC USERSTIMEZONE:UTC END:VTIMEZONE BEGIN:VEVENT SUMMARY:Community stream onboarding DESCRIPTION:None DTSTART;VALUE=DATE-TIME;TZID=UTC:20211204T084500Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211204T090000Z DURATION:PT15M URL:https://flaskcon.com/y/2021/schedule/activity_3?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Flask-Multipass - A pluggable authentication framework for Flask b y ADRIAN MONNICH DESCRIPTION:Authentication using username and password may be easy\, but i f you prefer letting some third party handle it\, that may be tricky: You are now dealing with protocols like OAuth\, OIDC or SAML - and all of them have their own pitfalls. And depending on what you use\, you may even hav e to change because the provider you are using is changing their APIs.\n\n Flask-Multipass provides an easy-to-use wrapper around this complexity. Th is talk will go into details on why the extension was created\, which case s it covers (and which it doesn't - it's not another Flask-Login!)\, and h ow its flexibility allows easy implementation of new authentication method s. DTSTART;VALUE=DATE-TIME;TZID=UTC:20211201T090000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211201T092500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_4?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Debugging flask application within a docker container using VSCode by ASHOK TANKALA DESCRIPTION:We all love Docker which helps us a lot in deploying our appli cations without worrying about what OS we are using and what software vers ions we have. As a developer you come across a bug every now and then. To solve a bug debug comes very handy. In this talk\, I would love to show yo u one of the ways to debug your flask application within a docker containe r using VSCode.\n\nTo do that first\, we will build a small flask applicat ion and write a Dockerfile for that and run the application. When we want to debug that application we need debugpy package which I don't want to pu t it in my final docker image so instead of building a different Dockerfil e for each purpose we will get to know a bit about Docker multistage build concept and update the current Dockerfile and debug our flask application . DTSTART;VALUE=DATE-TIME;TZID=UTC:20211201T093000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211201T095500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_5?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Building Scalable APIs Using Flask and Docker by EMMA DONERY DESCRIPTION:Flask is a Python micro-framework for web app development. Mic ro-frameworks are the opposite of full-stack frameworks\, which also offer additional modules for features such as authentication\, database ORM\, i nput validation and sanitization\, etc. Flask is known as a micro-framewor k because it is lightweight and only provides components that are essentia l. It only provides the necessary components for web development\, such as routing\, request handling\, sessions\, and so on. \n\nOn the other side\ , Docker is an open source platform for building\, deploying\, and managin g containerized applications. It enables developers to package application s and APIs into containers. Containers are standardized executable compone nts combining application source code with the operating system (OS) libra ries and dependencies required to run that code in any environment. They s implify the delivery of distributed applications\, and have become increa singly popular as organizations shift to cloud-native development and hybr id multicloud environments. During this talk we will combine the power of flask and Docker to developer highly performing and scalable APIs. We wil l be using slides and demos to make it more engaging. \n\nThe ability to d evelop robust Application Programming Interfaces (APIs) requires scalabili ty. Scalability\, when employed appropriately\, will become a critical com ponent not just in a business\, but also in the entire industry. It is bec oming more demanding as the programs we use these days develop. They also need to process large amounts of data\, which is where scalability comes i n handy. APIs are the fundamental mechanism that separates backends from f rontends by allowing teams to focus on the fundamental value proposition w hile allowing customers to achieve their goals by connecting them to funct ionality and data. Hence\, raising the need for developing APIs which acco mmodates growth. DTSTART;VALUE=DATE-TIME;TZID=UTC:20211201T103000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211201T105500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_7?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:HTMX + Flask: Modern Python Web Apps\, Hold the JavaScript by MICH AEL KENNEDY DESCRIPTION:There has been a strong drumbeat to move away from server-side programming and lean more and more heavily on JavaScript\, especially for dynamic and interactive web sites. With the recent release of HTMX\, ther e is another path Python developers can choose. Use declarative programmin g on the client side with nearly pure HTML and CSS and double down on back -end Python (Flask\, Django\, FastAPI\, and other frameworks).\n\nIn this session\, Michael Kennedy will present some of the cleanest Flask code you have seen while at the same time adding rich interactivity on the front-e nd -- all the while with no JavaScript in side. It's a new\, and likely be tter\, way to think about building dynamic Python web apps. DTSTART;VALUE=DATE-TIME;TZID=UTC:20211202T140000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211202T142500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_12?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Testing Flask Applications with pytest by PATRICK KENNEDY DESCRIPTION:Testing a Flask application helps ensure that your app will wo rk as expected for your end users. This talk provides an introduction to using pytest for testing Flask applications.\n\nBefore diving into how to use pytest\, this talk explains what should be tested in a Flask applicati on. Next\, detailed examples are covered on how to write unit and functio nal test functions with pytest that are specific to Flask applications. D ocumentation of the tests is also highlighted using the GIVEN-WHEN-THEN a pproach.\n\nAfter writing tests\, running the tests using pytest (with dif ferent options) is presented to demonstrate how easy and powerful pytest i s. Examples include verbose mode\, running only the last failed tests\, a nd running specific test cases.\n\nNext\, the concept of fixtures in pytes t is presented and detailed examples of how to initialize the state of a F lask application are covered. This section includes properly initializing a Flask application to avoid not having the application context created.\ n\nFinally\, the idea of code coverage is introduced and an example of run ning coverage.py on a Flask application is demonstrated. DTSTART;VALUE=DATE-TIME;TZID=UTC:20211202T153000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211202T155500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_16?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Dockerizing Flask For Production by NICO PLYLEY DESCRIPTION:Part 1 - Flask App:\nCreating a basic Flask application that w ill display dynamic data as well as serve static images. Showing that this example can be used in all use cases.\n\nPart 2 - Docker: \nThis part wil l show how to set up Docker and create your very own docker image from the Flask app and run it. We will also set up environment variables to set di fferent entry points to our application to run in development (with debug mode) and in production. That way\, you do not need to change your setup e very time you update your app.\n\nPart 3 - uWSGI:\nHere we will learn what a WSGI server is\, how to set up uWSGI for our application\, and how to m ake sure it runs in Docker.\n\nPart 4 - Docker Compose w/ Nginx & Database :\nNow we will take everything we learned and use Docker Compose to run ou r application with one command. Here we will also set up the Nginx proxy m anager to serve our website and a Database (required by the Nginx proxy ma nager). You will also learn how you can run multiple applications on the s ame port using the proxy manager. With this method\, you would be able to run Flask in the back-end and any front-end library such as React altogeth er or multiple Flask applications. DTSTART;VALUE=DATE-TIME;TZID=UTC:20211202T163000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211202T165500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_18?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Making Location-Searchable Sites Using Geocoding and Elasticsearch by JAY MILLER DESCRIPTION:When searching for things on the internet\, there are 2 factor s that determine the quality of a search result\, Accuracy and Relevance. While searching for things "In Your Area" may be a solution\, some topics (like where you want to go to college) can be a little more nuanced.\n\nIn this talk shows how I use Elasticsearch's accuracy and Google Places API to show college options in a requested area. The example project is a coll ege search app that gives you the ability to look for schools based on an area and indicators like acceptance rates and expected student load debt.\ n\nI'll show how to perform Places autocorrect query and then use the retu rned information to curate search results within Elasticsearch. DTSTART;VALUE=DATE-TIME;TZID=UTC:20211202T170000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211202T172500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_19?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Workshop: Packaging a Flask App: Deep Dive Into The Wheels of Pack aging by Alexander Hultner DESCRIPTION:None DTSTART;VALUE=DATE-TIME;TZID=UTC:20211203T090000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211203T103000Z DURATION:PT1H30M URL:https://flaskcon.com/y/2021/schedule/activity_20?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Workshop: Building An Awesome SASS App by Sumukh Sridhara DESCRIPTION:None DTSTART;VALUE=DATE-TIME;TZID=UTC:20211203T103000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211203T120000Z DURATION:PT1H30M URL:https://flaskcon.com/y/2021/schedule/activity_21?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Chat: Building And Shipping Flask Side Projects Fast With Abhishek Kaushik DESCRIPTION:None DTSTART;VALUE=DATE-TIME;TZID=UTC:20211204T090000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211204T093000Z DURATION:PT30M URL:https://flaskcon.com/y/2021/schedule/activity_23?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Chat: Experience Learning Flask With David Carmichael DESCRIPTION:None DTSTART;VALUE=DATE-TIME;TZID=UTC:20211204T093000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211204T100000Z DURATION:PT30M URL:https://flaskcon.com/y/2021/schedule/activity_24?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Chat: How To Leverage Flask To Win Hackathons by Anush Krishna V DESCRIPTION:None DTSTART;VALUE=DATE-TIME;TZID=UTC:20211204T103000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211204T110000Z DURATION:PT30M URL:https://flaskcon.com/y/2021/schedule/activity_26?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Chat: Pallets Maintainers Closing Remarks DESCRIPTION:None DTSTART;VALUE=DATE-TIME;TZID=UTC:20211204T110000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211204T113000Z DURATION:PT30M URL:https://flaskcon.com/y/2021/schedule/activity_27?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Hassle Free Desktop Apps with Flask by ALIN CLIMENTE DESCRIPTION:Flaskwebgui just uses threading underneath to start a flask se rver and the browser in app mode (for chrome). \n\nIt has some advantages over flask-desktop because it doesn't use PyQt5\, so you won't have any is sues regarding licensing and over Eel because you don't need to learn any logic other than Flask.\n\nGithub link: https://github.com/ClimenteA/flask webgui\n\n\nMotivation: \n\nAt first console apps were enough to solve wha t I needed\, but in time more complex problems appeared that needed a user interface which does a lot of stuff.\n\nFor something small (some inputs\ , buttons..) Tkinter does the job even though it looks uglyish.\n\nOther a lternatives for more complex stuff are PyQT\, PySide\, wxPython\, Kivy\, w hich are good options and you can make nice GUIs with them\, but.. I still found it pretty hard to get started. \n\nI like Flask - it was very easy to learn and I wanted to use it everywhere. Learning new libraries takes t ime and time is something we can't buy (yet).\n\nI looked for a solution t o make the user interface in html/css/javascript with a backend in Flask.\ n\n I found pywebview which was close of what I needed\, but for whatever reason some javascript code didn’t got executed as it should have(js wor ked in a normal browser\, but not in pywebview window). I also had issues when I tried to freeze it with Pyinstaller — all of them probably having a solution somewhere\, but I just wanted to ship it and leave it.\n\nThat 's how flaskwebgui was `born`.\n\n DTSTART;VALUE=DATE-TIME;TZID=UTC:20211201T113000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211201T115500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_28?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Enabling multi-tenancy with werkzeug by ABDEALI (ALI) KOTHARI DESCRIPTION:This talk is a case study about how the web-application I am b uilding at work (in Corridor Platforms) started as a simple web applicatio n. But over time\, we wanted to enable some cool features like:\n - Enable a “try” capability for users to try the application out before buying \n - Create an isolated sandbox environments for users\n - Enabling traini ng environments for new user onboarding\n - Creating a SaaS offering for m ultiple users\nAnd so on. \n\nWe were initially handling this at an infras tructure level\, but using separate processes/databases/etc. For each “i solated instance” we needed to create. But it was obvious that this had a lot of gaps:\n - Creating and maintaining multiple instances was a techn ology nightmare for administrators\n - Managing configuration consistency across instances was difficult\n - Every instance needs a certain set of m inimum requirements (CPU\, RAM\, etc.)\n\nWe decided to venture into the f oray of multi-tenant applications\, and there are a lot of resources avail able on how this could work. But handling this along with other dependenci es celery\, database\, upload-management\, etc. was not easy.\n\nSo\, we w ent with a middle ground approach of how we can toggle between multiple fl ask applications using werkzeug’s DispatcherMiddleware and LocalProxy - which enabled us to create a working multi-tenant application within a few hours!\n\nWe will go into 2 methods that we attempted to do:\n\n**Approac h #1**: Creating multiple separate flask applications for each tenant\nUsi ng DispatcherMiddleware\, we can create a proxy (similar to nginx reverse- proxy) for each tenant\, and let the flask application for each tenant man age what it needs to do.\nThis can be done using URL prefixes - similar to how google applications like gmail handle it.\n\n**Approach #2**: Using a single flask application for all the tenants\, but different configs\, co nnections\, etc.\nHere\, we create a separate LocalProxy (similar to how c urrent_app\, request\, g\, etc.use it) - to switch based on the tenant tha t is currently being used.\nThis approach is a bit more delicate as multip le aspects need to be handled. Each of the tenant-related resource needs t o be handled individually: Database connections\, settings\, cache connect ions\, celery brokers\, LDAP connections\, etc. - and many more depending on what your web application uses.\nWhile this is more optimal\, it is als o more effort to implement.\n\nAlong with these\, we can also enable multi -tenancy at a database level with some sqlalchemy magic. Sqlalchemy’s Qu ery class and compiler hooks allow us to mimic a database multi-tenancy wi thout actually having multiple table schemas. Which again\, reduces the ef fort of handling multiple database schema and migration efforts.\n\nBy the end of the talk\, the participants will have some good insight into the i nternals of werkzeug and sqlalchemy - and also see a visible use case of h ow an application can be converted into a multi-tenant application with mi nimal effort.\n DTSTART;VALUE=DATE-TIME;TZID=UTC:20211201T100000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211201T102500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_29?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Application config management: Lightweight but enterprise-ready by ABDEALI (ALI) KOTHARI DESCRIPTION:Any good application uses configurations to power it. Some org anizations use simple environment variables powered by shell scripts\, som e use large scale enterprise applications which manage their configuration s.\nAs an application developer\, you need to ensure you use the right too l for the job - something that is easy enough to use for small applicatio ns\, but that can give you a lot of flexibility for larger applications to o.\n\nIn this talk\, we go through a case study where my company’s softw are “Corridor Platforms” was undergoing a security audit from one of t he largest international banks. And how we upscaled our configuration mana gement to handle enterprise level requirements within a matter of days.\n\ nThis talk will go into some methods of classifying common configurations and what needs to be thought through for each of them (with examples using dynaconf). For example:\n - Based on usage:\n - Infrastructure config s - Which are required before your application starts\n - Application behavior configs - Which modify capabilities in your application\n - Based on source:\n - Externally managed - Fetching configs on the fly from external sources like Vault\n - User configs - Allowing users to modif y some behaviors of your application\n - Secret configs - Encryption metho ds to handle configurations\n\nWe touch upon configuration management meth ods like:\n - Grouping strategies - Handling dev/testing/production settin g groups\n - Validators - Validating the configurations in a generic way\n - Merge strategies - How to handle levels of configuration files and merg ing them\n - Formats for storage - Storage formats like json/yaml/.py file s/etc.\n - Dynamic loading strategies - Avoiding application restarts or d owntimes to load configurations\n\nWhile the talk goes in depth with the m ethods we used to handle these cases with dynaconf\, we will also discuss comparisons of dynaconf with other well known packages which provide confi guration management. Specifically:\n - Flask’s configuration management\ n - Traitlets\n - Configparser\n - And others\n DTSTART;VALUE=DATE-TIME;TZID=UTC:20211201T110000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211201T112500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_30?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Building Secured Flask Apps by RANDY DUODU DESCRIPTION:In this talk\, we will discuss essential security consideratio ns you must follow to create a secured Flask app.\nWhat we will accomplish during this talk:\n - We will use the DevTools in our browser to read re sponse data from our server.\n - Create a security considerations checkli st which will verify if we have achieved goals.\n - What security conside rations we will tackle and how to implement them in Flask.\n - What packa ges we can use to secure our Flask apps.\n - The outcome after implementi ng the security tips then marks our checklist.\n - We will then perform s ome webpage testing to check our security score.\n DTSTART;VALUE=DATE-TIME;TZID=UTC:20211202T143000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211202T145500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_32?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Improve the efficiency of your Flask app's frontend by RANDY DUOD U DESCRIPTION:In this talk we will discuss some performance tips you can app ly to improve your Flask app's frontend.\nWhat we will accomplish during t his talk:\n - We will use the lighthouse tool in the browser's DevTools t o measure the performance of our app and how we can improve our performanc e score.\n - What performance tips to look at and how to implement them i n our Flask app.\n - We will then do some webpage testing to check our pe rformance score. DTSTART;VALUE=DATE-TIME;TZID=UTC:20211202T150000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211202T152500Z DURATION:PT25M URL:https://flaskcon.com/y/2021/schedule/activity_33?tz=UTC END:VEVENT BEGIN:VEVENT SUMMARY:Workshop: Managing Containerized Applications Using AWS Fargate by Nwani Victory DESCRIPTION:None DTSTART;VALUE=DATE-TIME;TZID=UTC:20211203T120000Z DTEND;VALUE=DATE-TIME;TZID=UTC:20211203T130000Z DURATION:PT1H URL:https://flaskcon.com/y/2021/schedule/activity_35?tz=UTC END:VEVENT END:VCALENDAR