SlideShare a Scribd company logo
Evolving Mobile
 Architectures    Stewart Gleadow
                  http://stewgleadow.com
                  @stewgleadow



                  Martin Fowler
                  http://martinfowler.com
                  @martinfowler
Good products evolve over time




http://www.flickr.com/photos/autohistorian/6902804230/
Remember the early days
of the web?


http://www.icehousedesigns.com/webarchive/images/flshbk_COLLAGE2.gif
›❯   Apps for multiple mobile platforms

›❯   Evolving hybrid architectures

›❯   Mobile backend systems

›❯   Testing hybrid applications

Recommended for you

Hybrid app development
Hybrid app developmentHybrid app development
Hybrid app development

Hybrid app development allows building a single app that can run on multiple platforms using web technologies like HTML, CSS, and JavaScript. It has advantages like lower costs, faster development time, and easier maintenance compared to building native apps for each platform. Popular frameworks for hybrid apps include PhoneGap, Ionic, and React Native. While hybrid apps have performance limitations compared to native, they are suitable when targeting multiple platforms or when most device functionality can be accessed through frameworks.

hybrid app developmentnative app developmentmobile applications
Phone gap
Phone gapPhone gap
Phone gap

The document summarizes a seminar presentation on PhoneGap. PhoneGap is a mobile development framework that allows developers to build mobile apps using common web technologies like HTML, CSS, and JavaScript. This allows apps to be compiled for multiple platforms like iOS, Android, and Windows Phone from a single codebase. The presentation discusses what PhoneGap is, how it works, its advantages like cross-platform development, and disadvantages like limitations of web-based apps. It includes demo code and concludes PhoneGap is useful for small apps but native development is better for graphics-intensive apps.

Developer Experience (DX) for UX Professionals
Developer Experience (DX) for UX ProfessionalsDeveloper Experience (DX) for UX Professionals
Developer Experience (DX) for UX Professionals

Ian Jennings presents at the Austin UXPA meetup on November 12, 2019 at Visa. Developer Experience (DX) is the equivalent to User Experience (UX) when the user of the software or system is a developer. Sure, the science is the same, but this talk will teach you why developer experience is gaining traction as a new field. Between APIs, SDKs, code, documentation, demos, CLIs, tutorials, and developer portals, DX is a whole new beast. Learn about the emergence of Developer Experience, the similarities and differences between UX an DX, and the tools you need to apply your UX experience toward the field of DX. Speaker Bio: Ian Jennings is the founder of Haxor, a developer experience testing platform based in Austin TX. Haxor tests and measures APIs, SDKs, and developer products with on-demand feedback from real developers. Previously Ian co-founded developer meetup platform Hacker League (acquired by Mashery and Intel) before spending 6 years at PubNub establishing their developer experience strategy. He also operates DevPort, a developer portfolio site populated by thousands of developers.

devreldeveloperapi
›❯   Apps for multiple mobile platforms

›❯   Evolving hybrid architectures

›❯   Mobile backend systems

›❯   Testing hybrid applications
Evolving Mobile Architectures
All Native


             ✓ Easy to Begin
             ✓   Good UX
There is nothing worse than
a good mobile application

                  invest in UX

                  reuse UX

Recommended for you

Selenium Camp 2016
Selenium Camp 2016Selenium Camp 2016
Selenium Camp 2016

Appium is a popular open source mobile application UI automation framework. These are the slide from Selenium Camp 2016 in Kiev.

software testingandroidsoftware development
The future of the CMS
The future of the CMSThe future of the CMS
The future of the CMS

The document summarizes Todd Ross Nienkerk's presentation on decoupled content management system (CMS) architecture. Some key points: - A decoupled CMS separates the content storage and delivery mechanisms, allowing content to be delivered to various channels through APIs instead of being tied to specific frontends. - Decoupling a CMS makes sense when organizations want to adopt cutting-edge frontend technologies, separate upgrades from redesigns, eliminate tension between design and CMS constraints, or publish content to multiple channels. - Case studies of organizations like TWiT that have moved to a decoupled CMS architecture are discussed, highlighting benefits like faster website updates, easier app development, and encouraging community contributions.

cmsdevelopmentcontent management
Progress Rollbase: Building Powerful Applications One Block at a Time
Progress Rollbase:  Building Powerful Applications One Block at a TimeProgress Rollbase:  Building Powerful Applications One Block at a Time
Progress Rollbase: Building Powerful Applications One Block at a Time

Model-driven development allows users to build apps through a drag-and-drop interface of pre-built components, reducing coding by up to 80%. This approach makes app creation accessible even to non-developers by optimizing for mobile deployment and offering apps on the cloud, on-premise, or in a hybrid environment through a four-step process of naming the app, creating objects, customizing interfaces, and defining relationships between objects. A two-minute video tour demonstrates how to use Progress Rollbase to immediately start developing powerful enterprise applications.

rollbaseprogress pacificpaas
All Native


             ✓ Easy to Begin
             ✓   Good UX

             ✘ Expensive
Cross Platform


                 ✘ Slightly worse UX
                 ✓ Low cost
Cross Platform


                  ✘ Slightly worse UX
                  ✓ Low cost

    Write Once Run Anywhere
Translated UI

Recommended for you

Android App Development Journey
Android App Development JourneyAndroid App Development Journey
Android App Development Journey

This document provides an overview of the Android app development process from idea generation to publishing on the Google Play Store. It discusses developing a minimum viable product (MVP) with the highest return for investment and risk, field testing the app, and methods for driving installs and user retention after publishing. The example app described aims to help people quantify the quality of their daily commutes.

androidstrada dashboard
Rethinking Mobile with Ionic
Rethinking Mobile with IonicRethinking Mobile with Ionic
Rethinking Mobile with Ionic

The document discusses the Ionic framework for building hybrid mobile apps using web technologies like Angular. It highlights how Ionic allows web developers to build native-feeling apps, provides an SDK for developing these apps, and empowers developers. Ionic 2 aims to push the limits of what is possible with web technology by keeping apps simple, providing a better native experience, and reducing tooling fatigue. Ionic also makes it easy to build progressive web apps that can be installed like native apps and work offline.

Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap

