SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
CREATING
                  SOCIAL BOOKS
How to develop social book apps with PhoneGap & Wordpress




                        harmen@ecuad.ca      @haigarmen
BUT FIRST,


A BIT ABOUT ME


Professor of Design
Emily Carr University of Art + Design


Founder & Creative Director
Lift Studios - Interaction Design Agency

Studied
Architecture,
Jazz Performance
& Composition
Concepts covered in this workshop will include

• publications for mobile platforms
• a book as a social framework
• using open source tools to publish
• Native App vs. Web Technology
• Book with an API
• Workshop I: Introducing PhoneGap
• using open source tools to publish
• balancing reading with social
• Workshop II: prototyping with jQueryMobile
• Hybrid native/web apps
• gestural affordances
• Workshop III: JSON-API tunnel
Strategy
• publications for mobile platforms           Technology
• a book as a social framework                • Native App vs. Web Technology
• using open source tools to publish          • Hybrid native/web apps
• Workshop I: Introducing PhoneGap            • Book with an API
                                              • Workshop III: JSON-API tunnel


               Design
               • balancing reading with social
               • Workshop II: prototyping with jQueryMobile
               • gestural affordances
This is a workshop but it is by way of
an interesting story...
A Social Book
by Alexandra Samuel

A research project
at Emily Carr University of Art + Design
A Social Book
by Alexandra Samuel

A research project
at Emily Carr University of Art + Design

Can reading a book be a
participatory and social experience?
Outcomes:

1. Create a social e-book prototype that
establishes the potential of e-books to support a
social, participatory reader experience

2. Develop a participatory design methodology
where readers contribute to the structure,
design and/or content of the final outcome
What are the issues when adding social
functionality into an ebook format?
What are the issues when adding social
functionality into an ebook format?

Can we integrate a social component into a
book without getting in the way of the
original content?
What are the issues when adding social
functionality into an ebook format?

Can we integrate a social component into a
book without getting in the way of the original
content?

How do we make a book ultimately dynamic?
What are the issues when adding social
functionality into an ebook format?

Can we integrate a social component into a
book without getting in the way of the original
content?

How do we make a book ultimately dynamic?

What tools should we use to manage the
content, comments and membership
registration?
The problem with most Social books:

1. Social usually means sharing quotes on
Facebook & Twitter

2. Reader comments are private and
marginalized

3. Comments are separated from the original
text and usually read out of context
How does it work?

        NATIVE APPLICATION

            PHONEGAP

       HTML CSS & Javascript

             JSON API

          Wordpress (CMS)
Introducing PhoneGap

The only free open source framework for
creating apps easily for 7 mobile platforms
using standard HTML, CSS and Javascript

http://docs.phonegap.com/en/2.1.0/guide_getting-started_index.md.html
I: Install Xcode and PhoneGap
Apple's Xcode (http://developer.apple.com)

PhoneGap http://www.phonegap.com/download# version 1.9.0


Requirements
 • Xcode 4.3+
 • Xcode Command Line Tools
 • Intel-based computer with Mac OS X Lion or greater (10.7+)
 • Necessary for installing on device:
    ◦ Apple iOS device (iPhone, iPad, iPod Touch)
    ◦ iOS developer certificate ($100/year)
II. Prototyping with jQuery Mobile

A unified user interface system that works
seamlessly across all popular mobile device
platforms, built on the rock-solid jQuery and
jQuery UI foundation.

http://jquerymobile.com/test/docs/about/getting-started.html
<!DOCTYPE html>
<html>
<head>
! <title>My Page</title>
! <meta name="viewport" content="width=device-width, initial-scale=1">
! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/
    jquery.mobile-1.2.0.min.css" />
! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></
script>
</head>
<body>

<div data-role="page">

!   <div data-role="header">
!   ! <h1>My Title</h1>
!   </div><!-- /header -->

!   <div data-role="content">!
!   ! <p>Hello world</p>! !
!   </div><!-- /content -->

</div><!-- /page -->

</body>
</html>
<!DOCTYPE html>
<html>
<head>
! <title>My Page</title>
! <meta name="viewport" content="width=device-width, initial-scale=1">
! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/
    jquery.mobile-1.2.0.min.css" />
! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></
script>
</head>
<body>

<div data-role="page">

!   <div data-role="header">
!   ! <h1>My Title</h1>
!   </div><!-- /header -->

