SlideShare a Scribd company logo
1 of 98
Download to read offline
Skeuomorphs,
Databases,
and Mobile Performance
Architecting for performance with devices & APIs


groups.google.com/group/api-craft

Sam Ramji               @sramji
Apigee
SKEUOMORPHS
A brief history of architecture
Banister Fletcher
A History of Architecture
“   Greek columns and their entablatures were at
    first entirely of timber, with terra-cotta
    decorations in the upper trabeation, but were
    converted into stone quite early in the
    [Hellenic] period, about 600 BC. The translation
    was quite direct, timber forms being imitated in
    stonework with remarkable exactness. For this
    reason, Greek architecture sometimes has been
    called a ‘carpentry in marble’…
                                   Banister Fletcher
                              A History of Architecture
Skeuomorphs and metaphors
Skeuomorph

A skeuomorph is a design feature found on an
imitation, pastiche or homage that was necessary
only to the original. Often used for the sake of
familiarity, they are details that have moved from
function to form.

                                      Tom Petty
                          hipstercheerleaders.com
Metaphor

In cognitive linguistics, conceptual metaphor, or
cognitive metaphor, refers to the understanding
of one idea, or conceptual domain, in terms of
another, for example, understanding quantity in
terms of directionality (e.g. "prices are rising").

                                   Wikipedia.org
                             Conceptual Metaphors
“   The concepts that govern our thought are not just
    matters of the intellect. They also govern our everyday
    functioning, down to the most mundane details. Our
    concepts structure what we perceive, how we get
    around in the world, and how we relate to other
    people. Our conceptual system thus plays a central role
    in defining our everyday realities. If we are right in
    suggesting that our conceptual system is largely
    metaphorical, then the way we thinks what we
    experience, and what we do every day is very much a
    matter of metaphor.
                     George Lakoff and Mark Johnson
                                     Metaphors We Live By
DATABASES
A brief history of   ^ architecture
Connected
                   Devices

 Smartphone                   N-tier     Web App

                Personal                     DCOM      CORBA
               Computer        Website

Minicomputer
                                                Client/Server
 Mainframe

             Integrated                Distributed

             Computing Architectures
Domain-specific
                         Data APIs
 Private
Cloud DBs
              Caching DBs
                                Data API
                                                      Data
                                                   Warehousing
 Mainframe

                                           RDBMS
  Flat file
                                    Shared
               Silos

                Data Architectures
We’ve come back to client-server computing
From the perspective of the mobile client,
the Internet is a database.
Is that a skeuomorph or a metaphor?
If the Internet is a database,
what have we learned from prior eras about
architecting for performance?
MOBILE
PERFORMANCE
The classic client-server problem returns
If the database is slow, the app is slow.
Research shows that people will put up with
about 1.5 seconds between interactions.
More than 3 seconds on average
and they’ll stop using the app.
This is a problem.
Let’s dig into our client-server history
to break it down.
Make the application smarter

Use the network intelligently

Optimize the database aggressively
MAKE THE
APPLICATION
SMARTER
application




    What makes the app feel fast to the user?
application



    Time to first render

    Time to first interaction

    Time between interactions
application


    Three mutually reinforcing techniques:

    Code profiling for performance optimization

    Threading/concurrency for user interactions

    Client-side caching for everything else
application


    Use the profiler to see where you’re slow

    Write faster code where you see big gains

    Run long operations in parallel

    Keep local copies of everything you need
application




    Concurrency
application




    Anticipation
application




    Caching
application


    What should you be caching locally?

    Security credentials or tokens
    Last user session data
    MRU (Most recently used)
    MFU (Most frequently used)
    LFC (Least frequently changed)
    API write operations
    Graceful fallbacks for failed API calls
application



    Issues do remain

    Can’t hit local cache on first use of app
    Receiving the right shape of data
USE THE
NETWORK
INTELLIGENTLY
network




   The radio network is a
         high-latency,
                limited-resource environment.
network




   Speed and battery usage
   are both important dimensions of
   mobile performance
network



   Intermittent usage of the radio for

   pingbacks
   keep-alives
   analytics
   screen rotations

   will slow you down and burn battery.
network




   A better approach:

   Bundling, piggybacking, and pipelining
network

                      Connection                       Tail
                        setup                         time

                           2 sec    n sec           15 sec
                                     Data
                   Idle            transfer



   Battery cost of a series of small API requests

                          90 sec of radio use and battery burn



   Bundling a set of API requests

          19 sec
network



   Intermittent analytics and keep-alives

                   90 sec of radio use and battery burn



   Piggybacking on a set of user API requests

          19 sec
network
   API calls in series

     200 ms     200 ms   200 ms    200 ms   200 ms


                         1000 ms


   API pipelining
