SlideShare a Scribd company logo
Designing and developing
 mobile web applications with
 Mockup, Sencha Touch and
 Sinatra


 Matteo Collina     @matteocollina
 Daniele Bottillo   @cribcaged7




ITALIAN RUBY DAY, 10 GIUGNO 2011
Who is Mavigex
Mavigex is an academic spin-off of the
University of Bologna which focuses
on:

•   Mobile applications
•   Digital signage
•   VoIP applications
•   Mobile broadcasting

ITALIAN RUBY DAY, 10 GIUGNO 2011
Who We Are
Daniele Bottillo:
 Web mobile designer and developer
 @cribcaged7

Matteo Collina:
 Software Engineer
 Ph.D. Candidate @ UoB
 @matteocollina


ITALIAN RUBY DAY, 10 GIUGNO 2011
Mobile Web Apps?



ITALIAN RUBY DAY, 10 GIUGNO 2011
vs


              HTML5 and CSS3:

               Look & Feel similar to
                native applications
               Advanced graphics
                effects (gradients,
                fades, slides…)




ITALIAN RUBY DAY, 10 GIUGNO 2011
vs


              Javascript:

               Everybody think they
                know it :-)
               Powerful language just
                like Java and Obj-C
               Several frameworks for
                mobile development




ITALIAN RUBY DAY, 10 GIUGNO 2011
vs


              Native Applications:

               Full control of the
                Hardware
               Maximum Performance
               IDEs (Xcode, Eclipse)




ITALIAN RUBY DAY, 10 GIUGNO 2011
vs


              PhoneGap:

               Allows to reach App
                Stores with Mobile Web
                Apps
               Full hardware access
               Mixed Native/Web code
               Limited performances




ITALIAN RUBY DAY, 10 GIUGNO 2011
Development Process
    Native Approach                  Hybrid Approach


  Write      Write    More Work
                                          Write        Less Work
                          =                                 =
                       More €                            Less €
   Test       Test                        Test

  Build       Build               Build            Build




ITALIAN RUBY DAY, 10 GIUGNO 2011
Javascript Frameworks

ITALIAN RUBY DAY, 10 GIUGNO 2011
• enhanches existing mobile web sites

• has unobtrusive behaviour

• is not structured enough for a full application
  development

• has small Javascript & CSS Files

• supports many devices

• is in alpha status



ITALIAN RUBY DAY, 10 GIUGNO 2011
• derives from ExtJS

• has MVC structure

• has the Look & Feel of native applications

• has big Javascript & CSS files

• is stable (but not bug free, and you?)


ITALIAN RUBY DAY, 10 GIUGNO 2011
Backend Technologies



ITALIAN RUBY DAY, 10 GIUGNO 2011
Frontend + Backend
Native Apps                Mobile Web Apps
 The frontend and the      Frontend and Backend
  backend are                are tightly bound
  developed separately      As often as not there
 Often there is no          is a backend
  backend                   Easy sharing of data
 When backend               between the browser
  functionality is           and the JSON APIs
  needed, the
  integration is complex


ITALIAN RUBY DAY, 10 GIUGNO 2011
Backend Requirements
 REST principles

 Exposure of JSON APIs

 Fast-Fast development

 Easy HTTP caching

 Easy testing

 Easy deployment


ITALIAN RUBY DAY, 10 GIUGNO 2011
Ruby + Sinatra
 REST is just built-in

 JSON conversion is just a method call
  away

 Really flexible APIs for HTTP caching

 Community mad with testing


ITALIAN RUBY DAY, 10 GIUGNO 2011
Ruby + Sinatra

           require 'sinatra'

           get '/hi' do
             "Hello World!"
           end




ITALIAN RUBY DAY, 10 GIUGNO 2011
An Integrated
Development Process


ITALIAN RUBY DAY, 10 GIUGNO 2011
Development Process
                                     Problem
                                     Definition


             Refactoring                                    Mockups




                                                                JSON API
        Deployment
                                                                definition




                           Testing                Development




ITALIAN RUBY DAY, 10 GIUGNO 2011
Problem Definition
                   GeoReview

A simple geo localized App to review
locations. A user can:

 Enter a star-based review of some
  coordinates

 View all the reviews in a map

 View the review details of a point


