SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Pick-a-Plex 
The Pinnacle Cinema 
Experience 
Chris Callahan & Randall Reed, Jr. 
Flatiron School Presents 
August 19th, 2014
The Problem 
● Too many 
theaters! 
● Too many 
showtimes! 
● Too much time to 
choose!
APIs 
“JSON is the lingua franca of the Internet”
Pick-a-Plex App: The Pinnacle of Cinema Experiences
Integrating the YouTube API 
$( '.movie-title' ).on( 'click', function() { 
var title = $( this ).text().split( ' ' ).join( '+' ); 
var that = $( this ); 
if ( !$( this ).has( 'a' ).length ) { 
$.get( 'https://www.googleapis.com/youtube/v3/search?part=snippet' + 
'&order=rating&q=' + title + '+Official+Trailer&type=video' + 
'&videoDefinition=high&videoEmbeddable=true' + 
'&key=<%= ENV["YOUTUBE_API_KEY"] %>', function( data ) { 
var slug = data.items[0].id.videoId; 
that.append( '<br><a class="iframe" target="_blank"' + 
'href="//www.youtube.com/embed/' + slug + 
'">Want to see the trailer?</a>' ); 
}); 
}});
Performance Enhancements 
● Raw SQL query to retrieve all data
sql = <<-SQL 
SELECT theaters.name, theaters.id, theaters.rating, movies.title, movies.tomatometer, 
movies.description, showtimes.time, showtimes.fandango_url, showtimes.three_d 
FROM theaters 
JOIN 
( 
SELECT showtimes.theater_id, movies.tomatometer 
FROM showtimes 
JOIN movies ON movies.id = showtimes.movie_id 
WHERE showtimes.theater_id = "#{self.id}" AND showtimes.time > "#{current_time}" 
GROUP BY showtimes.theater_id, movies.tomatometer 
ORDER BY movies.tomatometer DESC 
LIMIT 1 OFFSET 2 
) third_tomatometer 
ON theaters.id = third_tomatometer.theater_id 
JOIN showtimes ON showtimes.theater_id = theaters.id 
JOIN movies ON movies.tomatometer >= third_tomatometer.tomatometer 
AND movies.id = showtimes.movie_id 
WHERE showtimes.time > "#{current_time}" 
ORDER BY movies.tomatometer DESC, movies.title, showtimes.time 
SQL 
ActiveRecord::Base.connection.execute(sql)
Performance Enhancements 
● Raw SQL query to retrieve all data 
● Rake tasks to delete old showtimes and call 
Rotten Tomatoes API
Pick-a-Plex App: The Pinnacle of Cinema Experiences
Performance Enhancements 
● Raw SQL query to retrieve all data 
● Rake tasks to delete old showtimes and call 
Rotten Tomatoes API 
● Check zip code before loading showtimes
Zip Code Search 
class RequestsController < ApplicationController 
def create 
# ... 
matching_requests = Request.where("zip_code = ? AND created_at > ?", 
@request.zip_code, today) 
if matching_requests.empty? 
@request.save 
@request.make_theaters 
else 
@request = matching_requests.first 
end 
# ... 
end 
end
DEMO
Going Forward 
● More robust theater rating data 
● API caching 
● Additional movie info
Thank You 
@randallocalypse @_c_cal

Weitere ähnliche Inhalte

Was ist angesagt?

Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress PluginColin Loretz
 
Workshop quality assurance for php projects - phpbelfast
Workshop quality assurance for php projects - phpbelfastWorkshop quality assurance for php projects - phpbelfast
Workshop quality assurance for php projects - phpbelfastMichelangelo van Dam
 
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski PROIDEA
 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty HammerBen Scofield
 
Ansible, Simplicity, and the Zen of Python
Ansible, Simplicity, and the Zen of PythonAnsible, Simplicity, and the Zen of Python
Ansible, Simplicity, and the Zen of Pythontoddmowen
 
