SlideShare a Scribd company logo
1 of 25
Download to read offline
Snakes on the web!
an overview of developing web
applications in .!
2014 kickstart Tech-Talks @kudanai!
hi…sssssss…!
•  Naail Abdul Rahman!
–  a.k.a. @kudanai (http://kudanai.com)!
•  Freelance developer!
–  Specializing in!
•  back-end systems!
•  Mobile applications!
•  Web applications!
•  … in that order!
–  not so much!
•  UI/design/front-end stuff…!
•  …and part time lecturer!
–  Villa college, Clique College.!
2014 Kickstart Tech-Talks @kudanai!
– B.Sc (Physics, Math, CS)!
– M.Sc (Software Engineering)!
– Plenty of non-formal education!
– … been around for a while now.!
2014 Kickstart Tech-Talks @kudanai!
Full Disclosure!
•  I love Python!
–  Use it for practically everything!
•  … IF I can get away with it.!
•  BUT…!
–  no delusions here!
•  Python has its moments!
•  It’s a choice!
•  After years of messing around with other languages.!
•  …also!
–  By “web”, I don’t necessarily mean the world-
wide-web.!
2014 Kickstart Tech-Talks @kudanai!
2014 Kickstart Tech-Talks @kudanai!
Python!
•  1989 as a successor to ABC!
–  Guido Van Rossum!
–  It’s been around for a while.!
•  Philosophy (Zen of Python, PEP 20)!
-  Beautiful is better than ugly!
-  Explicit is better than implicit!
-  Simple is better than complex!
-  Complex is better than complicated!
-  Flat is better than nested!
-  Sparse is better than dense!
-  Readability counts!
-  …!
2014 Kickstart Tech-Talks @kudanai!
Python!
•  What it has going for it…!
–  Really easy to learn!
–  Good for pretty much anything, really!
–  General purpose programming!
–  Really descriptive!
–  Good congruence with mathematical conventions!
–  Excellent data structures!
–  Really good standard library!
–  Excellent, beautiful documentation!
–  Awesome community!
–  Python3 and its break from backwards compatibility.!
2014 Kickstart Tech-Talks @kudanai!
Python!
–  Excellent package management!
–  Alternative interpreters!
•  Jython, Iron Python etc…!
•  What’s not so good about it!
–  Interpretation lag!
–  Speed, in certain situations!
–  Was never really designed for web stuff anyway…!
•  Hosting support and stuff is limited, but on the rise.!
–  A bit harder to deploy (as opposed to, say, PHP)!
–  Direct database interactions can be a bit clunky!
–  Not so great (right now) for real-time stuff!
2014 Kickstart Tech-Talks @kudanai!
Python!
•  Who uses it?!
–  Google!
•  A large part of Google internals are written on python, like Groups,
Maps, Gmail, Blogger!
–  Reddit!
•  Rebuilt on python ~2005!
–  Youtube!
–  Digg!
–  Dropbox!
–  Instagram!
–  Pinterest!
–  FriendFeed!
–  Quora!
–  … to name a few!
2014 Kickstart Tech-Talks @kudanai!
Python for the web!
•  What’s available?!
–  DBAPI, libraries, ORM’s, template engines and
so forth…!
–  Frameworks and stuff!
•  Zope3, Pyramid/Pylons, Django, Flask, Bottle, web2py,
Grok, so on and so forth…!
•  Hosting support and stuff!
–  OOTB Support!
•  Support on Apache, Nginx!
–  PAAS support!
•  Start a flame war…!
2014 Kickstart Tech-Talks @kudanai!
What’s available!
•  Databases!
–  Backbone of most modern web applications!
–  Support is pretty great.!
–  Supported databases!
•  Postgres!
•  MySQL!
•  IBM DB2!
•  MSSSQL!
•  Oracle!
•  SAP DB!
•  ODBC Stuff!
•  ADO Stuff!
•  SQLite!
•  BerkeleyDB!
•  MongoDB!
2014 Kickstart Tech-Talks @kudanai!
What’s available!
•  Libraries!
– Extensive Python library set!
•  Can be installed locally as part of the project itself!
– Package management via pip!
– Isolate environments via Virtualenv!
•  Keep packages and even interpreter independent
for multiple deployments!
•  Built-in to Python3!
2014 Kickstart Tech-Talks @kudanai!
What’s available!
•  Template engines!
–  Mako, Chameleon, Cheetah, Wheezy, Genshi,
Jinja…!
–  Django template engine!
•  Inspired Jinja!
•  Also inspired things like AngularJS!
–  Very similar.!
–  There are literally hundreds out there.!
•  Other stuff!
–  LESS/SASS compilers!
2014 Kickstart Tech-Talks @kudanai!
What’s available!
•  ORM’s!
– Bazaar, forgetSQL, SQLAlchemy, Django,
Axiom!
– Healthy pick…!
2014 Kickstart Tech-Talks @kudanai!
What’s available!
•  SQLAlchemy!
–  One of the best out there!
–  Used by:!
•  Reddit!
•  Yelp!!
•  Mozilla!
•  OpenStack!
•  Fedora!
•  Dropbox!
•  Surveymonkey!
•  Sourceforge!
–  Never touch SQL stuff…!
2014 Kickstart Tech-Talks @kudanai!
Frameworks!
•  Zope3!
– The granddaddy of python frameworks!
– Been around since 1999!
– Batteries included!
•  Provides configurable modules for!
–  Authentication!
–  Templating!
–  DB handling!
–  Routing etc…!
–  I8n!
–  ZODB!
2014 Kickstart Tech-Talks @kudanai!
Frameworks!
•  Pylons/Pyramid!
– Pylons!
•  Collection of tools rather than particular tech!
•  Pyramid is one of these!
– Pyramid!
•  Minimalist framework inspired by Zope, Django
and Pylons (the original)!
•  Designed to be modular!
–  Pick which engines to use!
–  Eg: popular config is Pyramid + SQLAlchemy + Jinja2!
2014 Kickstart Tech-Talks @kudanai!
Frameworks!
•  Flask!
– “micro” framework!
– plug in what you need!
•  By default uses jinj2 for templating!
•  Free to pick DB interaction!
–  SQLAlchemy is popular!
– Really good at doing RESTful stuff!
– Integrated unit-testing (nose)!
– Very little overhead, so will fit pretty much
anywhere where python can run!
2014 Kickstart Tech-Talks @kudanai!
Frameworks!
•  Django!
–  By far the most popular!
–  Seriously batteries included!
–  HUGE community!
•  Massive library of drop-in modules!
–  ORM (which inspired SQLAlchemy)!
•  Can support SQLite, Postgres, MySQL, MSSQL!
–  Automatic, customizable admin!
•  Can handle CRUD on models!
•  Manage users, permissions on a per model basis!
–  Template engine (inspired Jinja, AngularJS)!
2014 Kickstart Tech-Talks @kudanai!
Frameworks!
•  Tie-in with the front-end!
–  Almost all these are MVC style applications!
–  Front-end is defined by the templates (usually)!
–  Relies on Apache/Nginx etc… to serve static
media!
•  Can leverage this for very robust rich applications!
–  Rapidly deploy REST back-ends using Flask/Django etc..!
–  REST drop-ins can leverage model definitions quite nicely!
–  Deploy Single Page apps over static channels!
2014 Kickstart Tech-Talks @kudanai!
Deployment!
•  Python Support!
– Hosts that provide VPS and a Python install!
•  Configure through CGI/FastCGI!
–  Not optimal, but possible!
– Python friendly hosts are increasing!
•  Site5, BlueHost, HostMonster, etc… work well!
– PAAS!
•  Heroko, DotCloud, Pythonanywhere!
!
2014 Kickstart Tech-Talks @kudanai!
Deployment!
•  Apache / Nginx!
– Support python deployments through!
•  fastCGI!
•  WSGI interface via mod_wsgi!
–  Web Server Gateway Interface!
–  Communication between server and Python framework!
–  Recommended!
–  … Synchronous!
2014 Kickstart Tech-Talks @kudanai!
Deployment!
•  Real-Time apps become messy!
– WSGI is blocking, and synchronous by
definition.!
– uWSGI (and other implementations) are
coming around to it.!
2014 Kickstart Tech-Talks @kudanai!
Deployment!
•  Asynchronous stuff!
– Greenlets!
•  Combining WSGI with Gevent!
•  A bit “hackish” TBH!
– Tornado!
•  Developed by FriendFeed, maintained by
Facebook!
•  Very robust!
2014 Kickstart Tech-Talks @kudanai!
Q&A!
Thanks!
!
Don’t forget to follow @kudanai on
twitter!
2014 Kickstart Tech-Talks @kudanai!

More Related Content

Viewers also liked

Web architecture - overview of techniques.
Web architecture - overview of  techniques.Web architecture - overview of  techniques.
Web architecture - overview of techniques.Ruslan Shevchenko
 
Inpac Dev Co V011809 V2
Inpac Dev Co V011809 V2Inpac Dev Co V011809 V2
Inpac Dev Co V011809 V2Paul Allen
 
1-01: Introduction To Web Development
1-01: Introduction To  Web  Development1-01: Introduction To  Web  Development
1-01: Introduction To Web Developmentapnwebdev
 
HRMPS 13 (MIDTERM)Chapter 5 Managed services
HRMPS 13 (MIDTERM)Chapter 5   Managed servicesHRMPS 13 (MIDTERM)Chapter 5   Managed services
HRMPS 13 (MIDTERM)Chapter 5 Managed servicesBean Malicse
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introductionshaojung
 
01 04 - android set up and creating an android project
01  04 - android set up and creating an android project01  04 - android set up and creating an android project
01 04 - android set up and creating an android projectSiva Kumar reddy Vasipally
 
Introduction to Basic Concepts in Web
Introduction to Basic Concepts in WebIntroduction to Basic Concepts in Web
Introduction to Basic Concepts in WebJussi Pohjolainen
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introductionshaojung
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기Ji Heon Kim
 
WEB APPLICATION VULNERABILITIES: DAWN, DETECTION, EXPLOITATION AND DEFENSE
WEB APPLICATION VULNERABILITIES: DAWN, DETECTION, EXPLOITATION AND DEFENSEWEB APPLICATION VULNERABILITIES: DAWN, DETECTION, EXPLOITATION AND DEFENSE
WEB APPLICATION VULNERABILITIES: DAWN, DETECTION, EXPLOITATION AND DEFENSEAjith Kp
 
Introduction to Android Development: Before Getting Started
Introduction to Android Development: Before Getting StartedIntroduction to Android Development: Before Getting Started
Introduction to Android Development: Before Getting StartedAhsanul Karim
 
Web 2.0 At Work - Simple And Social Collaboration Between Coworkers
Web 2.0 At Work - Simple And Social Collaboration Between CoworkersWeb 2.0 At Work - Simple And Social Collaboration Between Coworkers
Web 2.0 At Work - Simple And Social Collaboration Between CoworkersAcando Consulting
 
Web Development Ppt
Web Development PptWeb Development Ppt
Web Development PptBruce Tucker
 
Web Application Development Fundamentals
Web Application Development FundamentalsWeb Application Development Fundamentals
Web Application Development FundamentalsMohammed Makhlouf
 
The History Of The Internet Presentation
The  History Of The  Internet  PresentationThe  History Of The  Internet  Presentation
The History Of The Internet Presentationdgieseler1
 

Viewers also liked (20)

Ttay8 Ppt 01
Ttay8 Ppt 01Ttay8 Ppt 01
Ttay8 Ppt 01
 
Web Standards
Web StandardsWeb Standards
Web Standards
 
Overview Of Web 2.0
Overview Of Web 2.0Overview Of Web 2.0
Overview Of Web 2.0
 
Web architecture - overview of techniques.
Web architecture - overview of  techniques.Web architecture - overview of  techniques.
Web architecture - overview of techniques.
 
W3 c validation
W3 c validationW3 c validation
W3 c validation
 
Inpac Dev Co V011809 V2
Inpac Dev Co V011809 V2Inpac Dev Co V011809 V2
Inpac Dev Co V011809 V2
 
1-01: Introduction To Web Development
1-01: Introduction To  Web  Development1-01: Introduction To  Web  Development
1-01: Introduction To Web Development
 
HRMPS 13 (MIDTERM)Chapter 5 Managed services
HRMPS 13 (MIDTERM)Chapter 5   Managed servicesHRMPS 13 (MIDTERM)Chapter 5   Managed services
HRMPS 13 (MIDTERM)Chapter 5 Managed services
 
Web App Infrastructure
Web App InfrastructureWeb App Infrastructure
Web App Infrastructure
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
01 04 - android set up and creating an android project
01  04 - android set up and creating an android project01  04 - android set up and creating an android project
01 04 - android set up and creating an android project
 
Introduction to Basic Concepts in Web
Introduction to Basic Concepts in WebIntroduction to Basic Concepts in Web
Introduction to Basic Concepts in Web
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
 
WEB APPLICATION VULNERABILITIES: DAWN, DETECTION, EXPLOITATION AND DEFENSE
WEB APPLICATION VULNERABILITIES: DAWN, DETECTION, EXPLOITATION AND DEFENSEWEB APPLICATION VULNERABILITIES: DAWN, DETECTION, EXPLOITATION AND DEFENSE
WEB APPLICATION VULNERABILITIES: DAWN, DETECTION, EXPLOITATION AND DEFENSE
 
Introduction to Android Development: Before Getting Started
Introduction to Android Development: Before Getting StartedIntroduction to Android Development: Before Getting Started
Introduction to Android Development: Before Getting Started
 
Web 2.0 At Work - Simple And Social Collaboration Between Coworkers
Web 2.0 At Work - Simple And Social Collaboration Between CoworkersWeb 2.0 At Work - Simple And Social Collaboration Between Coworkers
Web 2.0 At Work - Simple And Social Collaboration Between Coworkers
 
Web Development Ppt
Web Development PptWeb Development Ppt
Web Development Ppt
 
Web Application Development Fundamentals
Web Application Development FundamentalsWeb Application Development Fundamentals
Web Application Development Fundamentals
 
The History Of The Internet Presentation
The  History Of The  Internet  PresentationThe  History Of The  Internet  Presentation
The History Of The Internet Presentation
 

Similar to Snakes on the Web; Developing web applications in python

Workflows in the Virtual Observatory
Workflows in the Virtual ObservatoryWorkflows in the Virtual Observatory
Workflows in the Virtual ObservatoryJose Enrique Ruiz
 
How Open Source / Open Technology Could Help On Your Project
How Open Source / Open Technology Could Help On Your ProjectHow Open Source / Open Technology Could Help On Your Project
How Open Source / Open Technology Could Help On Your ProjectWan Leung Wong
 
From a student to an apache committer practice of apache io tdb
From a student to an apache committer  practice of apache io tdbFrom a student to an apache committer  practice of apache io tdb
From a student to an apache committer practice of apache io tdbjixuan1989
 
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4jRobotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4jKevin Watters
 
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...Lucidworks
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsUwe Korn
 
Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Christian Heilmann
 
Curating and Preserving Collaborative Digital Experiments
Curating and Preserving Collaborative Digital ExperimentsCurating and Preserving Collaborative Digital Experiments
Curating and Preserving Collaborative Digital ExperimentsJose Enrique Ruiz
 
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishContent Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishJani Tarvainen
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1Derek Jacoby
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesAlfresco Software
 
Making Effective Prototypes
Making Effective PrototypesMaking Effective Prototypes
Making Effective PrototypesMatthew Ho
 
Building a real time html5 app for mobile devices
Building a real time html5 app for mobile devicesBuilding a real time html5 app for mobile devices
Building a real time html5 app for mobile devicesTony Abou-Assaleh
 
2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdfColm Dunphy
 
Build Accessibly - Community Day 2012
Build Accessibly - Community Day 2012Build Accessibly - Community Day 2012
Build Accessibly - Community Day 2012Karen Mardahl
 
Integrating Ipads into the Classroom: Secondary Schools
Integrating Ipads into the Classroom: Secondary SchoolsIntegrating Ipads into the Classroom: Secondary Schools
Integrating Ipads into the Classroom: Secondary SchoolsSpectronics
 
Markup languages and warp-speed documentation
Markup languages and warp-speed documentationMarkup languages and warp-speed documentation
Markup languages and warp-speed documentationLois Patterson
 
Lois Patterson: Markup Languages and Warp-Speed Documentation
Lois Patterson:  Markup Languages and Warp-Speed DocumentationLois Patterson:  Markup Languages and Warp-Speed Documentation
Lois Patterson: Markup Languages and Warp-Speed DocumentationJack Molisani
 

Similar to Snakes on the Web; Developing web applications in python (20)

Workflows in the Virtual Observatory
Workflows in the Virtual ObservatoryWorkflows in the Virtual Observatory
Workflows in the Virtual Observatory
 
How Open Source / Open Technology Could Help On Your Project
How Open Source / Open Technology Could Help On Your ProjectHow Open Source / Open Technology Could Help On Your Project
How Open Source / Open Technology Could Help On Your Project
 
From a student to an apache committer practice of apache io tdb
From a student to an apache committer  practice of apache io tdbFrom a student to an apache committer  practice of apache io tdb
From a student to an apache committer practice of apache io tdb
 
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4jRobotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
Robotics, Search and AI with Solr, MyRobotLab, and Deeplearning4j
 
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
The Intersection of Robotics, Search and AI with Solr, MyRobotLab, and Deep L...
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
 
Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date.
 
Curating and Preserving Collaborative Digital Experiments
Curating and Preserving Collaborative Digital ExperimentsCurating and Preserving Collaborative Digital Experiments
Curating and Preserving Collaborative Digital Experiments
 
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ PublishContent Management Systems and Refactoring - Drupal, WordPress and eZ Publish
Content Management Systems and Refactoring - Drupal, WordPress and eZ Publish
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best Practices
 
Making Effective Prototypes
Making Effective PrototypesMaking Effective Prototypes
Making Effective Prototypes
 
DjangoSki
DjangoSkiDjangoSki
DjangoSki
 
Building a real time html5 app for mobile devices
Building a real time html5 app for mobile devicesBuilding a real time html5 app for mobile devices
Building a real time html5 app for mobile devices
 
2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf2023-My AI Experience - Colm Dunphy.pdf
2023-My AI Experience - Colm Dunphy.pdf
 
Clojure at ardoq
Clojure at ardoqClojure at ardoq
Clojure at ardoq
 
Build Accessibly - Community Day 2012
Build Accessibly - Community Day 2012Build Accessibly - Community Day 2012
Build Accessibly - Community Day 2012
 
Integrating Ipads into the Classroom: Secondary Schools
Integrating Ipads into the Classroom: Secondary SchoolsIntegrating Ipads into the Classroom: Secondary Schools
Integrating Ipads into the Classroom: Secondary Schools
 
Markup languages and warp-speed documentation
Markup languages and warp-speed documentationMarkup languages and warp-speed documentation
Markup languages and warp-speed documentation
 
Lois Patterson: Markup Languages and Warp-Speed Documentation
Lois Patterson:  Markup Languages and Warp-Speed DocumentationLois Patterson:  Markup Languages and Warp-Speed Documentation
Lois Patterson: Markup Languages and Warp-Speed Documentation
 

Recently uploaded

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 

Recently uploaded (20)

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 

Snakes on the Web; Developing web applications in python

  • 1. Snakes on the web! an overview of developing web applications in .! 2014 kickstart Tech-Talks @kudanai!
  • 2. hi…sssssss…! •  Naail Abdul Rahman! –  a.k.a. @kudanai (http://kudanai.com)! •  Freelance developer! –  Specializing in! •  back-end systems! •  Mobile applications! •  Web applications! •  … in that order! –  not so much! •  UI/design/front-end stuff…! •  …and part time lecturer! –  Villa college, Clique College.! 2014 Kickstart Tech-Talks @kudanai!
  • 3. – B.Sc (Physics, Math, CS)! – M.Sc (Software Engineering)! – Plenty of non-formal education! – … been around for a while now.! 2014 Kickstart Tech-Talks @kudanai!
  • 4. Full Disclosure! •  I love Python! –  Use it for practically everything! •  … IF I can get away with it.! •  BUT…! –  no delusions here! •  Python has its moments! •  It’s a choice! •  After years of messing around with other languages.! •  …also! –  By “web”, I don’t necessarily mean the world- wide-web.! 2014 Kickstart Tech-Talks @kudanai!
  • 6. Python! •  1989 as a successor to ABC! –  Guido Van Rossum! –  It’s been around for a while.! •  Philosophy (Zen of Python, PEP 20)! -  Beautiful is better than ugly! -  Explicit is better than implicit! -  Simple is better than complex! -  Complex is better than complicated! -  Flat is better than nested! -  Sparse is better than dense! -  Readability counts! -  …! 2014 Kickstart Tech-Talks @kudanai!
  • 7. Python! •  What it has going for it…! –  Really easy to learn! –  Good for pretty much anything, really! –  General purpose programming! –  Really descriptive! –  Good congruence with mathematical conventions! –  Excellent data structures! –  Really good standard library! –  Excellent, beautiful documentation! –  Awesome community! –  Python3 and its break from backwards compatibility.! 2014 Kickstart Tech-Talks @kudanai!
  • 8. Python! –  Excellent package management! –  Alternative interpreters! •  Jython, Iron Python etc…! •  What’s not so good about it! –  Interpretation lag! –  Speed, in certain situations! –  Was never really designed for web stuff anyway…! •  Hosting support and stuff is limited, but on the rise.! –  A bit harder to deploy (as opposed to, say, PHP)! –  Direct database interactions can be a bit clunky! –  Not so great (right now) for real-time stuff! 2014 Kickstart Tech-Talks @kudanai!
  • 9. Python! •  Who uses it?! –  Google! •  A large part of Google internals are written on python, like Groups, Maps, Gmail, Blogger! –  Reddit! •  Rebuilt on python ~2005! –  Youtube! –  Digg! –  Dropbox! –  Instagram! –  Pinterest! –  FriendFeed! –  Quora! –  … to name a few! 2014 Kickstart Tech-Talks @kudanai!
  • 10. Python for the web! •  What’s available?! –  DBAPI, libraries, ORM’s, template engines and so forth…! –  Frameworks and stuff! •  Zope3, Pyramid/Pylons, Django, Flask, Bottle, web2py, Grok, so on and so forth…! •  Hosting support and stuff! –  OOTB Support! •  Support on Apache, Nginx! –  PAAS support! •  Start a flame war…! 2014 Kickstart Tech-Talks @kudanai!
  • 11. What’s available! •  Databases! –  Backbone of most modern web applications! –  Support is pretty great.! –  Supported databases! •  Postgres! •  MySQL! •  IBM DB2! •  MSSSQL! •  Oracle! •  SAP DB! •  ODBC Stuff! •  ADO Stuff! •  SQLite! •  BerkeleyDB! •  MongoDB! 2014 Kickstart Tech-Talks @kudanai!
  • 12. What’s available! •  Libraries! – Extensive Python library set! •  Can be installed locally as part of the project itself! – Package management via pip! – Isolate environments via Virtualenv! •  Keep packages and even interpreter independent for multiple deployments! •  Built-in to Python3! 2014 Kickstart Tech-Talks @kudanai!
  • 13. What’s available! •  Template engines! –  Mako, Chameleon, Cheetah, Wheezy, Genshi, Jinja…! –  Django template engine! •  Inspired Jinja! •  Also inspired things like AngularJS! –  Very similar.! –  There are literally hundreds out there.! •  Other stuff! –  LESS/SASS compilers! 2014 Kickstart Tech-Talks @kudanai!
  • 14. What’s available! •  ORM’s! – Bazaar, forgetSQL, SQLAlchemy, Django, Axiom! – Healthy pick…! 2014 Kickstart Tech-Talks @kudanai!
  • 15. What’s available! •  SQLAlchemy! –  One of the best out there! –  Used by:! •  Reddit! •  Yelp!! •  Mozilla! •  OpenStack! •  Fedora! •  Dropbox! •  Surveymonkey! •  Sourceforge! –  Never touch SQL stuff…! 2014 Kickstart Tech-Talks @kudanai!
  • 16. Frameworks! •  Zope3! – The granddaddy of python frameworks! – Been around since 1999! – Batteries included! •  Provides configurable modules for! –  Authentication! –  Templating! –  DB handling! –  Routing etc…! –  I8n! –  ZODB! 2014 Kickstart Tech-Talks @kudanai!
  • 17. Frameworks! •  Pylons/Pyramid! – Pylons! •  Collection of tools rather than particular tech! •  Pyramid is one of these! – Pyramid! •  Minimalist framework inspired by Zope, Django and Pylons (the original)! •  Designed to be modular! –  Pick which engines to use! –  Eg: popular config is Pyramid + SQLAlchemy + Jinja2! 2014 Kickstart Tech-Talks @kudanai!
  • 18. Frameworks! •  Flask! – “micro” framework! – plug in what you need! •  By default uses jinj2 for templating! •  Free to pick DB interaction! –  SQLAlchemy is popular! – Really good at doing RESTful stuff! – Integrated unit-testing (nose)! – Very little overhead, so will fit pretty much anywhere where python can run! 2014 Kickstart Tech-Talks @kudanai!
  • 19. Frameworks! •  Django! –  By far the most popular! –  Seriously batteries included! –  HUGE community! •  Massive library of drop-in modules! –  ORM (which inspired SQLAlchemy)! •  Can support SQLite, Postgres, MySQL, MSSQL! –  Automatic, customizable admin! •  Can handle CRUD on models! •  Manage users, permissions on a per model basis! –  Template engine (inspired Jinja, AngularJS)! 2014 Kickstart Tech-Talks @kudanai!
  • 20. Frameworks! •  Tie-in with the front-end! –  Almost all these are MVC style applications! –  Front-end is defined by the templates (usually)! –  Relies on Apache/Nginx etc… to serve static media! •  Can leverage this for very robust rich applications! –  Rapidly deploy REST back-ends using Flask/Django etc..! –  REST drop-ins can leverage model definitions quite nicely! –  Deploy Single Page apps over static channels! 2014 Kickstart Tech-Talks @kudanai!
  • 21. Deployment! •  Python Support! – Hosts that provide VPS and a Python install! •  Configure through CGI/FastCGI! –  Not optimal, but possible! – Python friendly hosts are increasing! •  Site5, BlueHost, HostMonster, etc… work well! – PAAS! •  Heroko, DotCloud, Pythonanywhere! ! 2014 Kickstart Tech-Talks @kudanai!
  • 22. Deployment! •  Apache / Nginx! – Support python deployments through! •  fastCGI! •  WSGI interface via mod_wsgi! –  Web Server Gateway Interface! –  Communication between server and Python framework! –  Recommended! –  … Synchronous! 2014 Kickstart Tech-Talks @kudanai!
  • 23. Deployment! •  Real-Time apps become messy! – WSGI is blocking, and synchronous by definition.! – uWSGI (and other implementations) are coming around to it.! 2014 Kickstart Tech-Talks @kudanai!
  • 24. Deployment! •  Asynchronous stuff! – Greenlets! •  Combining WSGI with Gevent! •  A bit “hackish” TBH! – Tornado! •  Developed by FriendFeed, maintained by Facebook! •  Very robust! 2014 Kickstart Tech-Talks @kudanai!
  • 25. Q&A! Thanks! ! Don’t forget to follow @kudanai on twitter! 2014 Kickstart Tech-Talks @kudanai!