Bundling loosely-related requests together

Piggybacking secondary intermittent traffic

Pipelining requests to maximize throughput
OPTIMIZE THE
DATABASE
AGGRESSIVELY
database




    What were our old
    database optimization tricks
    that we can apply to Internet data?
database


    Stored Procedures

    Queueing

    Denormalization

    Result Sets
database

  What is a Stored Procedure in this world?


  Server-side code that executes complex operations

  Ones that should happen right next to the data

  Where you need high compute and low latency

  Could be written in node.js, ruby, java, python, c#
database

  Where does a Stored Procedure run in this world?
database

  Where does a Stored Procedure run in this world?



  Probably in a cloud
database




    Once you’ve built this architectural layer
    you gain a lot of control
database




    You can deal with queueing, denormalization,
    and manage result sets properly.
database


  Queueing enables you to break the
  request/response pair into separate pieces

  You may even be able to tell the client when to call
  you back for the result

  Making your requests to this queueing layer also lets
  you serve from a cloud-side cache if you have one
database


  Denormalization refers to writing multiple indexes
  in order to optimize query performance

  Where your app relies on your own data, don’t
  make it wait for slow queries

  Remember, in the cloud, storage is cheap and easy
  to obtain – write data as often as needed to improve
  query speeds.
database


  Managing result sets to save bandwidth and
  response time means limiting cursor size by default

  This can be complementary to the caches you keep
  around, since a massive API result is cheap to
  manage in the cloud

  and can be trickled back to the app in bite-size
  chunks.
database


  Managing result sets to save processor time for the
  client is an option as well.

  What would happen if you could focus on
  app-shaped data?
XML in Javascript

var parseXml;
if (typeof window.DOMParser != "undefined")
{
     parseXml = function(xmlStr) {
         return (new window.DOMParser()).parseFromString(xmlStr,"text/xml");
     };
}
else if (typeof window.ActiveXObject != "undefined" &&
     new window.ActiveXObject("Microsoft.XMLDOM"))
{
     parseXml = function(xmlStr) {
          var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
          xmlDoc.async = "false";
          xmlDoc.loadXML(xmlStr);
          return xmlDoc;
     };
}
else { throw new Error("No XML parser found"); }

var xml = parseXml("<result>true</result><count>1</count>");
alert(xml.documentElement.nodeName);
JSON in Javascript

var json = '{"result":true,"count":1}',
    obj = JSON.parse(json);

alert(obj.count);
IN
CLOSING
There are a few things we can
borrow from the past
to help us right now
Make the application smarter

Use the network intelligently

Optimize the database aggressively
What did you decide about the statement

“The internet is a database”?
Carpentry in marble?

or cognitive tool?
Skeuomorph?

or metaphor?
groups.google.com/group/api-craft
THANK YOU
Questions and ideas to:
@sramji


groups.google.com/group/api-craft

More Related Content

What's hot

Software Strategy
Software StrategySoftware Strategy
Software StrategyAlec Shutze
 
Building The Pillars Of Modern Enterprise
Building The Pillars Of Modern EnterpriseBuilding The Pillars Of Modern Enterprise
Building The Pillars Of Modern EnterpriseKrishnan Subramanian
 
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...Chris Richardson
 
CloudCamp London 3 - 451 Group - William Fellows
CloudCamp London 3 - 451 Group - William FellowsCloudCamp London 3 - 451 Group - William Fellows
CloudCamp London 3 - 451 Group - William FellowsChris Purrington
 
Research Report: Cloud Trends in 2011 and beyond
Research Report: Cloud Trends in 2011 and beyondResearch Report: Cloud Trends in 2011 and beyond
Research Report: Cloud Trends in 2011 and beyondKrishnan Subramanian
 
JBCN_Testing_With_Containers
JBCN_Testing_With_ContainersJBCN_Testing_With_Containers
JBCN_Testing_With_ContainersGrace Jansen
 
Cloud Computing Update 1
Cloud Computing Update 1Cloud Computing Update 1
Cloud Computing Update 1James Sutter
 
Pragmatic approach to Microservice Architecture: Role of Middleware
Pragmatic approach to Microservice Architecture: Role of MiddlewarePragmatic approach to Microservice Architecture: Role of Middleware
Pragmatic approach to Microservice Architecture: Role of MiddlewareAsanka Abeysinghe
 
Can we hack open source #cloud platforms to help reduce emissions?
Can we hack open source #cloud platforms to help reduce emissions?Can we hack open source #cloud platforms to help reduce emissions?
Can we hack open source #cloud platforms to help reduce emissions?Tom Raftery
 
Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions Chris Richardson
 
