SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
Python and the Web
       Can we keep up?




       Audrey Roy
       twitter: @audreyr



Saturday, August 27, 11
Audrey Roy
                                                                             @audreyr

       About me

       Python web developer by day
             ❖    MIT ’04, Electrical Engineering & Computer Science
             ❖    Python & Django developer for Cartwheel Web / RevSys


       Open-source advocate and more by night
             ❖    President/co-organizer of PyLadies
             ❖    Co-creator and core dev of djangopackages.com & OpenComparison
             ❖    Resident artist at LA's Hive Gallery
             ❖    Fiancée of Daniel Greenfeld (pydanny)




Saturday, August 27, 11
Quiz: When was the first Python web app written?




Saturday, August 27, 11
Audrey Roy
                                                                             @audreyr

       Quiz: When was the first Python web app written?

       I asked this in IRC channel #python. I was told:


       “audreyr, the first person to do it probably thought somebody else did it.
       CGI isn’t particularly hard”




Saturday, August 27, 11
Audrey Roy
                                                                                 @audreyr

       CGI code from circa 1999

       Was CGI hard?


                #!/usr/local/bin/python
                import cgi

                def main():
                    print "Content-type: text/htmln"
                    form = cgi.FieldStorage()   # parse query
                    if form.has_key("firstname") and form["firstname"].value != "":
                        print "Hello", form["firstname"].value, "</h1>"
                    else:
                        print "<h1>Error! Please enter first name.</h1>"

                main()

                © 1999 CNRI, Guido van Rossum

                from http://www.python.org/doc/essays/ppt/sd99east/sld041.htm




Saturday, August 27, 11
Audrey Roy
                                                              @audreyr

       Years of turmoil

       Connecting to web servers was hard and inconsistent
             ❖    CGI
             ❖    mod_python
             ❖    fastCGI
             ❖    custom Python web servers/frameworks




Saturday, August 27, 11
Audrey Roy
                                                                            @audreyr

       That was before WSGI

       WSGI (PEP 333)
       the spec for the interface between web servers & Python web apps/
       frameworks


       Consistency!




Saturday, August 27, 11
Audrey Roy
                                                                                 @audreyr

       What did we get from WSGI?

       The ability to write:
             ❖    web frameworks that work with any WSGI-compliant web server
             ❖    web servers that work with any WSGI-compliant web framework
             ❖    middleware that sits between any WSGI server/framework (in theory)




Saturday, August 27, 11
Audrey Roy
                                                                    @audreyr

       What didn’t we get from WSGI?

       The pluggable dream
             ❖    Few truly reusable WSGI middleware packages
             ❖    No other way to write pluggable pieces emerged




Saturday, August 27, 11
The web has changed since the early days of PEP 333




Saturday, August 27, 11
Audrey Roy
                                                                   @audreyr

       What makes up a Python web framework, in 2011?

       Main pieces:
             ❖    Python
             ❖    HTML/CSS
             ❖    JavaScript, ajaxy bits


       Other pieces you need:
             ❖    Database adapter & database
             ❖    WSGI adapter & web server
             ❖    Deployment system


       Put it all together and you have a Python web framework.




Saturday, August 27, 11
Where is the web going?
       Beyond the limits of the WSGI protocol




Saturday, August 27, 11
Audrey Roy
                                                                                     @audreyr

       WSGI 2

       We're not talking middleware; we're talking protocols
             ❖    WSGI-lite to make WSGI more easily usable? (2011)
             ❖    WSGI 2 spec to address limitations/throw out baggage?
                   ❖ It’s   inevitable
                   ❖ WSGI     implementors, please speak out before it’s too late




Saturday, August 27, 11
Where is the Python web going?
       A deployment revolution




Saturday, August 27, 11
Audrey Roy
                                                                    @audreyr

       Devops: Everyone’s doing it

       Everyone seems to be working on:
             ❖    Automated, repeatable server setup
             ❖    Fabric, libcloud, Chef, Puppet
             ❖    Making deployment “easy”
                   ❖ (well,   maybe when you’ve got 20+ servers)




Saturday, August 27, 11
Audrey Roy
                                                                          @audreyr

       99% of deployments are small

       Most projects only need 1-3 servers.


       Do we need to have this strong a community focus on large scale
       deployments?