PhoneGap is an open source tool that allows developers to build mobile apps using HTML, CSS, and JavaScript instead of native languages like Objective-C or Java. It wraps the web view container to give apps access to device features like geolocation and accelerometers. While documentation is still maturing and bugs may exist, PhoneGap is free, open source, and offers developers a way to create cross-platform mobile apps without having to learn multiple programming languages. Sample PhoneGap apps and getting started resources are provided.

androidphonegapg1
Translated UI




Controls   Overall UX
Controls

                       Lowest Common
1. Use Native            Denominator

                      Not quite right
2. Mimic

              Uncanny Valley
Translated UI




Controls   Overall UX
Overall UX




reuse UX

Recommended for you

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

Until recently, debugging a mobile web site was incredibly difficult. Luckily things things have changed. Now some desktop browsers not only contain remote debuggers, but have other features to monitor and improve performance and detect memory leaks.

webbrowsersweinre
Getting Acquainted with PhoneGap
Getting Acquainted with PhoneGapGetting Acquainted with PhoneGap
Getting Acquainted with PhoneGap

An overview of developing mobile applications with HTML, CSS and JavaScript using PhoneGap, node.js, Brackets and related tools.

appsadobemobile
Performance testing of mobile apps
Performance testing of mobile appsPerformance testing of mobile apps
Performance testing of mobile apps

This talk was presented at VodQA Gurgaon 3rd edition (11 July 2013) Talk Abstract: In midst of testing functional aspect of your mobile apps, performance testing is often ignored or takes a back seat. With the strict quality checks on app stores and other platforms, it becomes all the more essentials for your app to meet performance criteria. We would be focusing on understanding these criteria in detail, their impact and ways to tackle them. Speakers: Rupesh Dubey: Rupesh has 5+ years of experience in Test Automation and Manual testing and have been with ThoughtWorks for more than 3 years. He has worked in various domains including HealthCare and Business Consulting. Priyank Dhillon: He has around 8 years of experience as QA. He has worked on domains such as Telecom, Video and E-commerce and has been involved in different aspects of testing such as Security, White box, Performance. He has worked in software automation testing using wide range of automation tools, doing manual testing and in requirement analysis.

thoughtworksperformance testingios
Translated UI




Controls   Overall UX
?
    Cross Platform
?
    Portable Platform
       Cross
Translated UI




Frankenstein UI

Recommended for you

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

The document discusses how the Ionic framework allows developers to easily convert Angular web apps into mobile apps. It outlines a 7 step process to take an existing Angular contacts app and deploy it as a mobile app using Ionic and Cordova. Key steps include choosing an Ionic UI, copying over code, switching to UI-router, adding Ionic views, utilizing device capabilities, adding app resources, and deploying to app stores. Ionic provides Angular developers an easy way to build cross-platform mobile apps without having to learn new languages and frameworks.

cordovaangularjsrockncoder
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week

This document discusses building a full-stack application called MemeMail using Golang and Google Cloud Platform within one week. It describes choosing Google Cloud over other cloud providers for its ease of use. It then discusses the frontend implementation using Vue.js with a simple state mutation approach. The backend is built with Golang on App Engine using Cloud services like Datastore and Cloud Build for CI/CD. It emphasizes keeping the architecture simple rather than over-engineering for an MVP within a tight deadline.

golangcloudgoogle cloud platform
Building Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGapBuilding Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGap

PhoneGap allows developers to build mobile apps using standard web technologies like HTML, CSS, and JavaScript. It works by packaging web apps so they can be deployed and run as native mobile applications on different platforms. The document discusses how to build an Android app using PhoneGap, including setting up the project structure, adding the PhoneGap library, implementing a basic "Hello World" app, and extending functionality through plugins. It also covers debugging PhoneGap apps and some limitations compared to native development.

html5androidandroid tutorials
Web App




Portable Platform
✗ Missing Features ✗ App Store
✗ Worse UX        ✓ App Store
✗ Javascript
UX




     low cost
UX



Hybrid


              low cost

Recommended for you

Mobile Applications
Mobile ApplicationsMobile Applications
Mobile Applications

These are the slides from the presentation that I gave at my faculty in Zagreb, Croatia on Mar 20th 2013. The topic was Mobile Applications.

titaniumiossales
Titanium Conf Baltimore Keynote 2013
Titanium Conf Baltimore Keynote 2013Titanium Conf Baltimore Keynote 2013
Titanium Conf Baltimore Keynote 2013

This document summarizes key points from the Titanium User Conference held on June 27th, 2013 in Baltimore, MD. It discusses how mobile is disrupting businesses and requiring new development approaches. It also provides an overview of Titanium platform updates, including 30 million new users in the past quarter and plans for iOS7 support. Future releases of Titanium are previewed, including performance improvements and a preview of the next generation Titanium platform code-named Ti.Next.

titaniumappceleratorticonf
Cross platform mobile application architecture for enterprise
Cross platform mobile application architecture for enterpriseCross platform mobile application architecture for enterprise
Cross platform mobile application architecture for enterprise

The document discusses cross-platform mobile application architecture for enterprises. It covers the need for enterprise mobile apps due to workforce mobility trends. It compares native, web, and hybrid approaches and recommends hybrid for supporting multiple platforms. Key elements of hybrid apps include device and screen agnosticism, offline storage, security, and access to device capabilities. Frameworks like Phonegap and technologies like HTML5, CSS, and JavaScript enable hybrid development.

Evolving Mobile Architectures
UI        Body



        Separated Presentation

✓   Focus            ✓   Testing
Portability




                     Easy
Hard
›❯   Apps for multiple mobile platforms

›❯   Evolving hybrid architectures

›❯   Mobile backend systems

›❯   Testing hybrid applications

Recommended for you

IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with Worklight

IBM MobileFirst begins with a mindset: Innovative enterprises see the opportunities gained by bringing all resources together to strengthen customer engagement–whenever and wherever the customer wants, and on the customer's favorite device, which is often mobile. Whether transforming your customer acquisition strategies, streamlining your business process, or boosting product and service innovations, you can accomplish more by focusing on mobile computing environments first. IBM MobileFirst offers you true end-to-end mobile solutions. Some providers specialize in service offerings; some focus on platform and application development; some offer only mobile security; while others focus just on mobile device management. We bring it all. We help your customers initiate transactions at the moment of awareness. You can encourage customer-building touchpoints and deepen relationships with your customers with realtime, one-to-one engagements. Learn what they want with powerful mobile analytics and usage data, then create more compelling interactions. We can also help you increase workforce productivity through mobile apps that enhance collaboration, improve knowledge sharing, and speed responses. Gain efficiency by extending existing business capabilities and applications to mobile workers, partners, and customers.