Open Source Solutions: Managing, Analyzing and Delivering Business Information
Open Source Solutions: Managing, Analyzing and Delivering Business InformationOpen Source Solutions: Managing, Analyzing and Delivering Business Information
Open Source Solutions: Managing, Analyzing and Delivering Business Informationmark madsen
 
AWS Summit Benelux 2013 - 'Transformation Powered by the AWS Cloud' Keynote
AWS Summit Benelux 2013 - 'Transformation Powered by the AWS Cloud' KeynoteAWS Summit Benelux 2013 - 'Transformation Powered by the AWS Cloud' Keynote
AWS Summit Benelux 2013 - 'Transformation Powered by the AWS Cloud' KeynoteAmazon Web Services
 
Decomposing applications for deployability and scalability(SpringSource webinar)
Decomposing applications for deployability and scalability(SpringSource webinar)Decomposing applications for deployability and scalability(SpringSource webinar)
Decomposing applications for deployability and scalability(SpringSource webinar)Chris Richardson
 
Breaking through the Clouds
Breaking through the CloudsBreaking through the Clouds
Breaking through the CloudsAndy Piper
 
Jr genexus event2011
Jr genexus event2011Jr genexus event2011
Jr genexus event2011GeneXus
 
VMblog - 2018 Containers Predictions from 16 Industry Experts
VMblog - 2018 Containers Predictions from 16 Industry ExpertsVMblog - 2018 Containers Predictions from 16 Industry Experts
VMblog - 2018 Containers Predictions from 16 Industry Expertsvmblog
 

What's hot (19)

Software Strategy
Software StrategySoftware Strategy
Software Strategy
 
Building The Pillars Of Modern Enterprise
Building The Pillars Of Modern EnterpriseBuilding The Pillars Of Modern Enterprise
Building The Pillars Of Modern Enterprise
 
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...
 
CloudCamp London 3 - 451 Group - William Fellows
CloudCamp London 3 - 451 Group - William FellowsCloudCamp London 3 - 451 Group - William Fellows
CloudCamp London 3 - 451 Group - William Fellows
 
Research Report: Cloud Trends in 2011 and beyond
Research Report: Cloud Trends in 2011 and beyondResearch Report: Cloud Trends in 2011 and beyond
Research Report: Cloud Trends in 2011 and beyond
 
JBCN_Testing_With_Containers
JBCN_Testing_With_ContainersJBCN_Testing_With_Containers
JBCN_Testing_With_Containers
 
Opensourceshift
OpensourceshiftOpensourceshift
Opensourceshift
 
Cloud Computing Update 1
Cloud Computing Update 1Cloud Computing Update 1
Cloud Computing Update 1
 
Pragmatic approach to Microservice Architecture: Role of Middleware
Pragmatic approach to Microservice Architecture: Role of MiddlewarePragmatic approach to Microservice Architecture: Role of Middleware
Pragmatic approach to Microservice Architecture: Role of Middleware
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Can we hack open source #cloud platforms to help reduce emissions?
Can we hack open source #cloud platforms to help reduce emissions?Can we hack open source #cloud platforms to help reduce emissions?
Can we hack open source #cloud platforms to help reduce emissions?
 
Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions
 
Open Source Solutions: Managing, Analyzing and Delivering Business Information
Open Source Solutions: Managing, Analyzing and Delivering Business InformationOpen Source Solutions: Managing, Analyzing and Delivering Business Information
Open Source Solutions: Managing, Analyzing and Delivering Business Information
 
Moving To SaaS
Moving To SaaSMoving To SaaS
Moving To SaaS
 
AWS Summit Benelux 2013 - 'Transformation Powered by the AWS Cloud' Keynote
AWS Summit Benelux 2013 - 'Transformation Powered by the AWS Cloud' KeynoteAWS Summit Benelux 2013 - 'Transformation Powered by the AWS Cloud' Keynote
AWS Summit Benelux 2013 - 'Transformation Powered by the AWS Cloud' Keynote
 
Decomposing applications for deployability and scalability(SpringSource webinar)
Decomposing applications for deployability and scalability(SpringSource webinar)Decomposing applications for deployability and scalability(SpringSource webinar)
Decomposing applications for deployability and scalability(SpringSource webinar)
 
Breaking through the Clouds
Breaking through the CloudsBreaking through the Clouds
Breaking through the Clouds
 
Jr genexus event2011
Jr genexus event2011Jr genexus event2011
Jr genexus event2011
 
VMblog - 2018 Containers Predictions from 16 Industry Experts
VMblog - 2018 Containers Predictions from 16 Industry ExpertsVMblog - 2018 Containers Predictions from 16 Industry Experts
VMblog - 2018 Containers Predictions from 16 Industry Experts
 

Viewers also liked

The API Tempest
The API TempestThe API Tempest
The API TempestSam Ramji
 