!   <div data-role="content">!
!   ! <p>Hello world</p>! !
!   </div><!-- /content -->

</div><!-- /page -->

</body>
</html>
<!DOCTYPE html>
<html>
<head>
! <title>My Page</title>
! <meta name="viewport" content="width=device-width, initial-scale=1">
! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/
    jquery.mobile-1.2.0.min.css" />
! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></
script>
</head>
<body>

<div data-role="page">

!   <div data-role="header">
!   ! <h1>My Title</h1>
!   </div><!-- /header -->

!   <div data-role="content">!
!   ! <p>Hello world</p>! !
!   </div><!-- /content -->

</div><!-- /page -->

</body>
</html>
<!DOCTYPE html>
<html>
<head>
! <title>My Page</title>
! <meta name="viewport" content="width=device-width, initial-scale=1">
! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/
    jquery.mobile-1.2.0.min.css" />
! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></
script>
</head>
<body>

<div data-role="page">

!   <div data-role="header">
!   ! <h1>My Title</h1>
!   </div><!-- /header -->

!   <div data-role="content">!
!   ! <p>Hello world</p>! !
!   </div><!-- /content -->

</div><!-- /page -->

</body>
</html>
<!DOCTYPE html>
<html>
<head>
! <title>My Page</title>
! <meta name="viewport" content="width=device-width, initial-scale=1">
! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/
    jquery.mobile-1.2.0.min.css" />
! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></
script>
</head>
<body>

<div data-role="page">

!   <div data-role="header">
!   ! <h1>My Title</h1>
!   </div><!-- /header -->

!   <div data-role="content">!
!   ! <p>Hello world</p>! !
!   </div><!-- /content -->

</div><!-- /page -->

</body>
</html>
! <title>My Page</title>
! <meta name="viewport" content="width=device-width, initial-scale=1">
! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/
jquery.mobile-1.2.0.min.css" />
! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></
script>
</head>
<body>

<div data-role="page">

!   <div data-role="header">
!   ! <h1>My Title</h1>
!   </div><!-- /header -->

!   <div data-role="content">!
!   ! <p>Hello world</p>

    <ul data-role="listview" data-inset="true" data-filter="true">
    ! <li><a href="#">Acura</a></li>
    ! <li><a href="#">Audi</a></li>
    ! <li><a href="#">BMW</a></li>
    ! <li><a href="#">Mercedes Benz</a></li>
    ! <li><a href="#">Ferrari</a></li>
    </ul>
!   !
!   </div><!-- /content -->

</div><!-- /page -->

</body>
</html>
! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></
script>
</head>
<body>

<div data-role="page">

!   <div data-role="header">
!   ! <h1>My Title</h1>
!   </div><!-- /header -->

!   <div data-role="content">!
!   ! <p>Hello world</p>

    <ul data-role="listview" data-inset="true" data-filter="true">
    ! <li><a href="#">Acura</a></li>
    ! <li><a href="#">Audi</a></li>
    ! <li><a href="#">BMW</a></li>
    ! <li><a href="#">Mercedes Benz</a></li>
    ! <li><a href="#">Ferrari</a></li>
    </ul>

!   <form>
       <label for="slider-0">Input slider:</label>
       <input type="range" name="slider" id="slider-0" value="25" min="0" max="100"   />
    </form>
!
!   </div><!-- /content -->

</div><!-- /page -->

</body>
</html>
jQuery Mobile Multiple Screens

Page Anatomy
http://jquerymobile.com/test/docs/pages/page-anatomy.html

Multi Page Example
Gestural Affordances

How do we design interfaces to cue users
about gestures?

Why are gestures becoming the new click?

Can we teach gestures without special
onboarding instructions?
III. Introducing JSON API

Wordpress JSON API plugin

Javascript for API call
$(document).ready(function(){
        console.log("online");
      var status = $('#network-status');
        var output = $('#output');
       status.text("Online");
!   $.ajax({
!   !    url: 'http://book.hyko.org/api/get_page_index/',
!   !    dataType: 'jsonp',
!   !    timeout: 5000,
!   !    success: function(data, status){
!   !    !   localStorage.setItem('posts', JSON.stringify(data));
!   !    !   displayContent(data);!!   !   !   !
!   !    },
!   !    error: function(){
!   !    !   output.text('There was an error loading the data.');
!   !    }

!   });
});
var   displayContent = function (data) {
!     !    !   var output    = $('#output');
!     !    !   $.each(data.pages, function(i,page){
!     !    !   !   var section = '<h2>'+page.title+'</h2>'
!     !    !   !   +page.content+'<br>'
!     !    !   !   for(var j = 0; j < page.children.length; ++j)
!     !    !   !   {
!     !    !   !      $.each(page.children, function(j, page) {
!     !    !   !          var section = section+ '<h2>'+page.title+'</h2>'
!     !    !   !   !    +page.content+'<br>'
!     !    !   !       });
!     !    !   !   }
!     !    !   !   output.append(section);
!     !    !   });
!     !    }
We need a name...
   please help us come up with
   a name for this open source
   social book project.
