Geogad Your Personal Mobile Tour Guide
Georgi Dagnall, CEO
Santa Clara, CA
organizes and distributes in-depth local and
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
Opinions on the Cloud
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.
Designing for the Cloud
What does Geogad do? (What do you want to do?)
Resize JPEG images
Manage professional and UGC (comments, ratings, sharing, etc.)
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
Open source video converter. Command line and many, many libraries to sort
through and build
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.
Campaigns and banners created by webmaster but viewable by
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 - 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"
<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"/>
<capability name="aac" value="true"/>
<capability name="mp3" value="true"/>
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:title><%= metatitle %></wall:title>
[JSP and WALL code goes here]