Globalization, Black Swans, and APIs
Globalization, Black Swans, and APIsGlobalization, Black Swans, and APIs
Globalization, Black Swans, and APIsSam Ramji
 
Data Entitlement in an API-Centric Architecture
Data Entitlement in an API-Centric ArchitectureData Entitlement in an API-Centric Architecture
Data Entitlement in an API-Centric ArchitectureWSO2
 
Cloud Foundry - #IBMOTS 2016
Cloud Foundry - #IBMOTS 2016Cloud Foundry - #IBMOTS 2016
Cloud Foundry - #IBMOTS 2016Sam Ramji
 
Zen and the Art of Platform
Zen and the Art of PlatformZen and the Art of Platform
Zen and the Art of PlatformSam Ramji
 
Punctuated Equilibrium, Celestial Navigation, and APIs
Punctuated Equilibrium, Celestial Navigation, and APIsPunctuated Equilibrium, Celestial Navigation, and APIs
Punctuated Equilibrium, Celestial Navigation, and APIsSam Ramji
 
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotFrom 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotVMware Tanzu
 
Amundsen's Dogs, Information Halos, and APIs
Amundsen's Dogs, Information Halos, and APIsAmundsen's Dogs, Information Halos, and APIs
Amundsen's Dogs, Information Halos, and APIsSam Ramji
 
Futurist Speaker Gerd Leonhard: Bottom Line Future Trends (summary)
Futurist Speaker Gerd Leonhard: Bottom Line Future Trends (summary)Futurist Speaker Gerd Leonhard: Bottom Line Future Trends (summary)
Futurist Speaker Gerd Leonhard: Bottom Line Future Trends (summary)Gerd Leonhard
 
Deck from Cap Gemini Conference
Deck from Cap Gemini ConferenceDeck from Cap Gemini Conference
Deck from Cap Gemini ConferenceGeoffrey Moore
 
Darwin's Finches, 20th Century Business, and APIs
Darwin's Finches, 20th Century Business, and APIsDarwin's Finches, 20th Century Business, and APIs
Darwin's Finches, 20th Century Business, and APIsSam Ramji
 
Cloud Foundry as Containerized Services - Cloud Foundry Days Tokyo 2016
Cloud Foundry as Containerized Services - Cloud Foundry Days Tokyo 2016Cloud Foundry as Containerized Services - Cloud Foundry Days Tokyo 2016
Cloud Foundry as Containerized Services - Cloud Foundry Days Tokyo 2016JUNICHI YOSHISE
 
The digital transformation of society and business: 2020. Futurist keynote sp...
The digital transformation of society and business: 2020. Futurist keynote sp...The digital transformation of society and business: 2020. Futurist keynote sp...
The digital transformation of society and business: 2020. Futurist keynote sp...Gerd Leonhard
 
Technology vs Humanity: key themes from Futurist Gerd Leonhard's new book
Technology vs Humanity: key themes from Futurist Gerd Leonhard's new bookTechnology vs Humanity: key themes from Futurist Gerd Leonhard's new book
Technology vs Humanity: key themes from Futurist Gerd Leonhard's new bookGerd Leonhard
 

Viewers also liked (14)

The API Tempest
The API TempestThe API Tempest
The API Tempest
 
Globalization, Black Swans, and APIs
Globalization, Black Swans, and APIsGlobalization, Black Swans, and APIs
Globalization, Black Swans, and APIs
 
Data Entitlement in an API-Centric Architecture
Data Entitlement in an API-Centric ArchitectureData Entitlement in an API-Centric Architecture
Data Entitlement in an API-Centric Architecture
 
Cloud Foundry - #IBMOTS 2016
Cloud Foundry - #IBMOTS 2016Cloud Foundry - #IBMOTS 2016
Cloud Foundry - #IBMOTS 2016
 
Zen and the Art of Platform
Zen and the Art of PlatformZen and the Art of Platform
Zen and the Art of Platform
 
Punctuated Equilibrium, Celestial Navigation, and APIs
Punctuated Equilibrium, Celestial Navigation, and APIsPunctuated Equilibrium, Celestial Navigation, and APIs
Punctuated Equilibrium, Celestial Navigation, and APIs
 
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home DepotFrom 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
From 0 to 1000 Apps: The First Year of Cloud Foundry at the Home Depot
 
Amundsen's Dogs, Information Halos, and APIs
Amundsen's Dogs, Information Halos, and APIsAmundsen's Dogs, Information Halos, and APIs
Amundsen's Dogs, Information Halos, and APIs
 
Futurist Speaker Gerd Leonhard: Bottom Line Future Trends (summary)
Futurist Speaker Gerd Leonhard: Bottom Line Future Trends (summary)Futurist Speaker Gerd Leonhard: Bottom Line Future Trends (summary)
Futurist Speaker Gerd Leonhard: Bottom Line Future Trends (summary)
 