ITALIAN RUBY DAY, 10 GIUGNO 2011
GeoReview
The GeoReview App

 is available at: georeview.mavigex.com

 is downloadable from the Android Market

 is open source software, and the repository are on
  github:
    App
    PhoneGapIntegration

 is not bug free, but who it is?



ITALIAN RUBY DAY, 10 GIUGNO 2011
Mockups
                   GeoReview




ITALIAN RUBY DAY, 10 GIUGNO 2011
Mockups
                   GeoReview




ITALIAN RUBY DAY, 10 GIUGNO 2011
JSON APIs
                   GeoReview

• POST /reviews
  – params:
    { review:{ name: “Pippo”, stars:
      3, comment: “the comment”,
      location: “…” } }
  – response:
    { result: true }




ITALIAN RUBY DAY, 10 GIUGNO 2011
JSON APIs
                       GeoReview
• GET /reviews
   – params:
     { lat: “..”, lng: “..”, radius: “..”}
   – response:
     { status: true,
        reviews:
           [ { items:
                  [ { name:"rff", comment:"fff",
                      stars:4} ],
               total:1, lng:11.35, lat:44.49},
             { items:
                  [ { name: “gggg", comment:"Ggg",
                      stars: 5 } ],
              total: 1, lng :11.35, lat:44.49 } ] }




ITALIAN RUBY DAY, 10 GIUGNO 2011
Developing with Sencha
                   GeoReview


Getting started:

• Download Sencha Touch

• Create an empty index.html

• Include the JS+CSS libraries


ITALIAN RUBY DAY, 10 GIUGNO 2011
Developing with Sencha
                   GeoReview


Sencha Touch is a MVC framework,
what does it mean?

• Views and models are separated

• Controllers perform actions

• Every component has its own definition


ITALIAN RUBY DAY, 10 GIUGNO 2011
Developing with Sencha
                   GeoReview


Organization views:
                                      Map


                   MapContainer    InsertReview
        Viewport
                      About         ListReview




ITALIAN RUBY DAY, 10 GIUGNO 2011
CSS Generation
                     GeoReview
Sencha Touch allows to be
customized by regenerating
its CSS:

 to change the ‘basecolor’

 to bundle only the parts
  you need

 to do some crazy CSS
  personalization, like inlining
  images

ITALIAN RUBY DAY, 10 GIUGNO 2011
CSS Generation
                         GeoReview
In order to regenerate the CSS:

 we use compass, a ruby library to
  dinamically generate CSS templates

 normally, generating the CSS is just
  a ‘compass compile’ away

 in the GeoReview project we have
  automatized it using a rake task

 to see more details, look at this
  blog post:
  http://www.sencha.com/blog/an-
  introduction-to-theming-sencha-
  touch/

ITALIAN RUBY DAY, 10 GIUGNO 2011
Deployment
                    GeoReview

We deployed our mobile web app on
Heroku:

heroku create

heroku addons:add mongohq:free

git push heroku




ITALIAN RUBY DAY, 10 GIUGNO 2011
Testing
We have a full department of testers!




ITALIAN RUBY DAY, 10 GIUGNO 2011
Links
•   Mavigex: http://www.mavigex.com

•   GeoReview: http://georeview.mavigex.com

•   Sencha: http://www.sencha.com

•   Sinatra: http://www.sinatrarb.com

•   Ruby: http://www.ruby-lang.org

•   Compass: http://compass-style.org/

•   Heroku: http://www.heroku.com

•   MongoDB: http://www.mongodb.org



ITALIAN RUBY DAY, 10 GIUGNO 2011
Thank You!



ITALIAN RUBY DAY, 10 GIUGNO 2011

More Related Content

Viewers also liked

Making things that works with us codemotion
Making things that works with us   codemotionMaking things that works with us   codemotion
Making things that works with us codemotion
Matteo Collina
 
No. la sottile arte di trovare il tempo dove non esite.
No. la sottile arte di trovare il tempo dove non esite.No. la sottile arte di trovare il tempo dove non esite.
No. la sottile arte di trovare il tempo dove non esite.
Matteo Collina
 
The usability of open data
The usability of open dataThe usability of open data
The usability of open dataMatteo Collina
 
Enter the app era with ruby on rails
Enter the app era with ruby on railsEnter the app era with ruby on rails
Enter the app era with ruby on railsMatteo Collina
 