appmobilefirsthybrid
The Enterprise Dilemma: Native vs. Web
The Enterprise Dilemma: Native vs. WebThe Enterprise Dilemma: Native vs. Web
The Enterprise Dilemma: Native vs. Web

MOTODEV Technology Evangelist, Suzanne Alexandra covers the many factors involved in choosing to develop an Android or web app that will meet enterprise requirements. She provides tips and best practices, and reviews sample apps on each platform. Topics include: -Key business and technology advantages of each approach -Examples of apps built on each platform -Browser support of HTML5 features -The hybrid app approach Twitter hashtag: #nativevsweb Got questions about this event tweet @motodev or post them on community.developer.motorola.com

enterprise mobilityhtml5css
Native Touches to your Hybrid Mobile Apps
Native Touches to your Hybrid Mobile AppsNative Touches to your Hybrid Mobile Apps
Native Touches to your Hybrid Mobile Apps

This document discusses adding native functionality to hybrid mobile apps. It begins with an introduction to hybrid apps, explaining that they are built with web technologies but run within a native container on devices. It then covers the Kendo UI Mobile framework for developing hybrid apps and emphasizes its cross-platform capabilities. The document focuses on using Cordova plugins to access native device features like notifications, action sheets, social sharing, and toasts from within a hybrid app. It concludes with an announcement that a demo of these concepts will be shown.

hybridappbuilderkendo ui
rich experience        cost
  native feel      time to market
  responsive      technology stack
native features    cross platform



  being                being
 awesome              realistic
rich experience




                  platform coverage
rich experience


           Laser




                   platform coverage
rich experience




    Cover your bases


                       platform coverage

Recommended for you

baidu开发者大会 - Web App开发框架介绍以及分析
baidu开发者大会 - Web App开发框架介绍以及分析baidu开发者大会 - Web App开发框架介绍以及分析
baidu开发者大会 - Web App开发框架介绍以及分析

This document discusses the development of web applications and introduces web development frameworks. It covers the history of computer applications and languages, challenges of multi-platform mobile app development, and the evolution of web technologies enabled by HTML5. It then analyzes the current state of web development frameworks, including debugging tools, IDEs, JavaScript libraries and frameworks, UI frameworks, data/logic frameworks, and cross-platform frameworks.

web app,dolphin browser
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications

HTML5 and its related technologies are enabling new ways to build beautiful sites and applications for contemporary mobile devices. Native mobile developers can now use web technologies to surmount cross-platform headaches, and desktop web developers can reach mobile users in familiar, app-like ways. This session explores the state of the art in HTML5-based mobile web frameworks, and demonstrates the practical possibilities that this powerful and standards-based approach can bring.

sencha touchhtml5incredibles
Understanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile ArchitecturesUnderstanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile Architectures

The document discusses the different mobile application architectures including native, hybrid, and HTML5 mobile applications. It describes the development approaches, advantages, and disadvantages of each architecture. Native applications are built using tools like Xcode and Android Studio and allow for the richest user experience but require developing for each platform separately. HTML5 applications can be developed using any text editor and browser but have limited access to device capabilities. Hybrid applications combine web technologies with native platforms using a native container to access device functionality.

salesforce.comdreamforcedf15
Native or web?
Instagram                Jump-in                      The Guardian   Democracy Now!




     NATIVE                        HYBRID                        WEB




              LinkedIn             Facebook     BBC Olympics

                                              using   PhoneGap
Victory for native or
cover-your-bases in action?
What would we do differently?

Recommended for you

Top Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web DevelopmentTop Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web Development

The document provides top 10 tips and tricks for HTML5/mobile web development. It discusses whether to use a mobile web or hybrid approach and recommends considering features like geolocation and offline support when making that decision. It also covers setting up development and testing environments, using client-side JavaScript for navigation and performance, enabling offline support, choosing UI frameworks, handling maps, non-standard elements, packaging, authentication, and optimizing for performance.

ioshtml5android
Service worker API
Service worker APIService worker API
Service worker API

Everybody knows Javascript is single-threaded and that it shares this same thread with other browser-related processes such as painting and compositing. There are several techniques to implement pseudo multithreading in JavaScript; however, during this talk we will focus our attention on how to use and debug the Service Worker API. Our end goal is to explore practical use cases in order to simplify the process to render complex user interfaces and transitions in a browser.

javascriptmobileserviceworker
Xamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar PatnaikXamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar Patnaik

Xamarin allows developers to write mobile apps using C# and share code across platforms like iOS, Android and Windows. It uses 100% native user interfaces and APIs while allowing extensive code reuse. Developers can use Xamarin.Forms to share common UI code or write native UIs and share business logic. Xamarin apps provide a native user experience along with faster development and lower maintenance costs compared to other cross-platform options.

mobile application developmentxamarinxamarin.forms
Don’t lock yourself into doing
         everything natively or
    everything using the web




and
 or
Sharing between platforms




Shared logic using Javascript
Shared presentation using HTML/CSS
User Interface   Client Logic




 iPhone        Objective C     Objective C




Mobile Web
               HTML / CSS       Javascript
User Interface                  Client Logic




                           Calatrava
         Objective C                    Objective C




         HTML / CSS                      Javascript




A bridge between native and web

Recommended for you

Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEM

Slides of my hands-on lab at MAX 2011. They explain how to optimize an HTML5 site running on a WEM instance, first quickly introducing HTML5 an WEM. Then, optimizing the CSS and JS inclusions, using the new Client Library feature. And finally, setting up the Dispatcher cache to deliver the right HTTP headers.

html5cq5wem
Fragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fictionFragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fiction