Joomla! Day UK 2009 .htaccess
Joomla! Day UK 2009 .htaccessJoomla! Day UK 2009 .htaccess
Joomla! Day UK 2009 .htaccessAndy Wallace
 
Serverless Ballerina
Serverless BallerinaServerless Ballerina
Serverless BallerinaBallerina
 
Deploying a Location-Aware Ember Application
Deploying a Location-Aware Ember ApplicationDeploying a Location-Aware Ember Application
Deploying a Location-Aware Ember ApplicationBen Limmer
 

Was ist angesagt? (11)

Elixir at Evercam (By Milos Mosic)
Elixir at Evercam (By Milos Mosic)Elixir at Evercam (By Milos Mosic)
Elixir at Evercam (By Milos Mosic)
 
Lies, Damn Lies, and Benchmarks
Lies, Damn Lies, and BenchmarksLies, Damn Lies, and Benchmarks
Lies, Damn Lies, and Benchmarks
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress Plugin
 
Workshop quality assurance for php projects - phpbelfast
Workshop quality assurance for php projects - phpbelfastWorkshop quality assurance for php projects - phpbelfast
Workshop quality assurance for php projects - phpbelfast
 
Fabric for fun_and_profit
Fabric for fun_and_profitFabric for fun_and_profit
Fabric for fun_and_profit
 
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty Hammer
 
Ansible, Simplicity, and the Zen of Python
Ansible, Simplicity, and the Zen of PythonAnsible, Simplicity, and the Zen of Python
Ansible, Simplicity, and the Zen of Python
 
Joomla! Day UK 2009 .htaccess
Joomla! Day UK 2009 .htaccessJoomla! Day UK 2009 .htaccess
Joomla! Day UK 2009 .htaccess
 
Serverless Ballerina
Serverless BallerinaServerless Ballerina
Serverless Ballerina
 
Deploying a Location-Aware Ember Application
Deploying a Location-Aware Ember ApplicationDeploying a Location-Aware Ember Application
Deploying a Location-Aware Ember Application
 

Andere mochten auch

RSA Fellowship Council Twitterstream 12-12-12
RSA Fellowship Council Twitterstream 12-12-12RSA Fellowship Council Twitterstream 12-12-12
RSA Fellowship Council Twitterstream 12-12-12Roxanne Persaud
 
Brand Management For A Social Age
Brand Management For A Social AgeBrand Management For A Social Age
Brand Management For A Social AgeJemima Gibbons
 
Into to Node.js: Building Fast, Scaleable Network Applications
Into to Node.js: Building Fast, Scaleable Network ApplicationsInto to Node.js: Building Fast, Scaleable Network Applications
Into to Node.js: Building Fast, Scaleable Network ApplicationsFlatiron School
 
What's a Core Image? An Image-Processing Framework on iOS and OS X
What's a Core Image? An Image-Processing Framework on iOS and OS XWhat's a Core Image? An Image-Processing Framework on iOS and OS X
What's a Core Image? An Image-Processing Framework on iOS and OS XFlatiron School
 
Let’s play sesame street! - Embrace the power of asking questions.
Let’s play sesame street! - Embrace the power of asking questions.Let’s play sesame street! - Embrace the power of asking questions.
Let’s play sesame street! - Embrace the power of asking questions.☕ 🥧 🚲 Martin Gude
 
Formation marketing Québec - Analyse d'audience
Formation marketing Québec - Analyse d'audienceFormation marketing Québec - Analyse d'audience
Formation marketing Québec - Analyse d'audienceKap Tactiques Numériques
 
Play Music...With Your Head: A Theremin App For Everyone
Play Music...With Your Head: A Theremin App For EveryonePlay Music...With Your Head: A Theremin App For Everyone
Play Music...With Your Head: A Theremin App For EveryoneFlatiron School
 
