SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Build and Deploy a Web
Application in 30 Minutes



    August 23rd, 2012 @kLab
        Kigali, Rwanda

           Jeff Hull
           @jsh2134
      github.com/jsh2134
In 30 Minutes we will
● Create an App
● Deploy a Server


● Launch the App

      Pro Tip: You can fork the finished code here
       http://github.com/jsh2134/thirty-min-app
Who Are You?
●   Buzzient Social CRM and Analytics
    –   Dev Manager and Lead Engineer
    –   100K Lines of Code, 15 Servers, 24/7 Ops
    –   Recruited and Managed team of 4+ Engineers
●   My Ivy Leaguer Test Prep and Tutoring Service
    –   Co-Founder and Lead Developer
    –   Built Tutor/Client CRM software
●   Compete.com Web Analytics
    –   Software Developer Intern
    –   Built Ad Scraper that powered their Ad Impact product
No Really, Who Are You?
●   I like to Build things (on the Internet)
●   The Internet is perfect
    –   For Creation
    –   For Distribution
    –   For Disruption
    –   For Monetization
    –   For Success
    –   For Failure
    –   For LOLcats
●
“Startups are like jumping
out of a plane and figuring
   out how to build the
  parachute as you fall.”
             -- Someone Smart
Learn by Experience
Write Code
    ●   So you can learn how good/bad it is
Share Code
    ●   So someone can tell you how good/bad it is
Deploy Code
    ●   So the user can show you how good/bad it is
Best Advice: Just Dive In
●   Social Coding
    –   GitHub
    –   StackOverflow
●   Courses
    –   Udacity.com
    –   CodeAcademy.com
●   Hacker News
    –   http://news.ycombinator.com
    –   Code Tutorials, Startup News, Rants and Raves
The App
●   Pure Python
●   A Simple Flask App
●   Displays Facebook Images matching a word
●   Use Twitter Bootstrap for Style
●   Use Git for Version Control
●   Deploy to Amazon


                   Lets get started...
Friends don't let Friends not use Git
 ●   Git is your friend
 ●   GitHub is your best friend




More Octocats at http://octodex.github.com
Lets “git” started
$ curl -u 'jsh2134' https://api.github.com/user/repos -d
'{"name":"my_repo"}'
$ git init my_repo
$ cd my_repo
$ git remote add origin git@github.com:jsh2134/my_repo
$ vim README
$ git add README
$ git commit -m 'first commit'
$ git push origin
What is Flask?
●   Lightweight Python web Framework
●   Like Django but Simpler
    –   Uses all the best parts
●   ~5000 Lines of Code
    –   Can easily dig in if you need to debug or change
●   Leverages Jinja and Werkzeug
    –   Werkzeug debugger is incredible
The Simplest Flask App
from flask import Flask
app = Flask(__name__)


@app.route('/')
def hello_world():
  return 'Hello World!'


if __name__ == '__main__':
  app.run()
And Now Some Flask Code
Jinja Templates
●   Separate the Python from the HTML
●   Add Logic to your HTML
●   Simple Syntax
●   Template Inheritance
●   Less gray hairs
Pause for Some Jinja Code
Boto
●   Python interface to Amazon Web Services
●   Create/Start/Stop Servers on Demand
    –   Can do everything actually
    –   Boto is @&$?ing awesome
●   Actively Developed
●   AWS very Flexible
A Quick Boto Break
Fabric
●   Execute commands on remote server
●   Installation Scripts
●   Update Code
●   System Admin Tasks
●   We will use Fabric to deploy our app
Fabric Examples
The Final Code Base
       __init__.py
       settings.py
         app.py
         ec2.py
        fabfile.py
    requirements.txt
 templates/photos.html
static/css/bootstrap.css
Deploy the Code
Finito
●   Fork this on Github
    –   http://github.com/jsh2134/thirty-min-app
●   Contact
    –   @jsh2134
    –   jsh2134@gmail.com
    –   www.engineerwithoutacause.com
●   Slides will be posted online shortly

Weitere ähnliche Inhalte

Was ist angesagt?

Rapid development with angular
Rapid development with angularRapid development with angular
Rapid development with angular
Hongbiao Chen
 

Was ist angesagt? (20)

Building plugins like a pro
Building plugins like a proBuilding plugins like a pro
Building plugins like a pro
 