The mobile industry is worth over $1.3 trillion annually with over 1.6 billion mobile phones sold in 2011. There is significant hardware fragmentation across the over 680,000 distinct Android devices. Developing apps across the top 4 mobile platforms (iOS, Android, Symbian, Blackberry) reaches only 20% of devices. Mobile platforms differ in their programming languages, development environments, and app stores. No single cross-platform development tool supports all mobile platforms, and mobile web apps face challenges of fragmentation, performance, and monetization.

Magic mobile webinar_Jan2013
Magic mobile webinar_Jan2013Magic mobile webinar_Jan2013
Magic mobile webinar_Jan2013

The document discusses 9 keys to successful enterprise mobility projects which include connecting mobile applications to backend systems, supporting multiple platforms and native features, having a sound development strategy and tools, implementing appropriate security measures, and deploying and monitoring applications effectively. It also provides examples of different mobile architecture approaches and development processes.

enterprise mobilitybyodmobile application development
Calatrava




Technology choice per feature
More an approach than a framework
Will soon be open source
http://en.wikipedia.org/wiki/Puente_del_Alamillo
Populating web views from templates: GRMoustache


<div class="person">
  <span class=”name”>{{name}}</span>

 {{#address}}
   <div class="address">
     {{.}}
   </div>
 {{/address}}

 ... and all the other stuff

</div>
Populating web views from templates: GRMoustache


     NSDictionary *person = @{ @"name": @"Stew", @"address": @"Melbourne" };

     GRMustacheTemplate *template = ...;
     NSString *renderedContent = [template renderObject:person];

     [webView loadHTMLString:renderedContent baseURL:...];




Should we populate templates on the
client or server?
Signal when the UIWebView has loaded

<body onload="window.location = 'myapp://ready'">




- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
  navigationType:(UIWebViewNavigationType)navigationType
{

    if ([request.URL.scheme isEqualToString:@"myapp"] &&
        [request.URL.host isEqualToString:@"ready"])
    {
      // We're done, you can display the content now
      return NO;
    }

    ...
}

Recommended for you

Calatrava
CalatravaCalatrava
Calatrava

Calatrava is a framework for building cross-platform mobile apps using a hybrid approach. It allows sharing of application logic, models, and repositories across platforms while using native code where necessary. The framework consists of a kernel, bridge, and shell. The kernel contains shared logic, the bridge facilitates communication between shared and native code, and the shell contains UI elements, layouts, and pages. Calatrava apps can be developed faster and tested more easily than purely native or cross-platform approaches while still providing a good user experience. However, it may have limitations for complex apps requiring deep native integration.

mobile development cross-platform
Client Continuum Dec Fy09
Client Continuum Dec Fy09Client Continuum Dec Fy09
Client Continuum Dec Fy09

The agenda includes presentations on Microsoft client technologies: - The Microsoft Client Continuum by Ronan Geraghty from 10:00-11:15. - Introducing WPF by Max Knor from 11:30-13:00. - Building WPF composite smart clients by Max Knor from 14:00-15:30. - Building RIAs with Silverlight 2 by Martha Rotter from 15:45-17:00.

wpfmicrosoft
Azure and web sites hackaton deck
Azure and web sites hackaton deckAzure and web sites hackaton deck
Azure and web sites hackaton deck

This document discusses cloud computing and Microsoft Azure. It provides an overview of what a cloud is and statistics on the growth of cloud adoption over time. It then discusses Microsoft Azure's global presence and growth metrics. Examples are given of companies using Azure, including their objectives, tactics and results. Key features of Azure Websites are outlined. Traffic Manager and its use for load balancing and disaster recovery are explained. Finally, some tasks for a hackathon on Azure are proposed.

azuremsgedev
Implementing javascript logic


Inside a UIWebView

Use JavaScriptCore directly?




   [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
User Interface                              Client Logic




                                Calatrava
          Objective C                                Objective C




          HTML / CSS                                  Javascript




So were is this kind of architecture well suited?
›❯   Apps for multiple mobile platforms

›❯   Evolving hybrid architectures

›❯   Mobile backend systems

›❯   Testing hybrid applications
Apps are just the
                                 tip of the iceberg
    Call Centre                   Retail

Legacy Thing                     Message Hub

  Database                   Mainframe

    Some expensive and proprietary system

Recommended for you

Hybrid App Development, Redefined
Hybrid App Development, RedefinedHybrid App Development, Redefined
Hybrid App Development, Redefined

Join Matt Netkow for an updated look into all the ways modern hybrid app development has evolved in its 10+ year journey. Watch live presentation here: https://ionicframework.com/resources/webinars/hybrid-app-development-redefined

ionic frameworkhybrid development
IBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App DevelopmentIBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App Development

IBM MobileFirst begins with a mindset: Innovative enterprises see the opportunities gained by bringing all resources together to strengthen customer engagement–whenever and wherever the customer wants, and on the customer's favorite device, which is often mobile. Whether transforming your customer acquisition strategies, streamlining your business process, or boosting product and service innovations, you can accomplish more by focusing on mobile computing environments first. IBM MobileFirst offers you true end-to-end mobile solutions. Some providers specialize in service offerings; some focus on platform and application development; some offer only mobile security; while others focus just on mobile device management. We bring it all. We help your customers initiate transactions at the moment of awareness. You can encourage customer-building touchpoints and deepen relationships with your customers with realtime, one-to-one engagements. Learn what they want with powerful mobile analytics and usage data, then create more compelling interactions. We can also help you increase workforce productivity through mobile apps that enhance collaboration, improve knowledge sharing, and speed responses. Gain efficiency by extending existing business capabilities and applications to mobile workers, partners, and customers.

enterprisemobilehybrid
Xamarin cross platform
Xamarin cross platformXamarin cross platform
Xamarin cross platform

The document discusses different approaches to mobile cross-platform development including web apps, hybrid apps, and native apps. It then focuses on the Xamarin platform, which allows developers to build fully native mobile apps for Android and iOS using C# and .NET with a single shared codebase. Xamarin apps are compiled to native code for each platform and provide access to all native platform features and APIs.

iosc#android
App   Backend
App   API   Backend
How do we build simpler apps
                                    and smarter backends?



     App                 API                 Backend


Principles of REST

Serving data and style

Product-aligned teams
Forcing logic to the server




                                                     What if you could only use NSDictionary
                                                              objects for your domain model?


http://www.flickr.com/photos/jakecaptive/3205277810

Recommended for you

Keynote Client Connectivity And The Cloud
Keynote Client Connectivity And The CloudKeynote Client Connectivity And The Cloud
Keynote Client Connectivity And The Cloud

This document discusses how Google is working to make the client, connectivity, and cloud more powerful and accessible through open technologies. It focuses on three areas: 1) Making the cloud more accessible through technologies like Google App Engine and data APIs. 2) Keeping connectivity pervasive through open platforms like Android and social APIs. 3) Making the client more powerful through technologies like Google Web Toolkit, Gears, and social platforms like OpenSocial. The goal is to advance an open web that empowers both users and developers.

