Geogad   Your Personal Mobile Tour Guide




         “Cloud” Computing
           Georgi Dagnall, CEO
              Geogad, Inc.
             Santa Clara, CA
          gdagnall@geogad.com
Elevator Pitch

                      Geogad

    organizes and distributes in-depth local and
    historical info

    by latitude and longitude

    for travelers to easily explore their destinations

    using their cell phones and media players

    by leveraging the mobile web and GPS and
    other location finding technology

    and targeting content, services, and advertising
    based on a traveler's location and interests
Mobile And User Customizable
Opinions on the Cloud

From Wikipedia:
Cloud computing is Internet-based computing, whereby shared
resources, software, and information are provided to computers and other
devices on demand...

Internet – Day 1
Cloud computing is a paradigm shift following the shift from mainframe to
client–server in the early 1980s. Details are abstracted from the users,
who no longer have need for expertise in, or control over, the technology
infrastructure "in the cloud" that supports them.

Internet – Day 2
In general, Cloud computing customers do not own the physical
infrastructure, instead avoiding capital expenditure by renting usage from
a third-party provider. They consume resources as a service and pay only
for resources that they use.

http://www.techcrunchit.com/2009/10/01/larry-ellison-still-hates-cloud-computing-nonsense-video/
Designing for the Cloud

What does Geogad do? (What do you want to do?)
Stream video
Convert video/audio
Resize JPEG images
Manage professional and UGC (comments, ratings, sharing, etc.)

                                 Delivered To
                      Web site, downloaded zipped files,
                     Mobile web, Android app, iPhone app

How does Geogad do it? (How do you want to do it?)
Server-side: Java, C++, PHP, Ruby on Rails, etc.
Client-side: HTML, CSS, Ajax, Android/Java, iPhone/Objective C
Databases: MySQL, PostgreSQL, Hadoop, etc.
Ad Servers: Google AdSense, OpenX. etc.

Extras: Drupal, Google Maps, Google App Engine, Wordpress, etc.
Open Source Is Not Free

Economics of Open Source
Free but no support or customization.

MySQL purchased by Sun for $1 billion
          → Sun bought by Oracle for $7.4 billion

ffmpeg


Open source video converter. Command line and many, many libraries to sort
through and build

Kaltura


Open source video converter and distribution platform
Charges for hosting and streaming video from their servers

AdSense vs. OpenX (OpenX Market)


Over $30 million in funding ($10 million in C round in May 2009)
Hosted signups > 10K in first 6 months
Free download of OpenX 2.8 – 3000 users, monthly run rate of more than 10
billion impressions in just six weeks since launch
Video Across Platforms

Ffmpeg – can handle almost anything that you give it. Written in C.

1. Web – Flash flv files
2. Mobile Web – 3gp, low-res, low frame rate MP4
3. Android – Progressive download- MOOV atom at front with MP4BOX
4. iPhone – If streaming live or video greater than 10 minutes long, video
       must be available in different bit rates (96k, 256k, and 800k)
    and segmented in time (10 seconds).*
Ffmpeg command for 96K H.264 Video File
ffmpeg -i <in file> -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 320×240 -vcodec libx264 -b
96k -flags +loop -cmp +chroma -partitions +parti4×4+partp8×8+partb8×8 -subq 5 -trellis 1 -refs 1
-coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize
96k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 320:240 -g
30 -async 2 <output file>

More video formats for more devices on the way.
Consider Brightcove, Kaltura, or other video distribution networks. Not
free, but neither is your time.
* http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
OpenX Downloaded

Campaigns and banners created by webmaster but viewable by
advertisers.

Build or buy tools to let advertisers manage their own campaigns.

Build your own automatic payment system for your advertisers.

PHP → Java, Jsp pages
Geogad Across Platforms

Finding tour stops
1. Web - Java/JSP/Ajax
2. Android/iPhone – Java servlets
3. Mobile web - WURFL

Create an API from the start
Tips For Mobile Apps


Reuse servlets between mobile apps
sending string using standardized
data protocols – XML, JSON

Ping server to confirm network
connection – YouTube
Reduce image downloads with
sprites for batch downloads. App
appears to work much faster.
WURFL

WURFL - Wireless Universal Resource File
Huge volunteer-created open source XML-based list of mobile
phones and their capabilities
 <device id="apple_iphone_ver1" user_agent="Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en)
AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A538a Safari/419.3"
fall_back="apple_generic" actual_device_root="true">

 <group id="display">
  <capability name="physical_screen_height" value="74"/>
  <capability name="dual_orientation" value="true"/>
  <capability name="physical_screen_width" value="49"/>
  <capability name="max_image_width" value="320"/>
  <capability name="resolution_height" value="480"/>
  <capability name="resolution_width" value="320"/>
  <capability name="max_image_height" value="360"/>
 </group>

  <group id="sound_format">
   <capability name="aac" value="true"/>
   <capability name="mp3" value="true"/>
  </group>

</device>
WALL To All