An introduction to_golang.avi
An introduction to_golang.aviAn introduction to_golang.avi
An introduction to_golang.avi
 
Headless BDD & Responsive Test Automation
Headless BDD & Responsive Test AutomationHeadless BDD & Responsive Test Automation
Headless BDD & Responsive Test Automation
 
React native sharing
React native sharingReact native sharing
React native sharing
 
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and SaucelabsiOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
 
React native first impression
React native first impressionReact native first impression
React native first impression
 
React Native "A Bad Idea Or A Game Changer" at Code Mania 101
React Native "A Bad Idea Or A Game Changer" at Code Mania 101React Native "A Bad Idea Or A Game Changer" at Code Mania 101
React Native "A Bad Idea Or A Game Changer" at Code Mania 101
 
Zero cost serverless Real time web app
Zero cost serverless Real time web appZero cost serverless Real time web app
Zero cost serverless Real time web app
 
Improving your code design using Java
Improving your code design using JavaImproving your code design using Java
Improving your code design using Java
 
Agile coding dojo session #3 (2014 09-20)
Agile coding dojo session #3 (2014 09-20)Agile coding dojo session #3 (2014 09-20)
Agile coding dojo session #3 (2014 09-20)
 
GlotPress aka translate.wordpress.org
GlotPress aka translate.wordpress.orgGlotPress aka translate.wordpress.org
GlotPress aka translate.wordpress.org
 
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
Building a PWA with Ionic, Angular and Spring Boot - Jfokus 2017
 
Android is going to Go! Android and Golang
Android is going to Go! Android and GolangAndroid is going to Go! Android and Golang
Android is going to Go! Android and Golang
 
GR8Conf 2015 - Spring Boot and Groovy. What more do you need?
GR8Conf 2015 - Spring Boot and Groovy. What more do you need?GR8Conf 2015 - Spring Boot and Groovy. What more do you need?
GR8Conf 2015 - Spring Boot and Groovy. What more do you need?
 
Hello Cats: MobileWidgetCamp talk about mobile widgets
Hello Cats: MobileWidgetCamp talk about mobile widgetsHello Cats: MobileWidgetCamp talk about mobile widgets
Hello Cats: MobileWidgetCamp talk about mobile widgets
 
Android Made Simple
Android Made SimpleAndroid Made Simple
Android Made Simple
 
Rapid development with angular
Rapid development with angularRapid development with angular
Rapid development with angular
 
Blogging for hackers (english)
Blogging for hackers (english)Blogging for hackers (english)
Blogging for hackers (english)
 
Yet another startup built on Clojure(Script)
Yet another startup built on Clojure(Script)Yet another startup built on Clojure(Script)
Yet another startup built on Clojure(Script)
 
Building at a glance
Building at a glanceBuilding at a glance
Building at a glance
 

Andere mochten auch

TLS303 How to Deploy Python Applications on AWS Elastic Beanstalk - AWS re:In...
TLS303 How to Deploy Python Applications on AWS Elastic Beanstalk - AWS re:In...TLS303 How to Deploy Python Applications on AWS Elastic Beanstalk - AWS re:In...
TLS303 How to Deploy Python Applications on AWS Elastic Beanstalk - AWS re:In...
Amazon Web Services
 
Relationship Extraction from Unstructured Text-Based on Stanford NLP with Spa...
Relationship Extraction from Unstructured Text-Based on Stanford NLP with Spa...Relationship Extraction from Unstructured Text-Based on Stanford NLP with Spa...
Relationship Extraction from Unstructured Text-Based on Stanford NLP with Spa...
Spark Summit
 

Andere mochten auch (12)

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Dictionary Based Annotation at Scale with Spark by Sujit Pal
Dictionary Based Annotation at Scale with Spark by Sujit PalDictionary Based Annotation at Scale with Spark by Sujit Pal
Dictionary Based Annotation at Scale with Spark by Sujit Pal
 
Spark Streaming, Machine Learning and meetup.com streaming API.
Spark Streaming, Machine Learning and  meetup.com streaming API.Spark Streaming, Machine Learning and  meetup.com streaming API.
Spark Streaming, Machine Learning and meetup.com streaming API.
 
Web develop in flask
Web develop in flaskWeb develop in flask
Web develop in flask
 
Python (Jinja2) Templates for Network Automation
Python (Jinja2) Templates for Network AutomationPython (Jinja2) Templates for Network Automation
Python (Jinja2) Templates for Network Automation
 