technologiesgooglelectures
Evolving for Multiple Screens
Evolving for Multiple ScreensEvolving for Multiple Screens
Evolving for Multiple Screens

This is a talk that Jonny LeRoy and I gave at Thoughtworks Live in Sydney and Melbourne in May 2013. It's a high level look at how you can approach mobile development and strategies to evolve for a future of many APIs and many front end clients.

iosmobile
Mobile: more than just an app
Mobile: more than just an appMobile: more than just an app
Mobile: more than just an app

This is a talk Jonny Schneider and I gave as part of the Thoughtworks Quarterly Technology Briefing, on various aspects of mobile strategy and delivery.

responsive designiosmobile
›❯   Apps for multiple mobile platforms

›❯   Evolving hybrid architectures

›❯   Mobile backend systems

›❯   Testing hybrid applications
UI


Integration


   Unit
UI


                 Integration


Kiwi   Jasmine      Unit
UI


   Kiwi   RSpec     Integration


Kiwi      Jasmine      Unit

Recommended for you

Building mobile teams and getting a product to market
Building mobile teams and getting a product to marketBuilding mobile teams and getting a product to market
Building mobile teams and getting a product to market

Rich Durnall and I presented our experience building apps with REA Group (who run the popular realestate.com.au website). The main focus was on how agile software development fits with mobile, with an emphasis on small, lean teams that iterate and learn quickly.

ioscontinuous designcontinuous delivery
iOS Unit Testing
iOS Unit TestingiOS Unit Testing
iOS Unit Testing

A talk about unit testing for iOS apps. Part rambling introduction to test driven development, part examples of certain types of tests for iOS, and a brief mention of writing your tests using Kiwi.

unit testingiostest driven development
iOS app case study
iOS app case studyiOS app case study
iOS app case study

The document provides an overview of iPhone app development using examples of common iPhone app features. It discusses basic table views including creating a table view, populating it with data from a data source, and designing table view cells. It also covers more advanced table view techniques like custom table views and dynamic content. The document is intended to teach iPhone app developers best practices for implementing common user interface elements and features in their apps.

iosiphone
Frank (PublicAutomation)   UI
       Zucchini


   Kiwi    RSpec             Integration


Kiwi       Jasmine                 Unit
business-level     platform-specific
requirements           mapping               UI   client logic


                          e.g.
                         Frank


                          e.g.
  Business-level                                     Shared business
                         Native-
      specs                                               logic
                         Driver


                          e.g.
                         Web-
                         Driver




                                   Testing
UI        Client Logic




Acceptance
                                 Shared Logic
  Tests




  Full-Stack and Subcutaneous Testing
›❯   Apps for multiple mobile platforms

›❯   Evolving hybrid architectures

›❯   Mobile backend systems

›❯   Testing hybrid applications

Recommended for you

iOS View Coordinators
iOS View CoordinatorsiOS View Coordinators
iOS View Coordinators

Slides from a talk about reducing the complexity in UIViewController classes for iOS using a pattern of smaller view coordinators

iosobjective c
Frank iOS Testing
Frank iOS TestingFrank iOS Testing
Frank iOS Testing

This document discusses different approaches to testing iOS apps, including using Frank, UISpec, Cucumber, and other tools. It provides an overview of how Frank works using accessibility labels to interact with UI elements and compares its syntax to UISpec and Cucumber. Example test code is shown for each tool. The road ahead for iOS testing and a demo of Frank is also mentioned.

frankiosprogramming
Multithreaded Data Transport
Multithreaded Data TransportMultithreaded Data Transport
Multithreaded Data Transport

The Murchison Widefield Array (MWA) radio telescope produces large amounts of correlated data at high speeds that must be ingested and processed in real-time. To do so efficiently, a multi-threaded software system called the Real Time System (RTS) was developed. The RTS uses a hierarchical structure of parallel threads, each handling data over different timescales, to ingest packetized data from the correlator at close to gigabit speeds without loss. Testing showed this approach allowed parallel hardware and software operation without data loss.

threadsprogramminghpc
Try out your approach,
use short iterations,
measure and learn.
UX




     low cost
Don’t lock yourself into doing
         everything natively or
    everything using the web




and
Separate your presentation
                from your logic




UI     Body

Recommended for you

A few design patterns
A few design patternsA few design patterns
A few design patterns

A few design patterns that seem to crop up in small scientific programming tasks, for a non-programmer audience.

programmingdesign patterns
GPU Programming
GPU ProgrammingGPU Programming
GPU Programming

CPU architecture is good for serial programs but memory access is slow. GPU architecture is designed for parallel processing, with many processors performing the same operations on a large data set simultaneously. GPUs have a memory hierarchy and thread hierarchy, with blocks of threads running on stream processors and accessing shared memory. CUDA is a C extension that allows programming GPUs for parallel processing on Nvidia cards, with algorithms containing loops over entire arrays being good candidates for conversion to CUDA.

gpuccuda
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patterns

Slides from a presentation I gave on Cocoa Design Patterns - software design patterns that are suitable and common within Apple's Cocoa and Cocoa Touch frameworks using Objective C

cocoaiosdesignpatterns
The app is just the
tip of the iceberg
Evolving Mobile
 Architectures    Stewart Gleadow
                  http://stewgleadow.com
                  @stewgleadow



                  Martin Fowler
                  http://martinfowler.com
                  @martinfowler
Evolving Mobile Architectures

More Related Content

What's hot

Angular js and phonegap unite
Angular js and phonegap uniteAngular js and phonegap unite
Angular js and phonegap unite
FITC
 