Saturday, August 27, 11
Audrey Roy
                                                                                     @audreyr

       Reproducible deployment for all

       Large-scale deployment techniques are trickling down to smaller projects.
             ❖    “Deploying the world’s smallest Django application, repeatedly”


       Soon to emerge:
             ❖    “Micro-deployment tools” - lightweight tools for small deployments




Saturday, August 27, 11
Audrey Roy
                                                                                   @audreyr

       Another piece of the deployment revolution

       Python devops teams are using Ruby more and more:
             ❖    Chef
             ❖    Puppet


       Python has Fabric & libcloud, but nothing comparable to Chef/Puppet (to my
       knowledge)


       One of these will happen:
             ❖    We bring more deployment tools to Python and stay competitive
             ❖    Or we lose the deployment revolution to Ruby




Saturday, August 27, 11
Audrey Roy
                                                                             @audreyr

       After the deployment revolution

       In the future, deployment & hosting of web apps will be a solved problem:
             ❖    Shared hosting
             ❖    Single-server
             ❖    Multi-server configurations (db, media, app, etc.)
             ❖    Large-scale sites




Saturday, August 27, 11
Audrey Roy
                                                                      @audreyr

       Who is trying to solve this, in the Python world?

       PaaS companies are being forced to solve this in isolation:
             ❖    Djangozoom.com
             ❖    Gondor.io
             ❖    ep.io
             ❖    dotCloud
             ❖    Google App Engine
             ❖    Stackato (CloudFoundry, open-source?)




Saturday, August 27, 11
Audrey Roy
                                                                      @audreyr

       Who else is trying to solve this, in the Python world?

       Python devops teams are trying to solve this, in isolation:
             ❖    In-house Fabric scripts
             ❖    In-house Chef recipes
             ❖    In-house Puppet modules


       Repeated re-invention of the wheel
             ❖    Wasted Python developer energy




Saturday, August 27, 11
Audrey Roy
                                                                            @audreyr

       Can there be web hosting standards?

       WSGI addresses the interface with the web server. It does not address:
             ❖    Packaging up of app & dependencies
             ❖    Python module search paths/virtualenvs
             ❖    Location of Python egg cache
             ❖    Initialization of your application
             ❖    Initialization of logging
             ❖    Configuring web server for static media
             ❖    And much more...




Saturday, August 27, 11
Audrey Roy
                                                                                 @audreyr

       If not standards, how about one “best practice” way

       Wouldn’t it be nice if Python hosting all worked the same way?
             ❖    Do you want to be locked into 1 hosting company’s approach?
             ❖    Or at least to the point that these are standardized:
                   ❖ app   packaging
                   ❖ dependency   management




Saturday, August 27, 11
Audrey Roy
                                                                            @audreyr

       Let’s solve this and move on

       Once we solve our deployment and hosting issues, we’ll be able to focus our
       energy on the avalanche that’s upon us...




Saturday, August 27, 11
Where is the web going?
       Front-end revolution




Saturday, August 27, 11
Audrey Roy
                                                                   @audreyr

       What makes up a Python web framework, in 2011?

       Main pieces:
             ❖    Python
             ❖    HTML/CSS
             ❖    JavaScript, ajaxy bits


       Other pieces you need:
             ❖    Database adapter & database
             ❖    WSGI adapter & web server
             ❖    Deployment system


       Put it all together and you have a Python web framework.




Saturday, August 27, 11
Audrey Roy
                                                                @audreyr

       Why should we care?

       Today’s web apps have
             ❖    rich, dynamic, responsive user experiences
             ❖    multimedia
             ❖    special effects


       This isn’t just pretty templates anymore.




Saturday, August 27, 11
Audrey Roy
                                                                                    @audreyr

       Why should we care?

       There are some very interesting Python web issues to address:
             ❖    UI effects require dynamic loading of data
             ❖    large multimedia files take time to load
             ❖    realtime chat, search, data analysis often required
             ❖    fancy caching mechanisms are becoming more important
             ❖    server can’t always handle processing; off-load to client side




Saturday, August 27, 11
Audrey Roy
                                                              @audreyr

       Why should we care?

       Plus we have to deal with mobile phones & tablets
             ❖    Adaptive layouts with adaptive data sets
             ❖    Device memory/power limitations
             ❖    Limited connectivity