Deck from Cap Gemini Conference
Deck from Cap Gemini ConferenceDeck from Cap Gemini Conference
Deck from Cap Gemini Conference
 
Darwin's Finches, 20th Century Business, and APIs
Darwin's Finches, 20th Century Business, and APIsDarwin's Finches, 20th Century Business, and APIs
Darwin's Finches, 20th Century Business, and APIs
 
Cloud Foundry as Containerized Services - Cloud Foundry Days Tokyo 2016
Cloud Foundry as Containerized Services - Cloud Foundry Days Tokyo 2016Cloud Foundry as Containerized Services - Cloud Foundry Days Tokyo 2016
Cloud Foundry as Containerized Services - Cloud Foundry Days Tokyo 2016
 
The digital transformation of society and business: 2020. Futurist keynote sp...
The digital transformation of society and business: 2020. Futurist keynote sp...The digital transformation of society and business: 2020. Futurist keynote sp...
The digital transformation of society and business: 2020. Futurist keynote sp...
 
Technology vs Humanity: key themes from Futurist Gerd Leonhard's new book
Technology vs Humanity: key themes from Futurist Gerd Leonhard's new bookTechnology vs Humanity: key themes from Futurist Gerd Leonhard's new book
Technology vs Humanity: key themes from Futurist Gerd Leonhard's new book
 

Similar to Skeuomorphs, Databases, and Mobile Performance

Handling Data in Mega Scale Systems
Handling Data in Mega Scale SystemsHandling Data in Mega Scale Systems
Handling Data in Mega Scale SystemsDirecti Group
 
Computing Outside The Box September 2009
Computing Outside The Box September 2009Computing Outside The Box September 2009
Computing Outside The Box September 2009Ian Foster
 
Atmosphere 2014: Switching from monolithic approach to modular cloud computin...
Atmosphere 2014: Switching from monolithic approach to modular cloud computin...Atmosphere 2014: Switching from monolithic approach to modular cloud computin...
Atmosphere 2014: Switching from monolithic approach to modular cloud computin...PROIDEA
 
Linking Programming models between Grids, Web 2.0 and Multicore
Linking Programming models between Grids, Web 2.0 and Multicore Linking Programming models between Grids, Web 2.0 and Multicore
Linking Programming models between Grids, Web 2.0 and Multicore Geoffrey Fox
 
Computing Outside The Box June 2009
Computing Outside The Box June 2009Computing Outside The Box June 2009
Computing Outside The Box June 2009Ian Foster
 
Internet Scale Architecture
Internet Scale ArchitectureInternet Scale Architecture
Internet Scale ArchitectureRightScale
 
DM Radio Webinar: Adopting a Streaming-Enabled Architecture
DM Radio Webinar: Adopting a Streaming-Enabled ArchitectureDM Radio Webinar: Adopting a Streaming-Enabled Architecture
DM Radio Webinar: Adopting a Streaming-Enabled ArchitectureDATAVERSITY
 
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Nati Shalom
 
云计算及其应用
云计算及其应用云计算及其应用
云计算及其应用lantianlcdx
 
Computing Outside The Box
Computing Outside The BoxComputing Outside The Box
Computing Outside The BoxIan Foster
 
Gluecon Monitoring Microservices and Containers: A Challenge
Gluecon Monitoring Microservices and Containers: A ChallengeGluecon Monitoring Microservices and Containers: A Challenge
Gluecon Monitoring Microservices and Containers: A ChallengeAdrian Cockcroft
 
How Does Your Real-time Data Look?
How Does Your Real-time Data Look?How Does Your Real-time Data Look?
How Does Your Real-time Data Look?Supreet Oberoi
 
13h00 p duff-building-applications-with-aws-final
13h00   p duff-building-applications-with-aws-final13h00   p duff-building-applications-with-aws-final
13h00 p duff-building-applications-with-aws-finalLuiz Gustavo Santos
 
OSS Presentation Keynote by Hal Stern
OSS Presentation Keynote by Hal SternOSS Presentation Keynote by Hal Stern
OSS Presentation Keynote by Hal SternOpenStorageSummit
 
Big Data to SMART Data : Process Scenario
Big Data to SMART Data : Process ScenarioBig Data to SMART Data : Process Scenario
Big Data to SMART Data : Process ScenarioCHAKER ALLAOUI
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goalskamaelian
 
Windows Azure: Lessons From The Field
Windows Azure: Lessons From The FieldWindows Azure: Lessons From The Field
Windows Azure: Lessons From The FieldRob Gillen
 

Similar to Skeuomorphs, Databases, and Mobile Performance (20)