We need a name...
   Corey Pressman suggests:

   bookspiro
Tweet your name with hashtag: #socialbook



We need a name...
        Corey Pressman suggests:

        bookspiro
Thank you


harmen@ecuad.ca   @haigarmen

Weitere ähnliche Inhalte

Was ist angesagt?

5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)David Wesst
 
Mobile Information Architecture
Mobile Information ArchitectureMobile Information Architecture
Mobile Information ArchitectureAndy Fitzgerald
 
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SKHTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SKDavid Wesst
 
Wrangling Apps in the Smartphone Wild West
Wrangling Apps in the Smartphone Wild WestWrangling Apps in the Smartphone Wild West
Wrangling Apps in the Smartphone Wild WestGinsburg Design
 
Building Hybrid Apps with Ember
Building Hybrid Apps with EmberBuilding Hybrid Apps with Ember
Building Hybrid Apps with Emberjakecraige
 
Beginning jQuery Mobile
Beginning jQuery MobileBeginning jQuery Mobile
Beginning jQuery MobileTroy Miles
 
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SKJavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SKDavid Wesst
 
The mobile ecosystem & technological strategies
The mobile ecosystem & technological strategiesThe mobile ecosystem & technological strategies
The mobile ecosystem & technological strategiesIvano Malavolta
 
Finding the sweet spot - blending the best of native and web
Finding the sweet spot - blending the best of native and webFinding the sweet spot - blending the best of native and web
Finding the sweet spot - blending the best of native and webShawn Jansepar
 
AngularJS on Mobile with the Ionic Framework
AngularJS on Mobile with the Ionic FrameworkAngularJS on Mobile with the Ionic Framework
AngularJS on Mobile with the Ionic FrameworkTroy Miles
 
Debugging and Tuning Mobile Web Sites with Modern Web Browsers
Debugging and Tuning Mobile Web Sites with Modern Web BrowsersDebugging and Tuning Mobile Web Sites with Modern Web Browsers
Debugging and Tuning Mobile Web Sites with Modern Web BrowsersTroy Miles
 
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]David Wesst
 
Mobile Applications
Mobile ApplicationsMobile Applications
Mobile ApplicationsViktor Fonic
 
State of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinState of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinDries Buytaert
 
Innovation vs. Impatience - keynote at JSOpenDay London 2015
Innovation vs. Impatience - keynote at JSOpenDay London 2015Innovation vs. Impatience - keynote at JSOpenDay London 2015
Innovation vs. Impatience - keynote at JSOpenDay London 2015Christian Heilmann
 
The Flashy Side of Adobe Edge
The Flashy Side of Adobe EdgeThe Flashy Side of Adobe Edge
The Flashy Side of Adobe EdgeJoseph Labrecque
 
Tech bytes april2012_labrecque
Tech bytes april2012_labrecqueTech bytes april2012_labrecque
Tech bytes april2012_labrecqueJoseph Labrecque
 
The Spirit of Opensource - contribution as a strategy for growth and innova...
The Spirit of Opensource   - contribution as a strategy for growth and innova...The Spirit of Opensource   - contribution as a strategy for growth and innova...
The Spirit of Opensource - contribution as a strategy for growth and innova...Parth Lawate
 

Was ist angesagt? (20)

5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
 
Mobile Information Architecture
Mobile Information ArchitectureMobile Information Architecture
Mobile Information Architecture
 
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SKHTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
 
Wrangling Apps in the Smartphone Wild West
Wrangling Apps in the Smartphone Wild WestWrangling Apps in the Smartphone Wild West
Wrangling Apps in the Smartphone Wild West
 
Building Hybrid Apps with Ember
Building Hybrid Apps with EmberBuilding Hybrid Apps with Ember
Building Hybrid Apps with Ember
 