Designing Mobile Apps with HTML5 & CSS3
Designing Mobile Apps with HTML5 & CSS3Designing Mobile Apps with HTML5 & CSS3
Designing Mobile Apps with HTML5 & CSS3
Johannes Ippen
 
Mobile Enablement And Intelligence
Mobile Enablement And IntelligenceMobile Enablement And Intelligence
Mobile Enablement And Intelligence
Rashmika Nawaratne
 
Hybrid app development
Hybrid app developmentHybrid app development
Hybrid app development
Harshul Shah
 
Phone gap
Phone gapPhone gap
Phone gap
Madhura Keskar
 
Developer Experience (DX) for UX Professionals
Developer Experience (DX) for UX ProfessionalsDeveloper Experience (DX) for UX Professionals
Developer Experience (DX) for UX Professionals
Ian Jennings
 
Selenium Camp 2016
Selenium Camp 2016Selenium Camp 2016
Selenium Camp 2016
Dan Cuellar
 
The future of the CMS
The future of the CMSThe future of the CMS
The future of the CMS
InVision App
 
Progress Rollbase: Building Powerful Applications One Block at a Time
Progress Rollbase:  Building Powerful Applications One Block at a TimeProgress Rollbase:  Building Powerful Applications One Block at a Time
Progress Rollbase: Building Powerful Applications One Block at a Time
Progress
 
Android App Development Journey
Android App Development JourneyAndroid App Development Journey
Android App Development Journey
Gerard
 
Rethinking Mobile with Ionic
Rethinking Mobile with IonicRethinking Mobile with Ionic
Rethinking Mobile with Ionic
Mike Hartington
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
Quang Minh Dao
 
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
Troy Miles
 
Getting Acquainted with PhoneGap
Getting Acquainted with PhoneGapGetting Acquainted with PhoneGap
Getting Acquainted with PhoneGap
Joseph Labrecque
 
Performance testing of mobile apps
Performance testing of mobile appsPerformance testing of mobile apps
Performance testing of mobile apps
vodQA
 
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
Troy Miles
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
Dr. Felix Raab
 
Building Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGapBuilding Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGap
Prajyot Mainkar
 
Mobile Applications
Mobile ApplicationsMobile Applications
Mobile Applications
Viktor Fonic
 
Titanium Conf Baltimore Keynote 2013
Titanium Conf Baltimore Keynote 2013Titanium Conf Baltimore Keynote 2013
Titanium Conf Baltimore Keynote 2013
Jeff Haynie
 

What's hot (20)

Angular js and phonegap unite
Angular js and phonegap uniteAngular js and phonegap unite
Angular js and phonegap unite
 
Designing Mobile Apps with HTML5 & CSS3
Designing Mobile Apps with HTML5 & CSS3Designing Mobile Apps with HTML5 & CSS3
Designing Mobile Apps with HTML5 & CSS3
 
Mobile Enablement And Intelligence
Mobile Enablement And IntelligenceMobile Enablement And Intelligence
Mobile Enablement And Intelligence
 
Hybrid app development
Hybrid app developmentHybrid app development
Hybrid app development
 
Phone gap
Phone gapPhone gap
Phone gap
 
Developer Experience (DX) for UX Professionals
Developer Experience (DX) for UX ProfessionalsDeveloper Experience (DX) for UX Professionals
Developer Experience (DX) for UX Professionals
 
Selenium Camp 2016
Selenium Camp 2016Selenium Camp 2016
Selenium Camp 2016
 
The future of the CMS
The future of the CMSThe future of the CMS
The future of the CMS
 
Progress Rollbase: Building Powerful Applications One Block at a Time
Progress Rollbase:  Building Powerful Applications One Block at a TimeProgress Rollbase:  Building Powerful Applications One Block at a Time
Progress Rollbase: Building Powerful Applications One Block at a Time
 
Android App Development Journey
Android App Development JourneyAndroid App Development Journey
Android App Development Journey
 
Rethinking Mobile with Ionic
Rethinking Mobile with IonicRethinking Mobile with Ionic
Rethinking Mobile with Ionic
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
 
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
 
Getting Acquainted with PhoneGap
Getting Acquainted with PhoneGapGetting Acquainted with PhoneGap
Getting Acquainted with PhoneGap
 
Performance testing of mobile apps
Performance testing of mobile appsPerformance testing of mobile apps
Performance testing of mobile apps
 
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
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 
Building Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGapBuilding Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGap
 
Mobile Applications
Mobile ApplicationsMobile Applications
Mobile Applications
 
Titanium Conf Baltimore Keynote 2013
Titanium Conf Baltimore Keynote 2013Titanium Conf Baltimore Keynote 2013
Titanium Conf Baltimore Keynote 2013
 

Similar to Evolving Mobile Architectures

Cross platform mobile application architecture for enterprise
Cross platform mobile application architecture for enterpriseCross platform mobile application architecture for enterprise
Cross platform mobile application architecture for enterprise
Venkat Alagarsamy
 
IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with Worklight
IBIZZ
 
The Enterprise Dilemma: Native vs. Web
The Enterprise Dilemma: Native vs. WebThe Enterprise Dilemma: Native vs. Web
The Enterprise Dilemma: Native vs. Web
Motorola Mobility - MOTODEV
 
Native Touches to your Hybrid Mobile Apps
Native Touches to your Hybrid Mobile AppsNative Touches to your Hybrid Mobile Apps
Native Touches to your Hybrid Mobile Apps
Lohith Goudagere Nagaraj
 
baidu开发者大会 - Web App开发框架介绍以及分析
baidu开发者大会 - Web App开发框架介绍以及分析baidu开发者大会 - Web App开发框架介绍以及分析
baidu开发者大会 - Web App开发框架介绍以及分析
joylite
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
James Pearce
 
Understanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile ArchitecturesUnderstanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile Architectures
Salesforce Developers
 
Top Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web DevelopmentTop Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web Development
Simon Guest
 
Service worker API
Service worker APIService worker API
Service worker API
Giorgio Natili
 
Xamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar PatnaikXamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar Patnaik
Mukteswar Patnaik
 
Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEM
Gabriel Walt
 
Fragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fictionFragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fiction
Belen Barros Pena
 
Magic mobile webinar_Jan2013
Magic mobile webinar_Jan2013Magic mobile webinar_Jan2013
Magic mobile webinar_Jan2013
Magic Software
 