Handling Data in Mega Scale Systems
Handling Data in Mega Scale SystemsHandling Data in Mega Scale Systems
Handling Data in Mega Scale Systems
 
Computing Outside The Box September 2009
Computing Outside The Box September 2009Computing Outside The Box September 2009
Computing Outside The Box September 2009
 
Atmosphere 2014: Switching from monolithic approach to modular cloud computin...
Atmosphere 2014: Switching from monolithic approach to modular cloud computin...Atmosphere 2014: Switching from monolithic approach to modular cloud computin...
Atmosphere 2014: Switching from monolithic approach to modular cloud computin...
 
Linking Programming models between Grids, Web 2.0 and Multicore
Linking Programming models between Grids, Web 2.0 and Multicore Linking Programming models between Grids, Web 2.0 and Multicore
Linking Programming models between Grids, Web 2.0 and Multicore
 
Computing Outside The Box June 2009
Computing Outside The Box June 2009Computing Outside The Box June 2009
Computing Outside The Box June 2009
 
Network Information Factories
Network Information FactoriesNetwork Information Factories
Network Information Factories
 
Internet Scale Architecture
Internet Scale ArchitectureInternet Scale Architecture
Internet Scale Architecture
 
DM Radio Webinar: Adopting a Streaming-Enabled Architecture
DM Radio Webinar: Adopting a Streaming-Enabled ArchitectureDM Radio Webinar: Adopting a Streaming-Enabled Architecture
DM Radio Webinar: Adopting a Streaming-Enabled Architecture
 
Intro Cloud Computing
Intro Cloud ComputingIntro Cloud Computing
Intro Cloud Computing
 
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
 
云计算及其应用
云计算及其应用云计算及其应用
云计算及其应用
 
Computing Outside The Box
Computing Outside The BoxComputing Outside The Box
Computing Outside The Box
 
Gluecon Monitoring Microservices and Containers: A Challenge
Gluecon Monitoring Microservices and Containers: A ChallengeGluecon Monitoring Microservices and Containers: A Challenge
Gluecon Monitoring Microservices and Containers: A Challenge
 
How Does Your Real-time Data Look?
How Does Your Real-time Data Look?How Does Your Real-time Data Look?
How Does Your Real-time Data Look?
 
13h00 p duff-building-applications-with-aws-final
13h00   p duff-building-applications-with-aws-final13h00   p duff-building-applications-with-aws-final
13h00 p duff-building-applications-with-aws-final
 
OSS Presentation Keynote by Hal Stern
OSS Presentation Keynote by Hal SternOSS Presentation Keynote by Hal Stern
OSS Presentation Keynote by Hal Stern
 
Big Data to SMART Data : Process Scenario
Big Data to SMART Data : Process ScenarioBig Data to SMART Data : Process Scenario
Big Data to SMART Data : Process Scenario
 
Building Applications with AWS
Building Applications with AWSBuilding Applications with AWS
Building Applications with AWS
 
Scaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, GoalsScaling Streaming - Concepts, Research, Goals
Scaling Streaming - Concepts, Research, Goals
 
Windows Azure: Lessons From The Field
Windows Azure: Lessons From The FieldWindows Azure: Lessons From The Field
Windows Azure: Lessons From The Field
 

Recently uploaded

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 

Recently uploaded (20)

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 