Beginning jQuery Mobile
Beginning jQuery MobileBeginning jQuery Mobile
Beginning jQuery Mobile
 
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SKJavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
 
The mobile ecosystem & technological strategies
The mobile ecosystem & technological strategiesThe mobile ecosystem & technological strategies
The mobile ecosystem & technological strategies
 
Finding the sweet spot - blending the best of native and web
Finding the sweet spot - blending the best of native and webFinding the sweet spot - blending the best of native and web
Finding the sweet spot - blending the best of native and web
 
AngularJS on Mobile with the Ionic Framework
AngularJS on Mobile with the Ionic FrameworkAngularJS on Mobile with the Ionic Framework
AngularJS on Mobile with the Ionic Framework
 
Debugging and Tuning Mobile Web Sites with Modern Web Browsers
Debugging and Tuning Mobile Web Sites with Modern Web BrowsersDebugging and Tuning Mobile Web Sites with Modern Web Browsers
Debugging and Tuning Mobile Web Sites with Modern Web Browsers
 
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
 
AppStrom
AppStromAppStrom
AppStrom
 
Mobile Applications
Mobile ApplicationsMobile Applications
Mobile Applications
 
State of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinState of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon Austin
 
Phone gap
Phone gapPhone gap
Phone gap
 
Innovation vs. Impatience - keynote at JSOpenDay London 2015
Innovation vs. Impatience - keynote at JSOpenDay London 2015Innovation vs. Impatience - keynote at JSOpenDay London 2015
Innovation vs. Impatience - keynote at JSOpenDay London 2015
 
The Flashy Side of Adobe Edge
The Flashy Side of Adobe EdgeThe Flashy Side of Adobe Edge
The Flashy Side of Adobe Edge
 
Tech bytes april2012_labrecque
Tech bytes april2012_labrecqueTech bytes april2012_labrecque
Tech bytes april2012_labrecque
 
The Spirit of Opensource - contribution as a strategy for growth and innova...
The Spirit of Opensource   - contribution as a strategy for growth and innova...The Spirit of Opensource   - contribution as a strategy for growth and innova...
The Spirit of Opensource - contribution as a strategy for growth and innova...
 

Andere mochten auch

Creatively creating custom post types! word sesh2
Creatively creating custom post types!  word sesh2Creatively creating custom post types!  word sesh2
Creatively creating custom post types! word sesh2techvoltz
 
Design Driven & Agile
Design Driven & AgileDesign Driven & Agile
Design Driven & AgileHaig Armen
 
Midwest UX Mobile Workshop 2012
Midwest UX Mobile Workshop 2012Midwest UX Mobile Workshop 2012
Midwest UX Mobile Workshop 2012Haig Armen
 
Designing Mineblock: Merging Physical & Digital to create Meta Products
Designing Mineblock: Merging Physical & Digital to create Meta ProductsDesigning Mineblock: Merging Physical & Digital to create Meta Products
Designing Mineblock: Merging Physical & Digital to create Meta ProductsHaig Armen
 
Responsive Workflow, Break the rules or die
Responsive Workflow, Break the rules or dieResponsive Workflow, Break the rules or die
Responsive Workflow, Break the rules or diePeter Rozek
 

Andere mochten auch (6)

Creatively creating custom post types! word sesh2
Creatively creating custom post types!  word sesh2Creatively creating custom post types!  word sesh2
Creatively creating custom post types! word sesh2
 
Design Driven & Agile
Design Driven & AgileDesign Driven & Agile
Design Driven & Agile
 
Midwest UX Mobile Workshop 2012
Midwest UX Mobile Workshop 2012Midwest UX Mobile Workshop 2012
Midwest UX Mobile Workshop 2012
 
Designing Mineblock: Merging Physical & Digital to create Meta Products
Designing Mineblock: Merging Physical & Digital to create Meta ProductsDesigning Mineblock: Merging Physical & Digital to create Meta Products
Designing Mineblock: Merging Physical & Digital to create Meta Products
 
Client is a human too
Client is a human tooClient is a human too
Client is a human too
 
Responsive Workflow, Break the rules or die
Responsive Workflow, Break the rules or dieResponsive Workflow, Break the rules or die
Responsive Workflow, Break the rules or die
 

Ähnlich wie TOC Workshop 2013

Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5Ron Reiter
 