Saturday, August 27, 11
Quiz: What version of the Web are we on now?




Saturday, August 27, 11
Audrey Roy
                                                 @audreyr

       So, what version of Web are we on now?




Saturday, August 27, 11
Audrey Roy
                                                                                    @audreyr

       HTML5

       New and improved web with fancy APIs
             ❖    Drawing graphics on canvas
             ❖    Offline data storage
             ❖    Drag and drop
             ❖    Multimedia
             ❖    Semantic elements (for search engines, screenreaders) and more




Saturday, August 27, 11
Audrey Roy
                                                                   @audreyr

       CSS3

       The future of interaction
             ❖    Animations
             ❖    Special effects
             ❖    Support for mobile browsers
                   ❖ Media   queries - see http://mediaqueri.es




Saturday, August 27, 11
Audrey Roy
                                                                                        @audreyr

       Web Open Font Format

       WOFF

       “provides typographic flexibility and control far beyond anything the web has
       offered before”
                                                                                     from w3.org



       ‘the W3C commented that it expects WOFF to soon become the "single,
       interoperable [font] format" supported by all browsers’
                                                http://en.wikipedia.org/wiki/Web_Open_Font_Format




Saturday, August 27, 11
By the way, I want Python in my web browser




                                      This work is attributed to the W3C.




Saturday, August 27, 11
Audrey Roy
                                              @audreyr

       Remember Grail (1995-1999)?

      ❖   Browser written in Python


      ❖   Lets you download Python applets


      ❖   Full HTML 2.0 support
      ❖   Support for much of HTML 3.2




Saturday, August 27, 11
Audrey Roy
                                                                  @audreyr

       Remember Grail (1995-1999)?

       Invoking a Grail applet:


       <HEAD>
       <TITLE>Grail Applet Test Page</TITLE>
       </HEAD>

       <BODY>
       <H1>Test an Applet Here!</H1>
       Click this button!
       <OBJECT CLASSID="Question.py">
       If you see this, your browser does not support Python applets.
       </OBJECT>
       </BODY>




Saturday, August 27, 11
Audrey Roy
                                                                                      @audreyr

       Python in the browser?

       Why does it have to be JavaScript?
             ❖    It makes me sad
             ❖    Skulpt: was an interesting idea; lost momentum
             ❖    Pyjamas: great idea that lost momentum too
             ❖    Pythonistas are so desperate for an alternative that they’ve settled for
                  CoffeeScript


       CoffeeScript is the closest successful implementation
             ❖    But it’s not Python




Saturday, August 27, 11
Audrey Roy
                                              @audreyr

       Wish list: Python in the browser

       In jQuery:
       $(document).ready(function() {
         // Initialization code goes here
       });


       In CoffeeScript:
       $(document).ready ->
         # Initialization code goes here


       In PythonInTheBrowserScript:
       jq(document).ready:
           # Initialization code goes here




Saturday, August 27, 11
Audrey Roy
                                                               @audreyr

       Who’s going to help with the front-end revolution?

       Look for new ideas. Be first to bring them to Python!
             ❖    HTML5 spec
             ❖    CSS3 spec
             ❖    JavaScript community
             ❖    Ruby community
             ❖    Other communities




Saturday, August 27, 11
Where is the Python web going?
       More packages, more contributors




Saturday, August 27, 11
Audrey Roy
                                                                           @audreyr

       Diversity of Python packages (and contributors)

       See videos of my PyCon AU talk:


       “Diversity in Python: it’s about untapped resources”
       http://www.slideshare.net/audreyr/pycon-australia-2011-keynote-audrey-roy




Saturday, August 27, 11
Audrey Roy
                                                     @audreyr

       The Python community needs you

       Opportunities for leadership in
             ❖    Mobile
             ❖    Real-time web
             ❖    Complex UI interactions
             ❖    Open-source standards/protocols
             ❖    Python in the browser


       Don’t be shy, implement it.




Saturday, August 27, 11
Audrey Roy
                                                                      @audreyr

       More leaders are emerging

       The open-source Python community can always use new leaders
             ❖    Implement a new idea
             ❖    Release a package
             ❖    Give a talk
             ❖    Demonstrate the possibilities