WALL - Wireless Abstraction Library
Uses Java tag library to support multiple feature phone browsers
and markup languages, i.e. WML 1.X, CHTML, and XHTML MP


<%@ taglib uri="/WEB-INF/tld/wall.tld" prefix="wall" %><wall:document><wall:xmlpidtd />
  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><wall:load_capabilities />

  <wall:head>
    <wall:title><%= metatitle %></wall:title>
    <wall:menu_css />
  </wall:head>
  <wall:body>
    <wall:hr />
    <wall:br />
             [JSP and WALL code goes here]
  </wall:body>
</wall:document>
WALL Example

Managing Device Capabilities
<wall:block>
 <% if ((tID > 0) || (ctID > 0)) {%>
 <c:if test="${capabilities.gif}">
    <wall:a href="<%= prevLink %>" title="Previous" >
       <wall:img src="images/leftgreen.gif" alt="Previous" />
    </wall:a>
 </c:if>
 <wall:a href="<%= prevLink %>" title="Previous" >Prev</wall:a>
 <% } else {%>
 <c:if test="${capabilities.gif}">
    <% if (secID == 0) {%>
    <wall:img src="images/leftgray.gif" alt="Previous" />
    <% } else {%>
    <wall:a href="<%= prevLink %>" title="Previous" >
       <wall:img src="images/leftgreen.gif" alt="Previous" />
    </wall:a>
    <% }%>
 </c:if>
 <% if (secID == 0) {%>
 <wall:font color="gray">Prev</wall:font>
 <% } else {%>
 <wall:a href="<%= prevLink %>" title="Previous" >Prev</wall:a>
 <% }%>
 <% }%>
 <wall:b>(<%= (secID + 1) %> of <%= maxsec %>) </wall:b>
WALL Example


 Managing Images and Screen Sizes
<% if (format.indexOf("audio") != -1) {%>
<c:choose>
  <c:when test="${capabilities.resolution_width >= 240}">
     <wall:img src="<%= srcImgFile %>" alt="<%= tsname %>" />
  </c:when>
  <c:otherwise>
     <wall:img src="<%= srcImgFile2 %>" alt="<%= tsname %>" />
  </c:otherwise>
</c:choose>
<% } else {%>
<c:choose>
  <c:when test="${capabilities.resolution_width >= 320}">
     <wall:img src="<%= srcImgFile %>" alt="<%= tsname %>" />
  </c:when>
  <c:otherwise>
     <wall:img src="<%= srcImgFile2 %>" alt="<%= tsname %>" />
  </c:otherwise>
</c:choose>
<% } %>
Geogad   Your Personal Mobile Tour Guide




           Georgi Dagnall, CEO
              Geogad, Inc.
             Santa Clara, CA
          gdagnall@geogad.com