EuroITV: Predicting future User Behaviour in interactive live TV
EuroITV: Predicting future User Behaviour in interactive live TVEuroITV: Predicting future User Behaviour in interactive live TV
EuroITV: Predicting future User Behaviour in interactive live TV☕ 🥧 🚲 Martin Gude
 
Your social persona
Your social personaYour social persona
Your social personaMatt Collins
 
Paint a Picture – Who does your customer become when they use your product?
Paint a Picture – Who does your customer become when they use your product?Paint a Picture – Who does your customer become when they use your product?
Paint a Picture – Who does your customer become when they use your product?☕ 🥧 🚲 Martin Gude
 
Adplotter and Craigslist
Adplotter and CraigslistAdplotter and Craigslist
Adplotter and CraigslistSky Benson
 
Design-muutosjohtaminen käytännössä
Design-muutosjohtaminen käytännössäDesign-muutosjohtaminen käytännössä
Design-muutosjohtaminen käytännössäJuho Paasonen
 
Starting With Strengths: The Stories We Build #edfling
Starting With Strengths: The Stories We Build #edflingStarting With Strengths: The Stories We Build #edfling
Starting With Strengths: The Stories We Build #edflingChris Wejr
 
Moving Beyond the Newsletter: Communicating Through Social Media
Moving Beyond the Newsletter: Communicating Through Social MediaMoving Beyond the Newsletter: Communicating Through Social Media
Moving Beyond the Newsletter: Communicating Through Social MediaChris Wejr
 
Power of Outdoor Play - We Built a Hill
Power of Outdoor Play - We Built a HillPower of Outdoor Play - We Built a Hill
Power of Outdoor Play - We Built a HillChris Wejr
 
Pigeons, Packs & Paid: Google Local 2015
Pigeons, Packs & Paid: Google Local 2015Pigeons, Packs & Paid: Google Local 2015
Pigeons, Packs & Paid: Google Local 2015Peter "Dr. Pete" Meyers
 
Start With Strengths - Canadian Association of Principals 2015
Start With Strengths - Canadian Association of Principals 2015Start With Strengths - Canadian Association of Principals 2015
Start With Strengths - Canadian Association of Principals 2015Chris Wejr
 

Andere mochten auch (20)

RSA Fellowship Council Twitterstream 12-12-12
RSA Fellowship Council Twitterstream 12-12-12RSA Fellowship Council Twitterstream 12-12-12
RSA Fellowship Council Twitterstream 12-12-12
 
Database Opt
Database Opt Database Opt
Database Opt
 
Brand Management For A Social Age
Brand Management For A Social AgeBrand Management For A Social Age
Brand Management For A Social Age
 
Into to Node.js: Building Fast, Scaleable Network Applications
Into to Node.js: Building Fast, Scaleable Network ApplicationsInto to Node.js: Building Fast, Scaleable Network Applications
Into to Node.js: Building Fast, Scaleable Network Applications
 
What's a Core Image? An Image-Processing Framework on iOS and OS X
What's a Core Image? An Image-Processing Framework on iOS and OS XWhat's a Core Image? An Image-Processing Framework on iOS and OS X
What's a Core Image? An Image-Processing Framework on iOS and OS X
 
Let’s play sesame street! - Embrace the power of asking questions.
Let’s play sesame street! - Embrace the power of asking questions.Let’s play sesame street! - Embrace the power of asking questions.
Let’s play sesame street! - Embrace the power of asking questions.
 
Formation marketing Québec - Analyse d'audience
Formation marketing Québec - Analyse d'audienceFormation marketing Québec - Analyse d'audience
Formation marketing Québec - Analyse d'audience
 
FOMO No Mo'
FOMO No Mo' FOMO No Mo'
FOMO No Mo'
 
Play Music...With Your Head: A Theremin App For Everyone
Play Music...With Your Head: A Theremin App For EveryonePlay Music...With Your Head: A Theremin App For Everyone
Play Music...With Your Head: A Theremin App For Everyone
 