Calatrava
CalatravaCalatrava
Calatrava
AtreyeeMaiti
 
Client Continuum Dec Fy09
Client Continuum Dec Fy09Client Continuum Dec Fy09
Client Continuum Dec Fy09
Martha Rotter
 
Azure and web sites hackaton deck
Azure and web sites hackaton deckAzure and web sites hackaton deck
Azure and web sites hackaton deck
Alexey Bokov
 
Hybrid App Development, Redefined
Hybrid App Development, RedefinedHybrid App Development, Redefined
Hybrid App Development, Redefined
Ionic Framework
 
IBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App DevelopmentIBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App Development
Wim Tobback
 
Xamarin cross platform
Xamarin cross platformXamarin cross platform
Xamarin cross platform
Guada Casuso
 
Keynote Client Connectivity And The Cloud
Keynote Client Connectivity And The CloudKeynote Client Connectivity And The Cloud
Keynote Client Connectivity And The Cloud
GoogleTecTalks
 

Similar to Evolving Mobile Architectures (20)

Cross platform mobile application architecture for enterprise
Cross platform mobile application architecture for enterpriseCross platform mobile application architecture for enterprise
Cross platform mobile application architecture for enterprise
 
IBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with WorklightIBM MobileFirst - Hybrid Application Development with Worklight
IBM MobileFirst - Hybrid Application Development with Worklight
 
The Enterprise Dilemma: Native vs. Web
The Enterprise Dilemma: Native vs. WebThe Enterprise Dilemma: Native vs. Web
The Enterprise Dilemma: Native vs. Web
 
Native Touches to your Hybrid Mobile Apps
Native Touches to your Hybrid Mobile AppsNative Touches to your Hybrid Mobile Apps
Native Touches to your Hybrid Mobile Apps
 
baidu开发者大会 - Web App开发框架介绍以及分析
baidu开发者大会 - Web App开发框架介绍以及分析baidu开发者大会 - Web App开发框架介绍以及分析
baidu开发者大会 - Web App开发框架介绍以及分析
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
 
Understanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile ArchitecturesUnderstanding Native, Hybrid, and Web Mobile Architectures
Understanding Native, Hybrid, and Web Mobile Architectures
 
Top Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web DevelopmentTop Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web Development
 
Service worker API
Service worker APIService worker API
Service worker API
 
Xamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar PatnaikXamarin COE by Mukteswar Patnaik
Xamarin COE by Mukteswar Patnaik
 
Optimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEMOptimizing HTML5 Sites with CQ5/WEM
Optimizing HTML5 Sites with CQ5/WEM
 
Fragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fictionFragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fiction
 
Magic mobile webinar_Jan2013
Magic mobile webinar_Jan2013Magic mobile webinar_Jan2013
Magic mobile webinar_Jan2013
 
Calatrava
CalatravaCalatrava
Calatrava
 
Client Continuum Dec Fy09
Client Continuum Dec Fy09Client Continuum Dec Fy09
Client Continuum Dec Fy09
 
Azure and web sites hackaton deck
Azure and web sites hackaton deckAzure and web sites hackaton deck
Azure and web sites hackaton deck
 
Hybrid App Development, Redefined
Hybrid App Development, RedefinedHybrid App Development, Redefined
Hybrid App Development, Redefined
 
IBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App DevelopmentIBM MobileFirst - Hybrid App Development
IBM MobileFirst - Hybrid App Development
 
Xamarin cross platform
Xamarin cross platformXamarin cross platform
Xamarin cross platform
 
Keynote Client Connectivity And The Cloud
Keynote Client Connectivity And The CloudKeynote Client Connectivity And The Cloud
Keynote Client Connectivity And The Cloud
 

More from sgleadow

Evolving for Multiple Screens
Evolving for Multiple ScreensEvolving for Multiple Screens
Evolving for Multiple Screens
sgleadow
 
Mobile: more than just an app
Mobile: more than just an appMobile: more than just an app
Mobile: more than just an app
sgleadow
 
Building mobile teams and getting a product to market
Building mobile teams and getting a product to marketBuilding mobile teams and getting a product to market
Building mobile teams and getting a product to market
sgleadow
 
iOS Unit Testing
iOS Unit TestingiOS Unit Testing
iOS Unit Testing
sgleadow
 
iOS app case study
iOS app case studyiOS app case study
iOS app case study
sgleadow
 
iOS View Coordinators
iOS View CoordinatorsiOS View Coordinators
iOS View Coordinators
sgleadow
 
Frank iOS Testing
Frank iOS TestingFrank iOS Testing
Frank iOS Testing
sgleadow
 
Multithreaded Data Transport
Multithreaded Data TransportMultithreaded Data Transport
Multithreaded Data Transport
sgleadow
 
A few design patterns
A few design patternsA few design patterns
A few design patterns
sgleadow
 
GPU Programming
GPU ProgrammingGPU Programming
GPU Programming
sgleadow
 
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patterns
sgleadow
 
Beginning iPhone Development
Beginning iPhone DevelopmentBeginning iPhone Development
Beginning iPhone Development
sgleadow
 

More from sgleadow (12)

Evolving for Multiple Screens
Evolving for Multiple ScreensEvolving for Multiple Screens
Evolving for Multiple Screens
 
Mobile: more than just an app
Mobile: more than just an appMobile: more than just an app
Mobile: more than just an app
 
Building mobile teams and getting a product to market
Building mobile teams and getting a product to marketBuilding mobile teams and getting a product to market
Building mobile teams and getting a product to market
 
iOS Unit Testing
iOS Unit TestingiOS Unit Testing
iOS Unit Testing
 
iOS app case study
iOS app case studyiOS app case study
iOS app case study
 
iOS View Coordinators
iOS View CoordinatorsiOS View Coordinators
iOS View Coordinators
 
Frank iOS Testing
Frank iOS TestingFrank iOS Testing
Frank iOS Testing
 
Multithreaded Data Transport
Multithreaded Data TransportMultithreaded Data Transport
Multithreaded Data Transport
 
A few design patterns
A few design patternsA few design patterns
A few design patterns
 
GPU Programming
GPU ProgrammingGPU Programming
GPU Programming
 