Saturday, August 27, 11
Audrey Roy
                                                                                      @audreyr

       To all “PyLadies” in attendance

             ❖    Come and talk Python with me anytime!


             ❖    Informal breakfast for all female Python developers, planned for
                  tomorrow morning:
                   ❖ Kiallas   Cafe in Newtown
                   ❖ Sunday,    7:30am onward
                   ❖5     min walk from Kiwi PyCon




Saturday, August 27, 11
Audrey Roy
                                                                                         @audreyr

       Thank You

       We’re going to shape the future of the web together :)


       HTML5 & derivative graphics attributed to the W3C.
       Python logo attributed to the PSF.


       Special thanks for your help: Christine, Danny, Esther, Graham, Grant, Jess,
       Katharine, Michael, Sophia




                                                                (this graphic is a parody, but the
                                                                        intended message is real)

Saturday, August 27, 11

Contenu connexe

Tendances

"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J..."Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...Jeremy Jarvis
 
Learning Python: Tips from Cognitive Science, Jupyter, and Community
Learning Python: Tips from Cognitive Science, Jupyter, and CommunityLearning Python: Tips from Cognitive Science, Jupyter, and Community
Learning Python: Tips from Cognitive Science, Jupyter, and CommunityCarol Willing
 
JupyterHub for Interactive Data Science Collaboration
JupyterHub for Interactive Data Science CollaborationJupyterHub for Interactive Data Science Collaboration
JupyterHub for Interactive Data Science CollaborationCarol Willing
 
STEAM Workshops with Binder and JupyterHub
STEAM Workshops with Binder and JupyterHubSTEAM Workshops with Binder and JupyterHub
STEAM Workshops with Binder and JupyterHubCarol Willing
 
Empowering the Social Web with Apache Shindig
Empowering the Social Web with Apache ShindigEmpowering the Social Web with Apache Shindig
Empowering the Social Web with Apache Shindigplindner
 
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schulerApcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schulerhewie
 
Reading e books - an alternative for classical reading - o projektu
Reading e books - an alternative for classical reading - o projektuReading e books - an alternative for classical reading - o projektu
Reading e books - an alternative for classical reading - o projektuPogled kroz prozor
 
Developers! Y U No Open Source Ur Code?
Developers! Y U No Open Source Ur Code?Developers! Y U No Open Source Ur Code?
Developers! Y U No Open Source Ur Code?Craig Marvelley
 
JupyterHub, User Groups, and You
JupyterHub, User Groups, and YouJupyterHub, User Groups, and You
JupyterHub, User Groups, and YouCarol Willing
 
English Speaking Session: Introduction (WordCamp Tokyo 2015)
English Speaking Session: Introduction (WordCamp Tokyo 2015)English Speaking Session: Introduction (WordCamp Tokyo 2015)
English Speaking Session: Introduction (WordCamp Tokyo 2015)Toru Miki
 

Tendances (11)

"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J..."Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
"Building a Resilient Cloud Infrastructure. From Scratch." - Cloud East, 28 J...
 
Learning Python: Tips from Cognitive Science, Jupyter, and Community
Learning Python: Tips from Cognitive Science, Jupyter, and CommunityLearning Python: Tips from Cognitive Science, Jupyter, and Community
Learning Python: Tips from Cognitive Science, Jupyter, and Community
 
Doonish
DoonishDoonish
Doonish
 
JupyterHub for Interactive Data Science Collaboration
JupyterHub for Interactive Data Science CollaborationJupyterHub for Interactive Data Science Collaboration
JupyterHub for Interactive Data Science Collaboration
 
STEAM Workshops with Binder and JupyterHub
STEAM Workshops with Binder and JupyterHubSTEAM Workshops with Binder and JupyterHub
STEAM Workshops with Binder and JupyterHub
 
Empowering the Social Web with Apache Shindig
Empowering the Social Web with Apache ShindigEmpowering the Social Web with Apache Shindig
Empowering the Social Web with Apache Shindig
 
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schulerApcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
 
Reading e books - an alternative for classical reading - o projektu
Reading e books - an alternative for classical reading - o projektuReading e books - an alternative for classical reading - o projektu
Reading e books - an alternative for classical reading - o projektu
 