Skeuomorphs, Databases, and Mobile Performance

  • 1. Skeuomorphs, Databases, and Mobile Performance Architecting for performance with devices & APIs groups.google.com/group/api-craft Sam Ramji @sramji Apigee
  • 3. A brief history of architecture
  • 4. Banister Fletcher A History of Architecture
  • 5.
  • 6.
  • 7. Greek columns and their entablatures were at first entirely of timber, with terra-cotta decorations in the upper trabeation, but were converted into stone quite early in the [Hellenic] period, about 600 BC. The translation was quite direct, timber forms being imitated in stonework with remarkable exactness. For this reason, Greek architecture sometimes has been called a ‘carpentry in marble’… Banister Fletcher A History of Architecture
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 14. Skeuomorph A skeuomorph is a design feature found on an imitation, pastiche or homage that was necessary only to the original. Often used for the sake of familiarity, they are details that have moved from function to form. Tom Petty hipstercheerleaders.com
  • 15. Metaphor In cognitive linguistics, conceptual metaphor, or cognitive metaphor, refers to the understanding of one idea, or conceptual domain, in terms of another, for example, understanding quantity in terms of directionality (e.g. "prices are rising"). Wikipedia.org Conceptual Metaphors
  • 16. The concepts that govern our thought are not just matters of the intellect. They also govern our everyday functioning, down to the most mundane details. Our concepts structure what we perceive, how we get around in the world, and how we relate to other people. Our conceptual system thus plays a central role in defining our everyday realities. If we are right in suggesting that our conceptual system is largely metaphorical, then the way we thinks what we experience, and what we do every day is very much a matter of metaphor. George Lakoff and Mark Johnson Metaphors We Live By
  • 18. A brief history of ^ architecture
  • 19. Connected Devices Smartphone N-tier Web App Personal DCOM CORBA Computer Website Minicomputer Client/Server Mainframe Integrated Distributed Computing Architectures
  • 20. Domain-specific Data APIs Private Cloud DBs Caching DBs Data API Data Warehousing Mainframe RDBMS Flat file Shared Silos Data Architectures
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38. We’ve come back to client-server computing
  • 39. From the perspective of the mobile client, the Internet is a database.
  • 40. Is that a skeuomorph or a metaphor?
  • 41. If the Internet is a database, what have we learned from prior eras about architecting for performance?
  • 43. The classic client-server problem returns
  • 44. If the database is slow, the app is slow.
  • 45. Research shows that people will put up with about 1.5 seconds between interactions.
  • 46. More than 3 seconds on average and they’ll stop using the app.
  • 47. This is a problem.
  • 48. Let’s dig into our client-server history to break it down.
  • 49. Make the application smarter Use the network intelligently Optimize the database aggressively
  • 51. application What makes the app feel fast to the user?
  • 52. application Time to first render Time to first interaction Time between interactions
  • 53. application Three mutually reinforcing techniques: Code profiling for performance optimization Threading/concurrency for user interactions Client-side caching for everything else
  • 54. application Use the profiler to see where you’re slow Write faster code where you see big gains Run long operations in parallel Keep local copies of everything you need
  • 55. application Concurrency
  • 56.
  • 57. application Anticipation
  • 58.
  • 59.
  • 60. application Caching
  • 61.
  • 62.
  • 63. application What should you be caching locally? Security credentials or tokens Last user session data MRU (Most recently used) MFU (Most frequently used) LFC (Least frequently changed) API write operations Graceful fallbacks for failed API calls
  • 64. application Issues do remain Can’t hit local cache on first use of app Receiving the right shape of data
  • 66. network The radio network is a high-latency, limited-resource environment.
  • 67.
  • 68. network Speed and battery usage are both important dimensions of mobile performance
  • 69.
  • 70. network Intermittent usage of the radio for pingbacks keep-alives analytics screen rotations will slow you down and burn battery.
  • 71.
  • 72. network A better approach: Bundling, piggybacking, and pipelining
  • 73. network Connection Tail setup time 2 sec n sec 15 sec Data Idle transfer Battery cost of a series of small API requests 90 sec of radio use and battery burn Bundling a set of API requests 19 sec
  • 74. network Intermittent analytics and keep-alives 90 sec of radio use and battery burn Piggybacking on a set of user API requests 19 sec
  • 75. network API calls in series 200 ms 200 ms 200 ms 200 ms 200 ms 1000 ms API pipelining
  • 76. Bundling loosely-related requests together Piggybacking secondary intermittent traffic Pipelining requests to maximize throughput
  • 78. database What were our old database optimization tricks that we can apply to Internet data?
  • 79. database Stored Procedures Queueing Denormalization Result Sets
  • 80. database What is a Stored Procedure in this world? Server-side code that executes complex operations Ones that should happen right next to the data Where you need high compute and low latency Could be written in node.js, ruby, java, python, c#
  • 81. database Where does a Stored Procedure run in this world?
  • 82. database Where does a Stored Procedure run in this world? Probably in a cloud
  • 83. database Once you’ve built this architectural layer you gain a lot of control
  • 84. database You can deal with queueing, denormalization, and manage result sets properly.
  • 85. database Queueing enables you to break the request/response pair into separate pieces You may even be able to tell the client when to call you back for the result Making your requests to this queueing layer also lets you serve from a cloud-side cache if you have one
  • 86. database Denormalization refers to writing multiple indexes in order to optimize query performance Where your app relies on your own data, don’t make it wait for slow queries Remember, in the cloud, storage is cheap and easy to obtain – write data as often as needed to improve query speeds.
  • 87. database Managing result sets to save bandwidth and response time means limiting cursor size by default This can be complementary to the caches you keep around, since a massive API result is cheap to manage in the cloud and can be trickled back to the app in bite-size chunks.
  • 88. database Managing result sets to save processor time for the client is an option as well. What would happen if you could focus on app-shaped data?
  • 89. XML in Javascript var parseXml; if (typeof window.DOMParser != "undefined") { parseXml = function(xmlStr) { return (new window.DOMParser()).parseFromString(xmlStr,"text/xml"); }; } else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) { parseXml = function(xmlStr) { var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(xmlStr); return xmlDoc; }; } else { throw new Error("No XML parser found"); } var xml = parseXml("<result>true</result><count>1</count>"); alert(xml.documentElement.nodeName);
  • 90. JSON in Javascript var json = '{"result":true,"count":1}', obj = JSON.parse(json); alert(obj.count);
  • 92. There are a few things we can borrow from the past to help us right now
  • 93. Make the application smarter Use the network intelligently Optimize the database aggressively
  • 94. What did you decide about the statement “The internet is a database”?
  • 95. Carpentry in marble? or cognitive tool?
  • 98. THANK YOU Questions and ideas to: @sramji groups.google.com/group/api-craft