Enter the app era with ruby on rails (rubyday)
Enter the app era with ruby on rails (rubyday)Enter the app era with ruby on rails (rubyday)
Enter the app era with ruby on rails (rubyday)Matteo Collina
 
Making things that works with us - First Italian Internet of Things Day
Making things that works with us - First Italian Internet of Things DayMaking things that works with us - First Italian Internet of Things Day
Making things that works with us - First Italian Internet of Things DayMatteo Collina
 
The internet of things - Rails Girls Galway
The internet of things - Rails Girls GalwayThe internet of things - Rails Girls Galway
The internet of things - Rails Girls GalwayMatteo Collina
 
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...Matteo Collina
 
Building a multi protocol broker for the internet of things using nodejs
Building a multi protocol broker for the internet of things using nodejsBuilding a multi protocol broker for the internet of things using nodejs
Building a multi protocol broker for the internet of things using nodejs
Matteo Collina
 
No. la sottile arte di trovare il tempo dove non esite - codemotion 2015
No. la sottile arte di trovare il tempo dove non esite - codemotion 2015No. la sottile arte di trovare il tempo dove non esite - codemotion 2015
No. la sottile arte di trovare il tempo dove non esite - codemotion 2015
Matteo Collina
 
L'universo dietro alle App
L'universo dietro alle AppL'universo dietro alle App
L'universo dietro alle App
Matteo Collina
 
Operational transformation
Operational transformationOperational transformation
Operational transformationMatteo Collina
 
Today's Trending Technologies 2014
Today's Trending Technologies 2014Today's Trending Technologies 2014
Today's Trending Technologies 2014
Hazem Torab
 
Exposing M2M to the REST of us
Exposing M2M to the REST of usExposing M2M to the REST of us
Exposing M2M to the REST of us
Matteo Collina
 
Making things that work with us - Distill
Making things that work with us - DistillMaking things that work with us - Distill
Making things that work with us - DistillMatteo Collina
 
Making your washing machine talk with a power plant
Making your washing machine talk with a power plantMaking your washing machine talk with a power plant
Making your washing machine talk with a power plantMatteo Collina
 
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce LabsHow To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
Sauce Labs
 
Quantum Computers PART 1 & 2 by Prof Lili Saghafi
Quantum Computers  PART 1 & 2 by Prof Lili SaghafiQuantum Computers  PART 1 & 2 by Prof Lili Saghafi
Quantum Computers PART 1 & 2 by Prof Lili Saghafi
Professor Lili Saghafi
 

Viewers also liked (20)

Making things that works with us codemotion
Making things that works with us   codemotionMaking things that works with us   codemotion
Making things that works with us codemotion
 
No. la sottile arte di trovare il tempo dove non esite.
No. la sottile arte di trovare il tempo dove non esite.No. la sottile arte di trovare il tempo dove non esite.
No. la sottile arte di trovare il tempo dove non esite.
 
The usability of open data
The usability of open dataThe usability of open data
The usability of open data
 
Enter the app era with ruby on rails
Enter the app era with ruby on railsEnter the app era with ruby on rails
Enter the app era with ruby on rails
 
CI-18n
CI-18nCI-18n
CI-18n
 
Enter the app era with ruby on rails (rubyday)
Enter the app era with ruby on rails (rubyday)Enter the app era with ruby on rails (rubyday)
Enter the app era with ruby on rails (rubyday)
 
Making things that works with us - First Italian Internet of Things Day
Making things that works with us - First Italian Internet of Things DayMaking things that works with us - First Italian Internet of Things Day
Making things that works with us - First Italian Internet of Things Day
 
The internet of things - Rails Girls Galway
The internet of things - Rails Girls GalwayThe internet of things - Rails Girls Galway
The internet of things - Rails Girls Galway
 
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...
 
Building a multi protocol broker for the internet of things using nodejs
Building a multi protocol broker for the internet of things using nodejsBuilding a multi protocol broker for the internet of things using nodejs
Building a multi protocol broker for the internet of things using nodejs
 
Back end[1] debdeep
Back end[1]  debdeepBack end[1]  debdeep
Back end[1] debdeep
 