Cloud Computing in Mobile

  • 1.
    Geogad Your Personal Mobile Tour Guide “Cloud” Computing Georgi Dagnall, CEO Geogad, Inc. Santa Clara, CA gdagnall@geogad.com
  • 2.
    Elevator Pitch Geogad  organizes and distributes in-depth local and historical info  by latitude and longitude  for travelers to easily explore their destinations  using their cell phones and media players  by leveraging the mobile web and GPS and other location finding technology  and targeting content, services, and advertising based on a traveler's location and interests
  • 3.
    Mobile And UserCustomizable
  • 4.
    Opinions on theCloud From Wikipedia: Cloud computing is Internet-based computing, whereby shared resources, software, and information are provided to computers and other devices on demand... Internet – Day 1 Cloud computing is a paradigm shift following the shift from mainframe to client–server in the early 1980s. Details are abstracted from the users, who no longer have need for expertise in, or control over, the technology infrastructure "in the cloud" that supports them. Internet – Day 2 In general, Cloud computing customers do not own the physical infrastructure, instead avoiding capital expenditure by renting usage from a third-party provider. They consume resources as a service and pay only for resources that they use. http://www.techcrunchit.com/2009/10/01/larry-ellison-still-hates-cloud-computing-nonsense-video/
  • 5.
    Designing for theCloud What does Geogad do? (What do you want to do?) Stream video Convert video/audio Resize JPEG images Manage professional and UGC (comments, ratings, sharing, etc.) Delivered To Web site, downloaded zipped files, Mobile web, Android app, iPhone app How does Geogad do it? (How do you want to do it?) Server-side: Java, C++, PHP, Ruby on Rails, etc. Client-side: HTML, CSS, Ajax, Android/Java, iPhone/Objective C Databases: MySQL, PostgreSQL, Hadoop, etc. Ad Servers: Google AdSense, OpenX. etc. Extras: Drupal, Google Maps, Google App Engine, Wordpress, etc.
  • 6.
    Open Source IsNot Free Economics of Open Source Free but no support or customization. MySQL purchased by Sun for $1 billion → Sun bought by Oracle for $7.4 billion ffmpeg  Open source video converter. Command line and many, many libraries to sort through and build Kaltura  Open source video converter and distribution platform Charges for hosting and streaming video from their servers AdSense vs. OpenX (OpenX Market)  Over $30 million in funding ($10 million in C round in May 2009) Hosted signups > 10K in first 6 months Free download of OpenX 2.8 – 3000 users, monthly run rate of more than 10 billion impressions in just six weeks since launch
  • 7.
    Video Across Platforms Ffmpeg– can handle almost anything that you give it. Written in C. 1. Web – Flash flv files 2. Mobile Web – 3gp, low-res, low frame rate MP4 3. Android – Progressive download- MOOV atom at front with MP4BOX 4. iPhone – If streaming live or video greater than 10 minutes long, video must be available in different bit rates (96k, 256k, and 800k) and segmented in time (10 seconds).* Ffmpeg command for 96K H.264 Video File ffmpeg -i <in file> -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 320×240 -vcodec libx264 -b 96k -flags +loop -cmp +chroma -partitions +parti4×4+partp8×8+partb8×8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 320:240 -g 30 -async 2 <output file> More video formats for more devices on the way. Consider Brightcove, Kaltura, or other video distribution networks. Not free, but neither is your time. * http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
  • 8.
    OpenX Downloaded Campaigns andbanners created by webmaster but viewable by advertisers. Build or buy tools to let advertisers manage their own campaigns. Build your own automatic payment system for your advertisers. PHP → Java, Jsp pages
  • 9.
    Geogad Across Platforms Findingtour stops 1. Web - Java/JSP/Ajax 2. Android/iPhone – Java servlets 3. Mobile web - WURFL Create an API from the start
  • 10.
    Tips For MobileApps Reuse servlets between mobile apps sending string using standardized data protocols – XML, JSON Ping server to confirm network connection – YouTube Reduce image downloads with sprites for batch downloads. App appears to work much faster.
  • 11.
    WURFL WURFL - WirelessUniversal Resource File Huge volunteer-created open source XML-based list of mobile phones and their capabilities <device id="apple_iphone_ver1" user_agent="Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A538a Safari/419.3" fall_back="apple_generic" actual_device_root="true"> <group id="display"> <capability name="physical_screen_height" value="74"/> <capability name="dual_orientation" value="true"/> <capability name="physical_screen_width" value="49"/> <capability name="max_image_width" value="320"/> <capability name="resolution_height" value="480"/> <capability name="resolution_width" value="320"/> <capability name="max_image_height" value="360"/> </group> <group id="sound_format"> <capability name="aac" value="true"/> <capability name="mp3" value="true"/> </group> </device>
  • 12.
    WALL To All WALL- Wireless Abstraction Library Uses Java tag library to support multiple feature phone browsers and markup languages, i.e. WML 1.X, CHTML, and XHTML MP <%@ taglib uri="/WEB-INF/tld/wall.tld" prefix="wall" %><wall:document><wall:xmlpidtd /> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><wall:load_capabilities /> <wall:head> <wall:title><%= metatitle %></wall:title> <wall:menu_css /> </wall:head> <wall:body> <wall:hr /> <wall:br /> [JSP and WALL code goes here] </wall:body> </wall:document>
  • 13.
    WALL Example Managing DeviceCapabilities <wall:block> <% if ((tID > 0) || (ctID > 0)) {%> <c:if test="${capabilities.gif}"> <wall:a href="<%= prevLink %>" title="Previous" > <wall:img src="images/leftgreen.gif" alt="Previous" /> </wall:a> </c:if> <wall:a href="<%= prevLink %>" title="Previous" >Prev</wall:a> <% } else {%> <c:if test="${capabilities.gif}"> <% if (secID == 0) {%> <wall:img src="images/leftgray.gif" alt="Previous" /> <% } else {%> <wall:a href="<%= prevLink %>" title="Previous" > <wall:img src="images/leftgreen.gif" alt="Previous" /> </wall:a> <% }%> </c:if> <% if (secID == 0) {%> <wall:font color="gray">Prev</wall:font> <% } else {%> <wall:a href="<%= prevLink %>" title="Previous" >Prev</wall:a> <% }%> <% }%> <wall:b>(<%= (secID + 1) %> of <%= maxsec %>) </wall:b>
  • 14.
    WALL Example ManagingImages and Screen Sizes <% if (format.indexOf("audio") != -1) {%> <c:choose> <c:when test="${capabilities.resolution_width >= 240}"> <wall:img src="<%= srcImgFile %>" alt="<%= tsname %>" /> </c:when> <c:otherwise> <wall:img src="<%= srcImgFile2 %>" alt="<%= tsname %>" /> </c:otherwise> </c:choose> <% } else {%> <c:choose> <c:when test="${capabilities.resolution_width >= 320}"> <wall:img src="<%= srcImgFile %>" alt="<%= tsname %>" /> </c:when> <c:otherwise> <wall:img src="<%= srcImgFile2 %>" alt="<%= tsname %>" /> </c:otherwise> </c:choose> <% } %>
  • 15.
    Geogad Your Personal Mobile Tour Guide Georgi Dagnall, CEO Geogad, Inc. Santa Clara, CA gdagnall@geogad.com