Visualizing AutoTrader Traffic in Near Real-Time with Spark Streaming-(Jon Gr...
Visualizing AutoTrader Traffic in Near Real-Time with Spark Streaming-(Jon Gr...Visualizing AutoTrader Traffic in Near Real-Time with Spark Streaming-(Jon Gr...
Visualizing AutoTrader Traffic in Near Real-Time with Spark Streaming-(Jon Gr...
 
TLS303 How to Deploy Python Applications on AWS Elastic Beanstalk - AWS re:In...
TLS303 How to Deploy Python Applications on AWS Elastic Beanstalk - AWS re:In...TLS303 How to Deploy Python Applications on AWS Elastic Beanstalk - AWS re:In...
TLS303 How to Deploy Python Applications on AWS Elastic Beanstalk - AWS re:In...
 
Relationship Extraction from Unstructured Text-Based on Stanford NLP with Spa...
Relationship Extraction from Unstructured Text-Based on Stanford NLP with Spa...Relationship Extraction from Unstructured Text-Based on Stanford NLP with Spa...
Relationship Extraction from Unstructured Text-Based on Stanford NLP with Spa...
 
Use of Spark MLib for Predicting the Offlining of Digital Media-(Christopher ...
Use of Spark MLib for Predicting the Offlining of Digital Media-(Christopher ...Use of Spark MLib for Predicting the Offlining of Digital Media-(Christopher ...
Use of Spark MLib for Predicting the Offlining of Digital Media-(Christopher ...
 
Meet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + KafkaMeet Up - Spark Stream Processing + Kafka
Meet Up - Spark Stream Processing + Kafka
 
Recipes for Running Spark Streaming Applications in Production-(Tathagata Das...
Recipes for Running Spark Streaming Applications in Production-(Tathagata Das...Recipes for Running Spark Streaming Applications in Production-(Tathagata Das...
Recipes for Running Spark Streaming Applications in Production-(Tathagata Das...
 
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
Spark and Spark Streaming at Netfix-(Kedar Sedekar and Monal Daxini, Netflix)
 

Ähnlich wie Build and Deploy a Python Web App to Amazon in 30 Mins

Flutter Developer Journey - GDSC Indore (1).pdf
Flutter Developer Journey - GDSC Indore (1).pdfFlutter Developer Journey - GDSC Indore (1).pdf
Flutter Developer Journey - GDSC Indore (1).pdf
SarikaPurohit1
 
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoQCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
Szczepan Faber
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
Rodrigo Gil
 
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Yuriy Silvestrov
 

Ähnlich wie Build and Deploy a Python Web App to Amazon in 30 Mins (20)

Flutter Developer Journey - GDSC Indore (1).pdf
Flutter Developer Journey - GDSC Indore (1).pdfFlutter Developer Journey - GDSC Indore (1).pdf
Flutter Developer Journey - GDSC Indore (1).pdf
 
Playwright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebPlaywright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern Web
 
Building a Slack Bot Workshop @ Nearsoft OctoberTalks 2017
Building a Slack Bot Workshop @ Nearsoft OctoberTalks 2017Building a Slack Bot Workshop @ Nearsoft OctoberTalks 2017
Building a Slack Bot Workshop @ Nearsoft OctoberTalks 2017
 
Joomla REST API
Joomla REST APIJoomla REST API
Joomla REST API
 
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoQCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
 
Tooling Matters - Development tools
Tooling Matters - Development toolsTooling Matters - Development tools
Tooling Matters - Development tools
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in Django
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
Shining a light on performance (js meetup)
Shining a light on performance (js meetup)Shining a light on performance (js meetup)
Shining a light on performance (js meetup)
 
EuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears TrainingEuroPython 2013 - Python3 TurboGears Training
EuroPython 2013 - Python3 TurboGears Training
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
 
Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San Francisco
 
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)Prototyping app using JS and HTML5 (Ciklum Kharkiv)
Prototyping app using JS and HTML5 (Ciklum Kharkiv)
 
Picamera, Flask and the Twitter API Raspberry Pi workshop
Picamera, Flask and the Twitter API Raspberry Pi workshopPicamera, Flask and the Twitter API Raspberry Pi workshop
Picamera, Flask and the Twitter API Raspberry Pi workshop
 
Spark core intro
Spark core introSpark core intro
Spark core intro
 
CI/CD: Lessons from LinkedIn and Mockito
CI/CD: Lessons from LinkedIn and MockitoCI/CD: Lessons from LinkedIn and Mockito
CI/CD: Lessons from LinkedIn and Mockito
 
DrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low CodeDrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low Code
 
Groovy android
Groovy androidGroovy android
Groovy android
 
Quick prototyping apps using JS - Ciklum, Vinnitsa
Quick prototyping apps using JS - Ciklum, VinnitsaQuick prototyping apps using JS - Ciklum, Vinnitsa
Quick prototyping apps using JS - Ciklum, Vinnitsa
 
Hinting at a better web
Hinting at a better webHinting at a better web
Hinting at a better web
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

Build and Deploy a Python Web App to Amazon in 30 Mins

  • 1. Build and Deploy a Web Application in 30 Minutes August 23rd, 2012 @kLab Kigali, Rwanda Jeff Hull @jsh2134 github.com/jsh2134
  • 2. In 30 Minutes we will ● Create an App ● Deploy a Server ● Launch the App Pro Tip: You can fork the finished code here http://github.com/jsh2134/thirty-min-app
  • 3. Who Are You? ● Buzzient Social CRM and Analytics – Dev Manager and Lead Engineer – 100K Lines of Code, 15 Servers, 24/7 Ops – Recruited and Managed team of 4+ Engineers ● My Ivy Leaguer Test Prep and Tutoring Service – Co-Founder and Lead Developer – Built Tutor/Client CRM software ● Compete.com Web Analytics – Software Developer Intern – Built Ad Scraper that powered their Ad Impact product
  • 4. No Really, Who Are You? ● I like to Build things (on the Internet) ● The Internet is perfect – For Creation – For Distribution – For Disruption – For Monetization – For Success – For Failure – For LOLcats ●
  • 5. “Startups are like jumping out of a plane and figuring out how to build the parachute as you fall.” -- Someone Smart
  • 6. Learn by Experience Write Code ● So you can learn how good/bad it is Share Code ● So someone can tell you how good/bad it is Deploy Code ● So the user can show you how good/bad it is
  • 7. Best Advice: Just Dive In ● Social Coding – GitHub – StackOverflow ● Courses – Udacity.com – CodeAcademy.com ● Hacker News – http://news.ycombinator.com – Code Tutorials, Startup News, Rants and Raves
  • 8. The App ● Pure Python ● A Simple Flask App ● Displays Facebook Images matching a word ● Use Twitter Bootstrap for Style ● Use Git for Version Control ● Deploy to Amazon Lets get started...
  • 9. Friends don't let Friends not use Git ● Git is your friend ● GitHub is your best friend More Octocats at http://octodex.github.com
  • 10. Lets “git” started $ curl -u 'jsh2134' https://api.github.com/user/repos -d '{"name":"my_repo"}' $ git init my_repo $ cd my_repo $ git remote add origin git@github.com:jsh2134/my_repo $ vim README $ git add README $ git commit -m 'first commit' $ git push origin
  • 11. What is Flask? ● Lightweight Python web Framework ● Like Django but Simpler – Uses all the best parts ● ~5000 Lines of Code – Can easily dig in if you need to debug or change ● Leverages Jinja and Werkzeug – Werkzeug debugger is incredible
  • 12. The Simplest Flask App from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
  • 13. And Now Some Flask Code
  • 14. Jinja Templates ● Separate the Python from the HTML ● Add Logic to your HTML ● Simple Syntax ● Template Inheritance ● Less gray hairs
  • 15. Pause for Some Jinja Code
  • 16. Boto ● Python interface to Amazon Web Services ● Create/Start/Stop Servers on Demand – Can do everything actually – Boto is @&$?ing awesome ● Actively Developed ● AWS very Flexible
  • 17. A Quick Boto Break
  • 18. Fabric ● Execute commands on remote server ● Installation Scripts ● Update Code ● System Admin Tasks ● We will use Fabric to deploy our app
  • 20. The Final Code Base __init__.py settings.py app.py ec2.py fabfile.py requirements.txt templates/photos.html static/css/bootstrap.css
  • 22. Finito ● Fork this on Github – http://github.com/jsh2134/thirty-min-app ● Contact – @jsh2134 – jsh2134@gmail.com – www.engineerwithoutacause.com ● Slides will be posted online shortly