No. la sottile arte di trovare il tempo dove non esite - codemotion 2015
No. la sottile arte di trovare il tempo dove non esite - codemotion 2015No. la sottile arte di trovare il tempo dove non esite - codemotion 2015
No. la sottile arte di trovare il tempo dove non esite - codemotion 2015
 
L'universo dietro alle App
L'universo dietro alle AppL'universo dietro alle App
L'universo dietro alle App
 
Operational transformation
Operational transformationOperational transformation
Operational transformation
 
Today's Trending Technologies 2014
Today's Trending Technologies 2014Today's Trending Technologies 2014
Today's Trending Technologies 2014
 
Exposing M2M to the REST of us
Exposing M2M to the REST of usExposing M2M to the REST of us
Exposing M2M to the REST of us
 
Making things that work with us - Distill
Making things that work with us - DistillMaking things that work with us - Distill
Making things that work with us - Distill
 
Making your washing machine talk with a power plant
Making your washing machine talk with a power plantMaking your washing machine talk with a power plant
Making your washing machine talk with a power plant
 
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce LabsHow To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
How To Combine Back-End 
 & Front-End Testing with BlazeMeter & Sauce Labs
 
Quantum Computers PART 1 & 2 by Prof Lili Saghafi
Quantum Computers  PART 1 & 2 by Prof Lili SaghafiQuantum Computers  PART 1 & 2 by Prof Lili Saghafi
Quantum Computers PART 1 & 2 by Prof Lili Saghafi
 

Similar to Designing and developing mobile web applications with Mockup, Sencha Touch and Sinatra @RubyDay

Mobile Development with PhoneGap
Mobile Development with PhoneGapMobile Development with PhoneGap
Mobile Development with PhoneGap
Joshua Johnson
 
IONIC VS. REACT NATIVE – WHICH FRAMEWORK IS BETTER FOR CROSS-PLATFORM MOBILE ...
IONIC VS. REACT NATIVE – WHICH FRAMEWORK IS BETTER FOR CROSS-PLATFORM MOBILE ...IONIC VS. REACT NATIVE – WHICH FRAMEWORK IS BETTER FOR CROSS-PLATFORM MOBILE ...
IONIC VS. REACT NATIVE – WHICH FRAMEWORK IS BETTER FOR CROSS-PLATFORM MOBILE ...
Laura Miller
 
Building our App with React Native
Building our App with React NativeBuilding our App with React Native
Building our App with React Native
Nuxeo
 
React Native - CirebonDev
React Native - CirebonDevReact Native - CirebonDev
React Native - CirebonDev
Ayat Maulana
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
Quang Minh Dao
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
Quang Minh Dao
 
Flowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDBFlowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDB
Flowdock
 
PhoneGap Talk @ Sencha Con 2010
PhoneGap Talk @ Sencha Con 2010PhoneGap Talk @ Sencha Con 2010
PhoneGap Talk @ Sencha Con 2010
alunny
 
2011 The Year of Web apps
2011 The Year of Web apps2011 The Year of Web apps
2011 The Year of Web apps
JungHyuk Kwon
 
Ionic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksIonic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocks
Juarez Filho
 
9 reasons why programmers should learn react native
9 reasons why programmers should learn react native9 reasons why programmers should learn react native
9 reasons why programmers should learn react native
React Sharing
 
Pycon2011 android programming-using_python
Pycon2011 android programming-using_pythonPycon2011 android programming-using_python
Pycon2011 android programming-using_python
George Goh
 
Bringing the Ruby language into the mobile world
Bringing the Ruby language into the mobile worldBringing the Ruby language into the mobile world
Bringing the Ruby language into the mobile world
Laurent Sansonetti
 
Hybrid vs. Native app - Ionic Framework with AngularJS
Hybrid vs. Native app - Ionic Framework with AngularJSHybrid vs. Native app - Ionic Framework with AngularJS
Hybrid vs. Native app - Ionic Framework with AngularJS
Zvika Epstein
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App Development
Devathon
 
Top mobile app development frameworks to consider in 2021
Top mobile app development frameworks to consider in 2021Top mobile app development frameworks to consider in 2021
Top mobile app development frameworks to consider in 2021
Katy Slemon
 
Making the Mobile Web Native with PhoneGap
Making the Mobile Web Native with PhoneGapMaking the Mobile Web Native with PhoneGap
Making the Mobile Web Native with PhoneGap
Roy Clarkson
 