jQuery Mobile Introduction
jQuery Mobile IntroductionjQuery Mobile Introduction
jQuery Mobile IntroductionJoris Graaumans
 
Introduction to jQuery Mobile
Introduction to jQuery MobileIntroduction to jQuery Mobile
Introduction to jQuery MobileDavid Hudson
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesMark Roden
 
Intro to jQuery @ Startup Institute
Intro to jQuery @ Startup InstituteIntro to jQuery @ Startup Institute
Intro to jQuery @ Startup InstituteRafael Gonzaque
 
Best Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppBest Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppSt. Petersburg College
 
Creating a Slick Web App Using jQTouch
Creating a Slick Web App Using jQTouchCreating a Slick Web App Using jQTouch
Creating a Slick Web App Using jQTouchSt. Petersburg College
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformApigee | Google Cloud
 
Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)kbekessy
 
JavaScript for ASP.NET programmers (webcast) upload
JavaScript for ASP.NET programmers (webcast) uploadJavaScript for ASP.NET programmers (webcast) upload
JavaScript for ASP.NET programmers (webcast) uploadRuss Fustino
 
Mobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileMobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileTerry Ryan
 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile FrameworkBuilding a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile FrameworkSt. Petersburg College
 
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013Gustaf Nilsson Kotte
 
How to start developing apps for Firefox OS
How to start developing apps for Firefox OSHow to start developing apps for Firefox OS
How to start developing apps for Firefox OSbenko
 
Barcamphanoi Opensocial Application Development
Barcamphanoi Opensocial Application DevelopmentBarcamphanoi Opensocial Application Development
Barcamphanoi Opensocial Application DevelopmentHoat Le
 

Ähnlich wie TOC Workshop 2013 (20)

Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5
 
Best Practices for Mobile Web Design
Best Practices for Mobile Web DesignBest Practices for Mobile Web Design
Best Practices for Mobile Web Design
 
jQuery Mobile Introduction
jQuery Mobile IntroductionjQuery Mobile Introduction
jQuery Mobile Introduction
 
Introduction to jQuery Mobile
Introduction to jQuery MobileIntroduction to jQuery Mobile
Introduction to jQuery Mobile
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages
 
Intro to jQuery @ Startup Institute
Intro to jQuery @ Startup InstituteIntro to jQuery @ Startup Institute
Intro to jQuery @ Startup Institute
 
Best Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppBest Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile App
 
Creating a Slick Web App Using jQTouch
Creating a Slick Web App Using jQTouchCreating a Slick Web App Using jQTouch
Creating a Slick Web App Using jQTouch
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps Platform
 
Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)Building Better Web Apps with Angular.js (SXSW 2014)
Building Better Web Apps with Angular.js (SXSW 2014)
 
JavaScript for ASP.NET programmers (webcast) upload
JavaScript for ASP.NET programmers (webcast) uploadJavaScript for ASP.NET programmers (webcast) upload
JavaScript for ASP.NET programmers (webcast) upload
 
Mobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileMobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery Mobile
 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile FrameworkBuilding a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
 
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
Surviving the Zombie Apocalypse of Connected devices - Jfokus 2013
 
Fewd week4 slides
Fewd week4 slidesFewd week4 slides
Fewd week4 slides
 
How to start developing apps for Firefox OS
How to start developing apps for Firefox OSHow to start developing apps for Firefox OS
How to start developing apps for Firefox OS
 
Jquery mobile
Jquery mobileJquery mobile
Jquery mobile
 
Barcamphanoi Opensocial Application Development
Barcamphanoi Opensocial Application DevelopmentBarcamphanoi Opensocial Application Development
Barcamphanoi Opensocial Application Development
 
DrupalCamp NH
DrupalCamp NHDrupalCamp NH
DrupalCamp NH
 
Challenges going mobile
Challenges going mobileChallenges going mobile
Challenges going mobile
 