Editor's Notes

  1. http://openarch.eu/work-packages/activities/everyday-life-past-crafting-wooden-anthropomorphic-statue-using-wooden
  2. http://greenwood-carving.blogspot.co.uk/2012/02/more-bronze-age-woodworking.html
  3. So now we make them out of concrete!What’s even funnier is that since we discovered the Greek columns so long after they were used, the gilding and brightly colored paint used on them had faded, so we associate white columns with eminence and classical majesty… when they in fact were never so pale.
  4. http://hipstercheerleaders.com/post/6981850000/how-to-talk-to-bolivian-hand-models-at-parties
  5. http://en.wikipedia.org/wiki/Conceptual_metaphor
  6. Just in the last twenty years, we’ve gone from writing code on a single PC or Mac that will run on a single PC or Mac and its local filesystem -&gt; writing code on a single PC that will run simultaneously on several PCs, coordinated by a shared database -&gt; writing code on a single PC that will run on a single server and its local database while sending UI files to any PC or Mac that can access the server -&gt; writing code as a team on several different PCs that will run partially on {one or more servers in a cluster and their shared database plus other network-addressable applications such as file servers or ERP/CRM systems} and partially in the browser app sandbox on any PC or Mac that can access the server cluster -&gt; writing code on a single Mac that will run on a single iPhone -&gt; writing code as a team on several different PCs and Macs that will run partially on a single iPhone and partially on one or more servers in a cluster and their shared database plus other network-addressable applications such as file servers, ERP/CRM systems, Twitter, Facebook, Salesforce, or eBay -&gt; writing code as a team on several different PCs and Macs that will run partially on an iPhone, an iPad, an Android phone, a PC, and a Mac and partially on one or more servers in a cluster and their shared database plus other network-addressable applications such as file servers, ERP/CRM systems, Twitter, Facebook, Salesforce, or eBay.
  7. We called it client-server, and it was good
  8. Then we found more servers we needed to get data from
  9. And then we delivered it over the internet in web pages or sometimes just a longer wire (which often broke apps due to WAN/VPN latency).
  10. And then the computers got smaller so people started to move around and work from anywhere
  11. In the beginning, there was a smartphone
  12. Then Apple made phones REALLY smart
  13. So of course we wanted Twitter on our phone
  14. And Facebook. And why can’t we get our work done on this too?
  15. And pretty quickly we ended up back heree
  16. But it got even more complex because we need to support many different devices.[discuss shift from MVC on a web server to “exploded model” – ‘some people call this a distributed model, I prefer exploded to show just how distributed it really is – not just on-prem distribution but to 3rd parties like Salesforce, Facebook, et al]
  17. Issues remain – can’t hit local cache on first use of the app; important in a world of disposable apps and disposable devices. Are we getting the right shape of data at the right time or are we getting more than we need or spending time reshaping it?
  18. Issues remain – can’t hit local cache on first use of the app; important in a world of disposable apps and disposable devices. Are we getting the right shape of data at the right time or are we getting more than we need or spending time reshaping it?
  19. http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=XyFGnPzW0TV“A Call for More Energy-Efficient Apps”
  20. Issues remain – can’t hit local cache on first use of the app; important in a world of disposable apps and disposable devices. Are we getting the right shape of data at the right time or are we getting more than we need or spending time reshaping it?
  21. http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=XyFGnPzW0TV“A Call for More Energy-Efficient Apps”
  22. Issues remain – can’t hit local cache on first use of the app; important in a world of disposable apps and disposable devices. Are we getting the right shape of data at the right time or are we getting more than we need or spending time reshaping it?
  23. Issues remain – can’t hit local cache on first use of the app; important in a world of disposable apps and disposable devices. Are we getting the right shape of data at the right time or are we getting more than we need or spending time reshaping it?
  24. Adapted from http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=XyFGnPzW0TV
  25. Adapted from http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=XyFGnPzW0TV
  26. Adapted from http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=XyFGnPzW0TV
  27. http://stackoverflow.com/questions/649614/xml-parsing-in-javascript
  28. http://stackoverflow.com/questions/649614/xml-parsing-in-javascript