3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time
Pascal Rettig
 
Ionic - Hybrid Mobile Application Framework
Ionic - Hybrid Mobile Application FrameworkIonic - Hybrid Mobile Application Framework
Ionic - Hybrid Mobile Application Framework
Sanjay Kumar
 

Similar to Designing and developing mobile web applications with Mockup, Sencha Touch and Sinatra @RubyDay (20)

Mobile Development with PhoneGap
Mobile Development with PhoneGapMobile Development with PhoneGap
Mobile Development with PhoneGap
 
IONIC VS. REACT NATIVE – WHICH FRAMEWORK IS BETTER FOR CROSS-PLATFORM MOBILE ...
IONIC VS. REACT NATIVE – WHICH FRAMEWORK IS BETTER FOR CROSS-PLATFORM MOBILE ...IONIC VS. REACT NATIVE – WHICH FRAMEWORK IS BETTER FOR CROSS-PLATFORM MOBILE ...
IONIC VS. REACT NATIVE – WHICH FRAMEWORK IS BETTER FOR CROSS-PLATFORM MOBILE ...
 
Building our App with React Native
Building our App with React NativeBuilding our App with React Native
Building our App with React Native
 
React Native - CirebonDev
React Native - CirebonDevReact Native - CirebonDev
React Native - CirebonDev
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
 
Phonegap
PhonegapPhonegap
Phonegap
 
Flowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDBFlowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDB
 
PhoneGap Talk @ Sencha Con 2010
PhoneGap Talk @ Sencha Con 2010PhoneGap Talk @ Sencha Con 2010
PhoneGap Talk @ Sencha Con 2010
 
2011 The Year of Web apps
2011 The Year of Web apps2011 The Year of Web apps
2011 The Year of Web apps
 
Ionic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksIonic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocks
 
9 reasons why programmers should learn react native
9 reasons why programmers should learn react native9 reasons why programmers should learn react native
9 reasons why programmers should learn react native
 
Pycon2011 android programming-using_python
Pycon2011 android programming-using_pythonPycon2011 android programming-using_python
Pycon2011 android programming-using_python
 
Bringing the Ruby language into the mobile world
Bringing the Ruby language into the mobile worldBringing the Ruby language into the mobile world
Bringing the Ruby language into the mobile world
 
Hybrid vs. Native app - Ionic Framework with AngularJS
Hybrid vs. Native app - Ionic Framework with AngularJSHybrid vs. Native app - Ionic Framework with AngularJS
Hybrid vs. Native app - Ionic Framework with AngularJS
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App Development
 
Top mobile app development frameworks to consider in 2021
Top mobile app development frameworks to consider in 2021Top mobile app development frameworks to consider in 2021
Top mobile app development frameworks to consider in 2021
 
Making the Mobile Web Native with PhoneGap
Making the Mobile Web Native with PhoneGapMaking the Mobile Web Native with PhoneGap
Making the Mobile Web Native with PhoneGap
 
3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time
 
Ionic - Hybrid Mobile Application Framework
Ionic - Hybrid Mobile Application FrameworkIonic - Hybrid Mobile Application Framework
Ionic - Hybrid Mobile Application Framework
 

Recently uploaded

Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 

Recently uploaded (20)

Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 