Citi Bike Finder
Citi Bike FinderCiti Bike Finder
Citi Bike Finder
 
EuroITV: Predicting future User Behaviour in interactive live TV
EuroITV: Predicting future User Behaviour in interactive live TVEuroITV: Predicting future User Behaviour in interactive live TV
EuroITV: Predicting future User Behaviour in interactive live TV
 
Your social persona
Your social personaYour social persona
Your social persona
 
Paint a Picture – Who does your customer become when they use your product?
Paint a Picture – Who does your customer become when they use your product?Paint a Picture – Who does your customer become when they use your product?
Paint a Picture – Who does your customer become when they use your product?
 
Adplotter and Craigslist
Adplotter and CraigslistAdplotter and Craigslist
Adplotter and Craigslist
 
Design-muutosjohtaminen käytännössä
Design-muutosjohtaminen käytännössäDesign-muutosjohtaminen käytännössä
Design-muutosjohtaminen käytännössä
 
Starting With Strengths: The Stories We Build #edfling
Starting With Strengths: The Stories We Build #edflingStarting With Strengths: The Stories We Build #edfling
Starting With Strengths: The Stories We Build #edfling
 
Moving Beyond the Newsletter: Communicating Through Social Media
Moving Beyond the Newsletter: Communicating Through Social MediaMoving Beyond the Newsletter: Communicating Through Social Media
Moving Beyond the Newsletter: Communicating Through Social Media
 
Power of Outdoor Play - We Built a Hill
Power of Outdoor Play - We Built a HillPower of Outdoor Play - We Built a Hill
Power of Outdoor Play - We Built a Hill
 
Pigeons, Packs & Paid: Google Local 2015
Pigeons, Packs & Paid: Google Local 2015Pigeons, Packs & Paid: Google Local 2015
Pigeons, Packs & Paid: Google Local 2015
 
Start With Strengths - Canadian Association of Principals 2015
Start With Strengths - Canadian Association of Principals 2015Start With Strengths - Canadian Association of Principals 2015
Start With Strengths - Canadian Association of Principals 2015
 

Ähnlich wie Pick-a-Plex App: The Pinnacle of Cinema Experiences

Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineAndy McKay
 
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...Doris Chen
 
Let's play a game with blackfire player
Let's play a game with blackfire playerLet's play a game with blackfire player
Let's play a game with blackfire playerMarcin Czarnecki
 
SQL 쿼리를 AWS DynamoDB에서 (CLI)로 사용해 볼까요?
SQL 쿼리를 AWS DynamoDB에서 (CLI)로 사용해 볼까요?SQL 쿼리를 AWS DynamoDB에서 (CLI)로 사용해 볼까요?
SQL 쿼리를 AWS DynamoDB에서 (CLI)로 사용해 볼까요?PyungHo Yoon
 
Painless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldPainless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldChristian Melchior
 
Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level MetricsPhilip Tellis
 
Automation in angular js
Automation in angular jsAutomation in angular js
Automation in angular jsMarcin Wosinek
 
November Camp - Spec BDD with PHPSpec 2
November Camp - Spec BDD with PHPSpec 2November Camp - Spec BDD with PHPSpec 2
November Camp - Spec BDD with PHPSpec 2Kacper Gunia
 
Service Workers for Performance
Service Workers for PerformanceService Workers for Performance
Service Workers for PerformancePatrick Meenan
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...BradNeuberg
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup PerformanceJustin Cataldo
 
Async. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.jsAsync. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.jsShoaib Burq
 
Make BDD great again
Make BDD great againMake BDD great again
Make BDD great againYana Gusti
 
FP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaFP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaKévin Margueritte
 
How to Leverage APIs for SEO #TTTLive2019
How to Leverage APIs for SEO #TTTLive2019How to Leverage APIs for SEO #TTTLive2019
How to Leverage APIs for SEO #TTTLive2019Paul Shapiro
 
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Michelangelo van Dam
 
Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16Luiz Duarte
 