Developers! Y U No Open Source Ur Code?
Developers! Y U No Open Source Ur Code?Developers! Y U No Open Source Ur Code?
Developers! Y U No Open Source Ur Code?
 
JupyterHub, User Groups, and You
JupyterHub, User Groups, and YouJupyterHub, User Groups, and You
JupyterHub, User Groups, and You
 
English Speaking Session: Introduction (WordCamp Tokyo 2015)
English Speaking Session: Introduction (WordCamp Tokyo 2015)English Speaking Session: Introduction (WordCamp Tokyo 2015)
English Speaking Session: Introduction (WordCamp Tokyo 2015)
 

Similaire à Kiwi PyCon 2011 - Audrey Roy Keynote Speech

Stanford session
Stanford sessionStanford session
Stanford sessionTy Smith
 
[B6]heroku postgres-hgmnz
[B6]heroku postgres-hgmnz[B6]heroku postgres-hgmnz
[B6]heroku postgres-hgmnzNAVER D2
 
State of Puppet
State of PuppetState of Puppet
State of PuppetPuppet
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open SourceBertrand Delacretaz
 
PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessTroy Miles
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby ConferenceJohn Woodell
 
Rust is for Robots!
Rust is for Robots!Rust is for Robots!
Rust is for Robots!Andy Grove
 
Toolset of Beansmile
Toolset of BeansmileToolset of Beansmile
Toolset of Beansmileleondu
 
Ruby on Windows (RubyConf.tw 2011)
Ruby on Windows (RubyConf.tw 2011)Ruby on Windows (RubyConf.tw 2011)
Ruby on Windows (RubyConf.tw 2011)Ming-hsuan Chang
 
Apache Rave (Incubating) at ROLE Developer Camp
Apache Rave (Incubating) at ROLE Developer CampApache Rave (Incubating) at ROLE Developer Camp
Apache Rave (Incubating) at ROLE Developer CampJasha Joachimsthal
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet
 
Continuous integration of_puppet_code
Continuous integration of_puppet_codeContinuous integration of_puppet_code
Continuous integration of_puppet_codeDevoteam Revolve
 
YUIConf 2011 keynote
YUIConf 2011 keynoteYUIConf 2011 keynote
YUIConf 2011 keynoteDav Glass
 
Using the puppet debugger for lightweight exploration
Using the puppet debugger for lightweight explorationUsing the puppet debugger for lightweight exploration
Using the puppet debugger for lightweight explorationCorey Osman
 

Similaire à Kiwi PyCon 2011 - Audrey Roy Keynote Speech (20)

Stanford session
Stanford sessionStanford session
Stanford session
 
[B6]heroku postgres-hgmnz
[B6]heroku postgres-hgmnz[B6]heroku postgres-hgmnz
[B6]heroku postgres-hgmnz
 
Oscon 2010
Oscon 2010Oscon 2010
Oscon 2010
 
State of Puppet
State of PuppetState of Puppet
State of Puppet
 
Open Innovation means Open Source
Open Innovation means Open SourceOpen Innovation means Open Source
Open Innovation means Open Source
 
PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or Less
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
 
Rust is for Robots!
Rust is for Robots!Rust is for Robots!
Rust is for Robots!
 
Toolset of Beansmile
Toolset of BeansmileToolset of Beansmile
Toolset of Beansmile
 
WSGI, Django, Gunicorn
WSGI, Django, GunicornWSGI, Django, Gunicorn
WSGI, Django, Gunicorn
 
Agile framework Support
Agile framework SupportAgile framework Support
Agile framework Support
 
Jrubykaigi 2010
Jrubykaigi 2010Jrubykaigi 2010
Jrubykaigi 2010
 
Ruby on Windows (RubyConf.tw 2011)
Ruby on Windows (RubyConf.tw 2011)Ruby on Windows (RubyConf.tw 2011)
Ruby on Windows (RubyConf.tw 2011)
 
Apache Rave (Incubating) at ROLE Developer Camp
Apache Rave (Incubating) at ROLE Developer CampApache Rave (Incubating) at ROLE Developer Camp
Apache Rave (Incubating) at ROLE Developer Camp
 
Railsconf 2010
Railsconf 2010Railsconf 2010
Railsconf 2010
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
 