Designing and developing mobile web applications with Mockup, Sencha Touch and Sinatra @RubyDay

  • 1. Designing and developing mobile web applications with Mockup, Sencha Touch and Sinatra Matteo Collina @matteocollina Daniele Bottillo @cribcaged7 ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 2. Who is Mavigex Mavigex is an academic spin-off of the University of Bologna which focuses on: • Mobile applications • Digital signage • VoIP applications • Mobile broadcasting ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 3. Who We Are Daniele Bottillo:  Web mobile designer and developer  @cribcaged7 Matteo Collina:  Software Engineer  Ph.D. Candidate @ UoB  @matteocollina ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 4. Mobile Web Apps? ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 5. vs HTML5 and CSS3:  Look & Feel similar to native applications  Advanced graphics effects (gradients, fades, slides…) ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 6. vs Javascript:  Everybody think they know it :-)  Powerful language just like Java and Obj-C  Several frameworks for mobile development ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 7. vs Native Applications:  Full control of the Hardware  Maximum Performance  IDEs (Xcode, Eclipse) ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 8. vs PhoneGap:  Allows to reach App Stores with Mobile Web Apps  Full hardware access  Mixed Native/Web code  Limited performances ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 9. Development Process Native Approach Hybrid Approach Write Write More Work Write Less Work = = More € Less € Test Test Test Build Build Build Build ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 10. Javascript Frameworks ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 11. • enhanches existing mobile web sites • has unobtrusive behaviour • is not structured enough for a full application development • has small Javascript & CSS Files • supports many devices • is in alpha status ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 12. • derives from ExtJS • has MVC structure • has the Look & Feel of native applications • has big Javascript & CSS files • is stable (but not bug free, and you?) ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 13. Backend Technologies ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 14. Frontend + Backend Native Apps Mobile Web Apps  The frontend and the  Frontend and Backend backend are are tightly bound developed separately  As often as not there  Often there is no is a backend backend  Easy sharing of data  When backend between the browser functionality is and the JSON APIs needed, the integration is complex ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 15. Backend Requirements  REST principles  Exposure of JSON APIs  Fast-Fast development  Easy HTTP caching  Easy testing  Easy deployment ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 16. Ruby + Sinatra  REST is just built-in  JSON conversion is just a method call away  Really flexible APIs for HTTP caching  Community mad with testing ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 17. Ruby + Sinatra require 'sinatra' get '/hi' do "Hello World!" end ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 18. An Integrated Development Process ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 19. Development Process Problem Definition Refactoring Mockups JSON API Deployment definition Testing Development ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 20. Problem Definition GeoReview A simple geo localized App to review locations. A user can:  Enter a star-based review of some coordinates  View all the reviews in a map  View the review details of a point ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 21. GeoReview The GeoReview App  is available at: georeview.mavigex.com  is downloadable from the Android Market  is open source software, and the repository are on github:  App  PhoneGapIntegration  is not bug free, but who it is? ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 22. Mockups GeoReview ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 23. Mockups GeoReview ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 24. JSON APIs GeoReview • POST /reviews – params: { review:{ name: “Pippo”, stars: 3, comment: “the comment”, location: “…” } } – response: { result: true } ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 25. JSON APIs GeoReview • GET /reviews – params: { lat: “..”, lng: “..”, radius: “..”} – response: { status: true, reviews: [ { items: [ { name:"rff", comment:"fff", stars:4} ], total:1, lng:11.35, lat:44.49}, { items: [ { name: “gggg", comment:"Ggg", stars: 5 } ], total: 1, lng :11.35, lat:44.49 } ] } ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 26. Developing with Sencha GeoReview Getting started: • Download Sencha Touch • Create an empty index.html • Include the JS+CSS libraries ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 27. Developing with Sencha GeoReview Sencha Touch is a MVC framework, what does it mean? • Views and models are separated • Controllers perform actions • Every component has its own definition ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 28. Developing with Sencha GeoReview Organization views: Map MapContainer InsertReview Viewport About ListReview ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 29. CSS Generation GeoReview Sencha Touch allows to be customized by regenerating its CSS:  to change the ‘basecolor’  to bundle only the parts you need  to do some crazy CSS personalization, like inlining images ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 30. CSS Generation GeoReview In order to regenerate the CSS:  we use compass, a ruby library to dinamically generate CSS templates  normally, generating the CSS is just a ‘compass compile’ away  in the GeoReview project we have automatized it using a rake task  to see more details, look at this blog post: http://www.sencha.com/blog/an- introduction-to-theming-sencha- touch/ ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 31. Deployment GeoReview We deployed our mobile web app on Heroku: heroku create heroku addons:add mongohq:free git push heroku ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 32. Testing We have a full department of testers! ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 33. Links • Mavigex: http://www.mavigex.com • GeoReview: http://georeview.mavigex.com • Sencha: http://www.sencha.com • Sinatra: http://www.sinatrarb.com • Ruby: http://www.ruby-lang.org • Compass: http://compass-style.org/ • Heroku: http://www.heroku.com • MongoDB: http://www.mongodb.org ITALIAN RUBY DAY, 10 GIUGNO 2011
  • 34. Thank You! ITALIAN RUBY DAY, 10 GIUGNO 2011