Ähnlich wie Pick-a-Plex App: The Pinnacle of Cinema Experiences (20)

Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
 
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
Develop Netflix Movie Search App using jQuery, OData, JSONP and Netflix Techn...
 
huhu
huhuhuhu
huhu
 
Let's play a game with blackfire player
Let's play a game with blackfire playerLet's play a game with blackfire player
Let's play a game with blackfire player
 
SQL 쿼리를 AWS DynamoDB에서 (CLI)로 사용해 볼까요?
SQL 쿼리를 AWS DynamoDB에서 (CLI)로 사용해 볼까요?SQL 쿼리를 AWS DynamoDB에서 (CLI)로 사용해 볼까요?
SQL 쿼리를 AWS DynamoDB에서 (CLI)로 사용해 볼까요?
 
ApacheCon 2005
ApacheCon 2005ApacheCon 2005
ApacheCon 2005
 
Painless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldPainless Persistence in a Disconnected World
Painless Persistence in a Disconnected World
 
Postman On Steroids
Postman On SteroidsPostman On Steroids
Postman On Steroids
 
Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level Metrics
 
Automation in angular js
Automation in angular jsAutomation in angular js
Automation in angular js
 
November Camp - Spec BDD with PHPSpec 2
November Camp - Spec BDD with PHPSpec 2November Camp - Spec BDD with PHPSpec 2
November Camp - Spec BDD with PHPSpec 2
 
Service Workers for Performance
Service Workers for PerformanceService Workers for Performance
Service Workers for Performance
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
Async. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.jsAsync. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.js
 
Make BDD great again
Make BDD great againMake BDD great again
Make BDD great again
 
FP - Découverte de Play Framework Scala
FP - Découverte de Play Framework ScalaFP - Découverte de Play Framework Scala
FP - Découverte de Play Framework Scala
 
How to Leverage APIs for SEO #TTTLive2019
How to Leverage APIs for SEO #TTTLive2019How to Leverage APIs for SEO #TTTLive2019
How to Leverage APIs for SEO #TTTLive2019
 
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012
 
Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16
 

Mehr von Flatiron School

How to Leverage Your Network to Land Your First Job as a Developer
How to Leverage Your Network to Land Your First Job as a DeveloperHow to Leverage Your Network to Land Your First Job as a Developer
How to Leverage Your Network to Land Your First Job as a DeveloperFlatiron School
 
Pay and Get Paid: How To Integrate Stripe Into Your App
Pay and Get Paid: How To Integrate Stripe Into Your AppPay and Get Paid: How To Integrate Stripe Into Your App
Pay and Get Paid: How To Integrate Stripe Into Your AppFlatiron School
 
Four Days Out: Quick Itineraries For Last-Minute Dates
Four Days Out: Quick Itineraries For Last-Minute DatesFour Days Out: Quick Itineraries For Last-Minute Dates
Four Days Out: Quick Itineraries For Last-Minute DatesFlatiron School
 
Intro to D3: Data-Driven Documents
Intro to D3: Data-Driven DocumentsIntro to D3: Data-Driven Documents
Intro to D3: Data-Driven DocumentsFlatiron School
 

Mehr von Flatiron School (7)

How to Leverage Your Network to Land Your First Job as a Developer
How to Leverage Your Network to Land Your First Job as a DeveloperHow to Leverage Your Network to Land Your First Job as a Developer
How to Leverage Your Network to Land Your First Job as a Developer
 
Pay and Get Paid: How To Integrate Stripe Into Your App
Pay and Get Paid: How To Integrate Stripe Into Your AppPay and Get Paid: How To Integrate Stripe Into Your App
Pay and Get Paid: How To Integrate Stripe Into Your App
 