Continuous integration of_puppet_code
Continuous integration of_puppet_codeContinuous integration of_puppet_code
Continuous integration of_puppet_code
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
YUIConf 2011 keynote
YUIConf 2011 keynoteYUIConf 2011 keynote
YUIConf 2011 keynote
 
Using the puppet debugger for lightweight exploration
Using the puppet debugger for lightweight explorationUsing the puppet debugger for lightweight exploration
Using the puppet debugger for lightweight exploration
 

Dernier

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Dernier (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Kiwi PyCon 2011 - Audrey Roy Keynote Speech

  • 1. Python and the Web Can we keep up? Audrey Roy twitter: @audreyr Saturday, August 27, 11
  • 2. Audrey Roy @audreyr About me Python web developer by day ❖ MIT ’04, Electrical Engineering & Computer Science ❖ Python & Django developer for Cartwheel Web / RevSys Open-source advocate and more by night ❖ President/co-organizer of PyLadies ❖ Co-creator and core dev of djangopackages.com & OpenComparison ❖ Resident artist at LA's Hive Gallery ❖ Fiancée of Daniel Greenfeld (pydanny) Saturday, August 27, 11
  • 3. Quiz: When was the first Python web app written? Saturday, August 27, 11
  • 4. Audrey Roy @audreyr Quiz: When was the first Python web app written? I asked this in IRC channel #python. I was told: “audreyr, the first person to do it probably thought somebody else did it. CGI isn’t particularly hard” Saturday, August 27, 11
  • 5. Audrey Roy @audreyr CGI code from circa 1999 Was CGI hard? #!/usr/local/bin/python import cgi def main(): print "Content-type: text/htmln" form = cgi.FieldStorage() # parse query if form.has_key("firstname") and form["firstname"].value != "": print "Hello", form["firstname"].value, "</h1>" else: print "<h1>Error! Please enter first name.</h1>" main() © 1999 CNRI, Guido van Rossum from http://www.python.org/doc/essays/ppt/sd99east/sld041.htm Saturday, August 27, 11
  • 6. Audrey Roy @audreyr Years of turmoil Connecting to web servers was hard and inconsistent ❖ CGI ❖ mod_python ❖ fastCGI ❖ custom Python web servers/frameworks Saturday, August 27, 11
  • 7. Audrey Roy @audreyr That was before WSGI WSGI (PEP 333) the spec for the interface between web servers & Python web apps/ frameworks Consistency! Saturday, August 27, 11
  • 8. Audrey Roy @audreyr What did we get from WSGI? The ability to write: ❖ web frameworks that work with any WSGI-compliant web server ❖ web servers that work with any WSGI-compliant web framework ❖ middleware that sits between any WSGI server/framework (in theory) Saturday, August 27, 11
  • 9. Audrey Roy @audreyr What didn’t we get from WSGI? The pluggable dream ❖ Few truly reusable WSGI middleware packages ❖ No other way to write pluggable pieces emerged Saturday, August 27, 11
  • 10. The web has changed since the early days of PEP 333 Saturday, August 27, 11
  • 11. Audrey Roy @audreyr What makes up a Python web framework, in 2011? Main pieces: ❖ Python ❖ HTML/CSS ❖ JavaScript, ajaxy bits Other pieces you need: ❖ Database adapter & database ❖ WSGI adapter & web server ❖ Deployment system Put it all together and you have a Python web framework. Saturday, August 27, 11
  • 12. Where is the web going? Beyond the limits of the WSGI protocol Saturday, August 27, 11
  • 13. Audrey Roy @audreyr WSGI 2 We're not talking middleware; we're talking protocols ❖ WSGI-lite to make WSGI more easily usable? (2011) ❖ WSGI 2 spec to address limitations/throw out baggage? ❖ It’s inevitable ❖ WSGI implementors, please speak out before it’s too late Saturday, August 27, 11
  • 14. Where is the Python web going? A deployment revolution Saturday, August 27, 11
  • 15. Audrey Roy @audreyr Devops: Everyone’s doing it Everyone seems to be working on: ❖ Automated, repeatable server setup ❖ Fabric, libcloud, Chef, Puppet ❖ Making deployment “easy” ❖ (well, maybe when you’ve got 20+ servers) Saturday, August 27, 11
  • 16. Audrey Roy @audreyr 99% of deployments are small Most projects only need 1-3 servers. Do we need to have this strong a community focus on large scale deployments? Saturday, August 27, 11
  • 17. Audrey Roy @audreyr Reproducible deployment for all Large-scale deployment techniques are trickling down to smaller projects. ❖ “Deploying the world’s smallest Django application, repeatedly” Soon to emerge: ❖ “Micro-deployment tools” - lightweight tools for small deployments Saturday, August 27, 11
  • 18. Audrey Roy @audreyr Another piece of the deployment revolution Python devops teams are using Ruby more and more: ❖ Chef ❖ Puppet Python has Fabric & libcloud, but nothing comparable to Chef/Puppet (to my knowledge) One of these will happen: ❖ We bring more deployment tools to Python and stay competitive ❖ Or we lose the deployment revolution to Ruby Saturday, August 27, 11
  • 19. Audrey Roy @audreyr After the deployment revolution In the future, deployment & hosting of web apps will be a solved problem: ❖ Shared hosting ❖ Single-server ❖ Multi-server configurations (db, media, app, etc.) ❖ Large-scale sites Saturday, August 27, 11
  • 20. Audrey Roy @audreyr Who is trying to solve this, in the Python world? PaaS companies are being forced to solve this in isolation: ❖ Djangozoom.com ❖ Gondor.io ❖ ep.io ❖ dotCloud ❖ Google App Engine ❖ Stackato (CloudFoundry, open-source?) Saturday, August 27, 11
  • 21. Audrey Roy @audreyr Who else is trying to solve this, in the Python world? Python devops teams are trying to solve this, in isolation: ❖ In-house Fabric scripts ❖ In-house Chef recipes ❖ In-house Puppet modules Repeated re-invention of the wheel ❖ Wasted Python developer energy Saturday, August 27, 11
  • 22. Audrey Roy @audreyr Can there be web hosting standards? WSGI addresses the interface with the web server. It does not address: ❖ Packaging up of app & dependencies ❖ Python module search paths/virtualenvs ❖ Location of Python egg cache ❖ Initialization of your application ❖ Initialization of logging ❖ Configuring web server for static media ❖ And much more... Saturday, August 27, 11
  • 23. Audrey Roy @audreyr If not standards, how about one “best practice” way Wouldn’t it be nice if Python hosting all worked the same way? ❖ Do you want to be locked into 1 hosting company’s approach? ❖ Or at least to the point that these are standardized: ❖ app packaging ❖ dependency management Saturday, August 27, 11
  • 24. Audrey Roy @audreyr Let’s solve this and move on Once we solve our deployment and hosting issues, we’ll be able to focus our energy on the avalanche that’s upon us... Saturday, August 27, 11
  • 25. Where is the web going? Front-end revolution Saturday, August 27, 11
  • 26. Audrey Roy @audreyr What makes up a Python web framework, in 2011? Main pieces: ❖ Python ❖ HTML/CSS ❖ JavaScript, ajaxy bits Other pieces you need: ❖ Database adapter & database ❖ WSGI adapter & web server ❖ Deployment system Put it all together and you have a Python web framework. Saturday, August 27, 11
  • 27. Audrey Roy @audreyr Why should we care? Today’s web apps have ❖ rich, dynamic, responsive user experiences ❖ multimedia ❖ special effects This isn’t just pretty templates anymore. Saturday, August 27, 11
  • 28. Audrey Roy @audreyr Why should we care? There are some very interesting Python web issues to address: ❖ UI effects require dynamic loading of data ❖ large multimedia files take time to load ❖ realtime chat, search, data analysis often required ❖ fancy caching mechanisms are becoming more important ❖ server can’t always handle processing; off-load to client side Saturday, August 27, 11
  • 29. Audrey Roy @audreyr Why should we care? Plus we have to deal with mobile phones & tablets ❖ Adaptive layouts with adaptive data sets ❖ Device memory/power limitations ❖ Limited connectivity Saturday, August 27, 11
  • 30. Quiz: What version of the Web are we on now? Saturday, August 27, 11
  • 31. Audrey Roy @audreyr So, what version of Web are we on now? Saturday, August 27, 11
  • 32. Audrey Roy @audreyr HTML5 New and improved web with fancy APIs ❖ Drawing graphics on canvas ❖ Offline data storage ❖ Drag and drop ❖ Multimedia ❖ Semantic elements (for search engines, screenreaders) and more Saturday, August 27, 11
  • 33. Audrey Roy @audreyr CSS3 The future of interaction ❖ Animations ❖ Special effects ❖ Support for mobile browsers ❖ Media queries - see http://mediaqueri.es Saturday, August 27, 11
  • 34. Audrey Roy @audreyr Web Open Font Format WOFF “provides typographic flexibility and control far beyond anything the web has offered before” from w3.org ‘the W3C commented that it expects WOFF to soon become the "single, interoperable [font] format" supported by all browsers’ http://en.wikipedia.org/wiki/Web_Open_Font_Format Saturday, August 27, 11
  • 35. By the way, I want Python in my web browser This work is attributed to the W3C. Saturday, August 27, 11
  • 36. Audrey Roy @audreyr Remember Grail (1995-1999)? ❖ Browser written in Python ❖ Lets you download Python applets ❖ Full HTML 2.0 support ❖ Support for much of HTML 3.2 Saturday, August 27, 11
  • 37. Audrey Roy @audreyr Remember Grail (1995-1999)? Invoking a Grail applet: <HEAD> <TITLE>Grail Applet Test Page</TITLE> </HEAD> <BODY> <H1>Test an Applet Here!</H1> Click this button! <OBJECT CLASSID="Question.py"> If you see this, your browser does not support Python applets. </OBJECT> </BODY> Saturday, August 27, 11
  • 38. Audrey Roy @audreyr Python in the browser? Why does it have to be JavaScript? ❖ It makes me sad ❖ Skulpt: was an interesting idea; lost momentum ❖ Pyjamas: great idea that lost momentum too ❖ Pythonistas are so desperate for an alternative that they’ve settled for CoffeeScript CoffeeScript is the closest successful implementation ❖ But it’s not Python Saturday, August 27, 11
  • 39. Audrey Roy @audreyr Wish list: Python in the browser In jQuery: $(document).ready(function() { // Initialization code goes here }); In CoffeeScript: $(document).ready -> # Initialization code goes here In PythonInTheBrowserScript: jq(document).ready: # Initialization code goes here Saturday, August 27, 11
  • 40. Audrey Roy @audreyr Who’s going to help with the front-end revolution? Look for new ideas. Be first to bring them to Python! ❖ HTML5 spec ❖ CSS3 spec ❖ JavaScript community ❖ Ruby community ❖ Other communities Saturday, August 27, 11
  • 41. Where is the Python web going? More packages, more contributors Saturday, August 27, 11
  • 42. Audrey Roy @audreyr Diversity of Python packages (and contributors) See videos of my PyCon AU talk: “Diversity in Python: it’s about untapped resources” http://www.slideshare.net/audreyr/pycon-australia-2011-keynote-audrey-roy Saturday, August 27, 11
  • 43. Audrey Roy @audreyr The Python community needs you Opportunities for leadership in ❖ Mobile ❖ Real-time web ❖ Complex UI interactions ❖ Open-source standards/protocols ❖ Python in the browser Don’t be shy, implement it. Saturday, August 27, 11
  • 44. Audrey Roy @audreyr More leaders are emerging The open-source Python community can always use new leaders ❖ Implement a new idea ❖ Release a package ❖ Give a talk ❖ Demonstrate the possibilities Saturday, August 27, 11
  • 45. Audrey Roy @audreyr To all “PyLadies” in attendance ❖ Come and talk Python with me anytime! ❖ Informal breakfast for all female Python developers, planned for tomorrow morning: ❖ Kiallas Cafe in Newtown ❖ Sunday, 7:30am onward ❖5 min walk from Kiwi PyCon Saturday, August 27, 11
  • 46. Audrey Roy @audreyr Thank You We’re going to shape the future of the web together :) HTML5 & derivative graphics attributed to the W3C. Python logo attributed to the PSF. Special thanks for your help: Christine, Danny, Esther, Graham, Grant, Jess, Katharine, Michael, Sophia (this graphic is a parody, but the intended message is real) Saturday, August 27, 11