Cocoa Design Patterns
Cocoa Design PatternsCocoa Design Patterns
Cocoa Design Patterns
 
Beginning iPhone Development
Beginning iPhone DevelopmentBeginning iPhone Development
Beginning iPhone Development
 

Recently uploaded

What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
BookNet Canada
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
ScyllaDB
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 

Recently uploaded (20)

What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 

Evolving Mobile Architectures

  • 1. Evolving Mobile Architectures Stewart Gleadow http://stewgleadow.com @stewgleadow Martin Fowler http://martinfowler.com @martinfowler
  • 2. Good products evolve over time http://www.flickr.com/photos/autohistorian/6902804230/
  • 3. Remember the early days of the web? http://www.icehousedesigns.com/webarchive/images/flshbk_COLLAGE2.gif
  • 4. ›❯ Apps for multiple mobile platforms ›❯ Evolving hybrid architectures ›❯ Mobile backend systems ›❯ Testing hybrid applications
  • 5. ›❯ Apps for multiple mobile platforms ›❯ Evolving hybrid architectures ›❯ Mobile backend systems ›❯ Testing hybrid applications
  • 7. All Native ✓ Easy to Begin ✓ Good UX
  • 8. There is nothing worse than a good mobile application invest in UX reuse UX
  • 9. All Native ✓ Easy to Begin ✓ Good UX ✘ Expensive
  • 10. Cross Platform ✘ Slightly worse UX ✓ Low cost
  • 11. Cross Platform ✘ Slightly worse UX ✓ Low cost Write Once Run Anywhere
  • 14. Controls Lowest Common 1. Use Native Denominator Not quite right 2. Mimic Uncanny Valley
  • 18. ? Cross Platform
  • 19. ? Portable Platform Cross
  • 22. ✗ Missing Features ✗ App Store ✗ Worse UX ✓ App Store ✗ Javascript
  • 23. UX low cost
  • 24. UX Hybrid low cost
  • 26. UI Body Separated Presentation ✓ Focus ✓ Testing
  • 27. Portability Easy Hard
  • 28. ›❯ Apps for multiple mobile platforms ›❯ Evolving hybrid architectures ›❯ Mobile backend systems ›❯ Testing hybrid applications
  • 29. rich experience cost native feel time to market responsive technology stack native features cross platform being being awesome realistic
  • 30. rich experience platform coverage
  • 31. rich experience Laser platform coverage
  • 32. rich experience Cover your bases platform coverage
  • 34. Instagram Jump-in The Guardian Democracy Now! NATIVE HYBRID WEB LinkedIn Facebook BBC Olympics using PhoneGap
  • 35. Victory for native or cover-your-bases in action?
  • 36. What would we do differently?
  • 37. Don’t lock yourself into doing everything natively or everything using the web and or
  • 38. Sharing between platforms Shared logic using Javascript Shared presentation using HTML/CSS
  • 39. User Interface Client Logic iPhone Objective C Objective C Mobile Web HTML / CSS Javascript
  • 40. User Interface Client Logic Calatrava Objective C Objective C HTML / CSS Javascript A bridge between native and web
  • 41. Calatrava Technology choice per feature More an approach than a framework Will soon be open source http://en.wikipedia.org/wiki/Puente_del_Alamillo
  • 42. Populating web views from templates: GRMoustache <div class="person"> <span class=”name”>{{name}}</span> {{#address}} <div class="address"> {{.}} </div> {{/address}} ... and all the other stuff </div>
  • 43. Populating web views from templates: GRMoustache NSDictionary *person = @{ @"name": @"Stew", @"address": @"Melbourne" }; GRMustacheTemplate *template = ...; NSString *renderedContent = [template renderObject:person]; [webView loadHTMLString:renderedContent baseURL:...]; Should we populate templates on the client or server?
  • 44. Signal when the UIWebView has loaded <body onload="window.location = 'myapp://ready'"> - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if ([request.URL.scheme isEqualToString:@"myapp"] && [request.URL.host isEqualToString:@"ready"]) { // We're done, you can display the content now return NO; } ... }
  • 45. Implementing javascript logic Inside a UIWebView Use JavaScriptCore directly? [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
  • 46. User Interface Client Logic Calatrava Objective C Objective C HTML / CSS Javascript So were is this kind of architecture well suited?
  • 47. ›❯ Apps for multiple mobile platforms ›❯ Evolving hybrid architectures ›❯ Mobile backend systems ›❯ Testing hybrid applications
  • 48. Apps are just the tip of the iceberg Call Centre Retail Legacy Thing Message Hub Database Mainframe Some expensive and proprietary system
  • 49. App Backend
  • 50. App API Backend
  • 51. How do we build simpler apps and smarter backends? App API Backend Principles of REST Serving data and style Product-aligned teams
  • 52. Forcing logic to the server What if you could only use NSDictionary objects for your domain model? http://www.flickr.com/photos/jakecaptive/3205277810
  • 53. ›❯ Apps for multiple mobile platforms ›❯ Evolving hybrid architectures ›❯ Mobile backend systems ›❯ Testing hybrid applications
  • 55. UI Integration Kiwi Jasmine Unit
  • 56. UI Kiwi RSpec Integration Kiwi Jasmine Unit
  • 57. Frank (PublicAutomation) UI Zucchini Kiwi RSpec Integration Kiwi Jasmine Unit
  • 58. business-level platform-specific requirements mapping UI client logic e.g. Frank e.g. Business-level Shared business Native- specs logic Driver e.g. Web- Driver Testing
  • 59. UI Client Logic Acceptance Shared Logic Tests Full-Stack and Subcutaneous Testing
  • 60. ›❯ Apps for multiple mobile platforms ›❯ Evolving hybrid architectures ›❯ Mobile backend systems ›❯ Testing hybrid applications
  • 61. Try out your approach, use short iterations, measure and learn.
  • 62. UX low cost
  • 63. Don’t lock yourself into doing everything natively or everything using the web and
  • 64. Separate your presentation from your logic UI Body
  • 65. The app is just the tip of the iceberg
  • 66. Evolving Mobile Architectures Stewart Gleadow http://stewgleadow.com @stewgleadow Martin Fowler http://martinfowler.com @martinfowler