Four Days Out: Quick Itineraries For Last-Minute Dates
Four Days Out: Quick Itineraries For Last-Minute DatesFour Days Out: Quick Itineraries For Last-Minute Dates
Four Days Out: Quick Itineraries For Last-Minute Dates
 
Intro to D3: Data-Driven Documents
Intro to D3: Data-Driven DocumentsIntro to D3: Data-Driven Documents
Intro to D3: Data-Driven Documents
 
JSON overview and demo
JSON overview and demoJSON overview and demo
JSON overview and demo
 
Creating Ruby Gems
Creating Ruby Gems Creating Ruby Gems
Creating Ruby Gems
 
Form Helpers
Form Helpers Form Helpers
Form Helpers
 

Kürzlich hochgeladen

Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Incrobinwilliams8624
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesShyamsundar Das
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLAlluxio, Inc.
 
Webinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptWebinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptkinjal48
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageDista
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 

Kürzlich hochgeladen (20)

Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Inc
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security Challenges
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
 
Webinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptWebinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.ppt
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 

Pick-a-Plex App: The Pinnacle of Cinema Experiences

  • 1. Pick-a-Plex The Pinnacle Cinema Experience Chris Callahan & Randall Reed, Jr. Flatiron School Presents August 19th, 2014
  • 2. The Problem ● Too many theaters! ● Too many showtimes! ● Too much time to choose!
  • 3. APIs “JSON is the lingua franca of the Internet”
  • 5. Integrating the YouTube API $( '.movie-title' ).on( 'click', function() { var title = $( this ).text().split( ' ' ).join( '+' ); var that = $( this ); if ( !$( this ).has( 'a' ).length ) { $.get( 'https://www.googleapis.com/youtube/v3/search?part=snippet' + '&order=rating&q=' + title + '+Official+Trailer&type=video' + '&videoDefinition=high&videoEmbeddable=true' + '&key=<%= ENV["YOUTUBE_API_KEY"] %>', function( data ) { var slug = data.items[0].id.videoId; that.append( '<br><a class="iframe" target="_blank"' + 'href="//www.youtube.com/embed/' + slug + '">Want to see the trailer?</a>' ); }); }});
  • 6. Performance Enhancements ● Raw SQL query to retrieve all data
  • 7. sql = <<-SQL SELECT theaters.name, theaters.id, theaters.rating, movies.title, movies.tomatometer, movies.description, showtimes.time, showtimes.fandango_url, showtimes.three_d FROM theaters JOIN ( SELECT showtimes.theater_id, movies.tomatometer FROM showtimes JOIN movies ON movies.id = showtimes.movie_id WHERE showtimes.theater_id = "#{self.id}" AND showtimes.time > "#{current_time}" GROUP BY showtimes.theater_id, movies.tomatometer ORDER BY movies.tomatometer DESC LIMIT 1 OFFSET 2 ) third_tomatometer ON theaters.id = third_tomatometer.theater_id JOIN showtimes ON showtimes.theater_id = theaters.id JOIN movies ON movies.tomatometer >= third_tomatometer.tomatometer AND movies.id = showtimes.movie_id WHERE showtimes.time > "#{current_time}" ORDER BY movies.tomatometer DESC, movies.title, showtimes.time SQL ActiveRecord::Base.connection.execute(sql)
  • 8. Performance Enhancements ● Raw SQL query to retrieve all data ● Rake tasks to delete old showtimes and call Rotten Tomatoes API
  • 10. Performance Enhancements ● Raw SQL query to retrieve all data ● Rake tasks to delete old showtimes and call Rotten Tomatoes API ● Check zip code before loading showtimes
  • 11. Zip Code Search class RequestsController < ApplicationController def create # ... matching_requests = Request.where("zip_code = ? AND created_at > ?", @request.zip_code, today) if matching_requests.empty? @request.save @request.make_theaters else @request = matching_requests.first end # ... end end
  • 12. DEMO
  • 13. Going Forward ● More robust theater rating data ● API caching ● Additional movie info