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!
•...
– B.Sc (Physics, Math, CS)!
– M.Sc (Software Engineering)!
– Plenty of non-formal education!
– … been around for a while n...
Full Disclosure!
•  I love Python!
–  Use it for practically everything!
•  … IF I can get away with it.!
•  BUT…!
–  no d...
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...
Python!
•  What it has going for it…!
–  Really easy to learn!
–  Good for pretty much anything, really!
–  General purpos...
Python!
–  Excellent package management!
–  Alternative interpreters!
•  Jython, Iron Python etc…!
•  What’s not so good a...
Python!
•  Who uses it?!
–  Google!
•  A large part of Google internals are written on python, like Groups,
Maps, Gmail, B...
Python for the web!
•  What’s available?!
–  DBAPI, libraries, ORM’s, template engines and
so forth…!
–  Frameworks and st...
What’s available!
•  Databases!
–  Backbone of most modern web applications!
–  Support is pretty great.!
–  Supported dat...
What’s available!
•  Libraries!
– Extensive Python library set!
•  Can be installed locally as part of the project itself!...
What’s available!
•  Template engines!
–  Mako, Chameleon, Cheetah, Wheezy, Genshi,
Jinja…!
–  Django template engine!
•  ...
What’s available!
•  ORM’s!
– Bazaar, forgetSQL, SQLAlchemy, Django,
Axiom!
– Healthy pick…!
2014 Kickstart Tech-Talks @ku...
What’s available!
•  SQLAlchemy!
–  One of the best out there!
–  Used by:!
•  Reddit!
•  Yelp!!
•  Mozilla!
•  OpenStack!...
Frameworks!
•  Zope3!
– The granddaddy of python frameworks!
– Been around since 1999!
– Batteries included!
•  Provides c...
Frameworks!
•  Pylons/Pyramid!
– Pylons!
•  Collection of tools rather than particular tech!
•  Pyramid is one of these!
–...
Frameworks!
•  Flask!
– “micro” framework!
– plug in what you need!
•  By default uses jinj2 for templating!
•  Free to pi...
Frameworks!
•  Django!
–  By far the most popular!
–  Seriously batteries included!
–  HUGE community!
•  Massive library ...
Frameworks!
•  Tie-in with the front-end!
–  Almost all these are MVC style applications!
–  Front-end is defined by the te...
Deployment!
•  Python Support!
– Hosts that provide VPS and a Python install!
•  Configure through CGI/FastCGI!
–  Not opti...
Deployment!
•  Apache / Nginx!
– Support python deployments through!
•  fastCGI!
•  WSGI interface via mod_wsgi!
–  Web Se...
Deployment!
•  Real-Time apps become messy!
– WSGI is blocking, and synchronous by
definition.!
– uWSGI (and other implemen...
Deployment!
•  Asynchronous stuff!
– Greenlets!
•  Combining WSGI with Gevent!
•  A bit “hackish” TBH!
– Tornado!
•  Devel...
Q&A!
Thanks!
!
Don’t forget to follow @kudanai on
twitter!
2014 Kickstart Tech-Talks @kudanai!
Upcoming SlideShare
Loading in …5
×

Snakes on the Web; Developing web applications in python

673 views
513 views

Published on

From kickstart 2014 tech-talks.

The presentation gives an overview of web application development in python.

Published in: Software, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
673
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Snakes on the Web; Developing web applications in python

  1. 1. Snakes on the web! an overview of developing web applications in .! 2014 kickstart Tech-Talks @kudanai!
  2. 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. 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. 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!
  5. 5. 2014 Kickstart Tech-Talks @kudanai!
  6. 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. 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. 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. 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. 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. 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. 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. 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. 14. What’s available! •  ORM’s! – Bazaar, forgetSQL, SQLAlchemy, Django, Axiom! – Healthy pick…! 2014 Kickstart Tech-Talks @kudanai!
  15. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 25. Q&A! Thanks! ! Don’t forget to follow @kudanai on twitter! 2014 Kickstart Tech-Talks @kudanai!

×