TOC Workshop 2013

  • 1. CREATING SOCIAL BOOKS How to develop social book apps with PhoneGap & Wordpress harmen@ecuad.ca @haigarmen
  • 2. BUT FIRST, A BIT ABOUT ME Professor of Design Emily Carr University of Art + Design Founder & Creative Director Lift Studios - Interaction Design Agency Studied Architecture, Jazz Performance & Composition
  • 3. Concepts covered in this workshop will include • publications for mobile platforms • a book as a social framework • using open source tools to publish • Native App vs. Web Technology • Book with an API • Workshop I: Introducing PhoneGap • using open source tools to publish • balancing reading with social • Workshop II: prototyping with jQueryMobile • Hybrid native/web apps • gestural affordances • Workshop III: JSON-API tunnel
  • 4. Strategy • publications for mobile platforms Technology • a book as a social framework • Native App vs. Web Technology • using open source tools to publish • Hybrid native/web apps • Workshop I: Introducing PhoneGap • Book with an API • Workshop III: JSON-API tunnel Design • balancing reading with social • Workshop II: prototyping with jQueryMobile • gestural affordances
  • 5. This is a workshop but it is by way of an interesting story...
  • 6. A Social Book by Alexandra Samuel A research project at Emily Carr University of Art + Design
  • 7. A Social Book by Alexandra Samuel A research project at Emily Carr University of Art + Design Can reading a book be a participatory and social experience?
  • 8. Outcomes: 1. Create a social e-book prototype that establishes the potential of e-books to support a social, participatory reader experience 2. Develop a participatory design methodology where readers contribute to the structure, design and/or content of the final outcome
  • 9. What are the issues when adding social functionality into an ebook format?
  • 10. What are the issues when adding social functionality into an ebook format? Can we integrate a social component into a book without getting in the way of the original content?
  • 11. What are the issues when adding social functionality into an ebook format? Can we integrate a social component into a book without getting in the way of the original content? How do we make a book ultimately dynamic?
  • 12. What are the issues when adding social functionality into an ebook format? Can we integrate a social component into a book without getting in the way of the original content? How do we make a book ultimately dynamic? What tools should we use to manage the content, comments and membership registration?
  • 13. The problem with most Social books: 1. Social usually means sharing quotes on Facebook & Twitter 2. Reader comments are private and marginalized 3. Comments are separated from the original text and usually read out of context
  • 14. How does it work? NATIVE APPLICATION PHONEGAP HTML CSS & Javascript JSON API Wordpress (CMS)
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. Introducing PhoneGap The only free open source framework for creating apps easily for 7 mobile platforms using standard HTML, CSS and Javascript http://docs.phonegap.com/en/2.1.0/guide_getting-started_index.md.html
  • 20.
  • 21. I: Install Xcode and PhoneGap Apple's Xcode (http://developer.apple.com) PhoneGap http://www.phonegap.com/download# version 1.9.0 Requirements • Xcode 4.3+ • Xcode Command Line Tools • Intel-based computer with Mac OS X Lion or greater (10.7+) • Necessary for installing on device: ◦ Apple iOS device (iPhone, iPad, iPod Touch) ◦ iOS developer certificate ($100/year)
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. II. Prototyping with jQuery Mobile A unified user interface system that works seamlessly across all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation. http://jquerymobile.com/test/docs/about/getting-started.html
  • 29. <!DOCTYPE html> <html> <head> ! <title>My Page</title> ! <meta name="viewport" content="width=device-width, initial-scale=1"> ! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/ jquery.mobile-1.2.0.min.css" /> ! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> ! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></ script> </head> <body> <div data-role="page"> ! <div data-role="header"> ! ! <h1>My Title</h1> ! </div><!-- /header --> ! <div data-role="content">! ! ! <p>Hello world</p>! ! ! </div><!-- /content --> </div><!-- /page --> </body> </html>
  • 30. <!DOCTYPE html> <html> <head> ! <title>My Page</title> ! <meta name="viewport" content="width=device-width, initial-scale=1"> ! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/ jquery.mobile-1.2.0.min.css" /> ! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> ! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></ script> </head> <body> <div data-role="page"> ! <div data-role="header"> ! ! <h1>My Title</h1> ! </div><!-- /header --> ! <div data-role="content">! ! ! <p>Hello world</p>! ! ! </div><!-- /content --> </div><!-- /page --> </body> </html>
  • 31. <!DOCTYPE html> <html> <head> ! <title>My Page</title> ! <meta name="viewport" content="width=device-width, initial-scale=1"> ! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/ jquery.mobile-1.2.0.min.css" /> ! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> ! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></ script> </head> <body> <div data-role="page"> ! <div data-role="header"> ! ! <h1>My Title</h1> ! </div><!-- /header --> ! <div data-role="content">! ! ! <p>Hello world</p>! ! ! </div><!-- /content --> </div><!-- /page --> </body> </html>
  • 32. <!DOCTYPE html> <html> <head> ! <title>My Page</title> ! <meta name="viewport" content="width=device-width, initial-scale=1"> ! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/ jquery.mobile-1.2.0.min.css" /> ! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> ! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></ script> </head> <body> <div data-role="page"> ! <div data-role="header"> ! ! <h1>My Title</h1> ! </div><!-- /header --> ! <div data-role="content">! ! ! <p>Hello world</p>! ! ! </div><!-- /content --> </div><!-- /page --> </body> </html>
  • 33. <!DOCTYPE html> <html> <head> ! <title>My Page</title> ! <meta name="viewport" content="width=device-width, initial-scale=1"> ! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/ jquery.mobile-1.2.0.min.css" /> ! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> ! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></ script> </head> <body> <div data-role="page"> ! <div data-role="header"> ! ! <h1>My Title</h1> ! </div><!-- /header --> ! <div data-role="content">! ! ! <p>Hello world</p>! ! ! </div><!-- /content --> </div><!-- /page --> </body> </html>
  • 34. ! <title>My Page</title> ! <meta name="viewport" content="width=device-width, initial-scale=1"> ! <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/ jquery.mobile-1.2.0.min.css" /> ! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> ! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></ script> </head> <body> <div data-role="page"> ! <div data-role="header"> ! ! <h1>My Title</h1> ! </div><!-- /header --> ! <div data-role="content">! ! ! <p>Hello world</p> <ul data-role="listview" data-inset="true" data-filter="true"> ! <li><a href="#">Acura</a></li> ! <li><a href="#">Audi</a></li> ! <li><a href="#">BMW</a></li> ! <li><a href="#">Mercedes Benz</a></li> ! <li><a href="#">Ferrari</a></li> </ul> ! ! ! </div><!-- /content --> </div><!-- /page --> </body> </html>
  • 35. ! <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> ! <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></ script> </head> <body> <div data-role="page"> ! <div data-role="header"> ! ! <h1>My Title</h1> ! </div><!-- /header --> ! <div data-role="content">! ! ! <p>Hello world</p> <ul data-role="listview" data-inset="true" data-filter="true"> ! <li><a href="#">Acura</a></li> ! <li><a href="#">Audi</a></li> ! <li><a href="#">BMW</a></li> ! <li><a href="#">Mercedes Benz</a></li> ! <li><a href="#">Ferrari</a></li> </ul> ! <form> <label for="slider-0">Input slider:</label> <input type="range" name="slider" id="slider-0" value="25" min="0" max="100" /> </form> ! ! </div><!-- /content --> </div><!-- /page --> </body> </html>
  • 36. jQuery Mobile Multiple Screens Page Anatomy http://jquerymobile.com/test/docs/pages/page-anatomy.html Multi Page Example
  • 37. Gestural Affordances How do we design interfaces to cue users about gestures? Why are gestures becoming the new click? Can we teach gestures without special onboarding instructions?
  • 38. III. Introducing JSON API Wordpress JSON API plugin Javascript for API call
  • 39. $(document).ready(function(){ console.log("online"); var status = $('#network-status'); var output = $('#output'); status.text("Online"); ! $.ajax({ ! ! url: 'http://book.hyko.org/api/get_page_index/', ! ! dataType: 'jsonp', ! ! timeout: 5000, ! ! success: function(data, status){ ! ! ! localStorage.setItem('posts', JSON.stringify(data)); ! ! ! displayContent(data);!! ! ! ! ! ! }, ! ! error: function(){ ! ! ! output.text('There was an error loading the data.'); ! ! } ! }); });
  • 40. var displayContent = function (data) { ! ! ! var output = $('#output'); ! ! ! $.each(data.pages, function(i,page){ ! ! ! ! var section = '<h2>'+page.title+'</h2>' ! ! ! ! +page.content+'<br>' ! ! ! ! for(var j = 0; j < page.children.length; ++j) ! ! ! ! { ! ! ! ! $.each(page.children, function(j, page) { ! ! ! ! var section = section+ '<h2>'+page.title+'</h2>' ! ! ! ! ! +page.content+'<br>' ! ! ! ! }); ! ! ! ! } ! ! ! ! output.append(section); ! ! ! }); ! ! }
  • 41. We need a name... please help us come up with a name for this open source social book project.
  • 42. We need a name... Corey Pressman suggests: bookspiro
  • 43. Tweet your name with hashtag: #socialbook We need a name... Corey Pressman suggests: bookspiro