SlideShare a Scribd company logo
1 of 33
people
About Me
Companies

Technologies

NetLabs
Agenda
• Custom view introduction
• Demo
• High-level architecture of custom view
framework
•Q&A
Mobile Application Landscape
Native

Mobile Web

Hybrids

• Device integration

• Single app for multiple
platforms

• Leverage Web
advantages while
having native
capabilities

• User experience
• Push capabilities
• Offline access

• Performance
• Tuned for particular
platform
• App Store

• Leverage Web
standards (Jscript,
CSS3, HTML)
• Upgradability,
flexibility – instant!
• Easy access via links
browser, email
• Installation
Custom view introduction (Mint use case)
Wish List
• Personalize
• Let me design my dashboard
• Let me configure my dashboard
• Let me action on my dashboard

• Let me change it
• Run my dashboard
• Enable reports
• Add more features over time
Demo
How It Started
•
•
•
•
•
•
•

Custom dashboard
Comparison (see things side by side)
Get functionality which is in the product but never exposed
Avoid extra release cycles
Provide customization on product/group/user level
Platform-agnostic
Environment:
– Starting point:
• Android – Mint – Tablet

– Target:
• {IOS/Android/Windows/Web ?} – {Tablet/Phone/Desktop?}-{Intuit
product}
Architecture Objectives
• Lego paradigm
– Quickly build UX out of existing components
– Be able to add 3rd-party components

• Platform is a glue
• Light interfaces
– IOS & Java APIs
– View representation
– Metadata registry

( HTML - <TABLE>, <H1> <A> …)

• Platform-independent view description
– 3 type of layouts – vertical, horizontal, carousel
– Additional aspects – scrolling, divider, background
– Component configuration
Architecture Objectives

(Continued)

• View instantiation
– Take whole real estate
– Take designated portion(s)

• View crafting
– Custom view designer
– Hand-crafted

• “Custom view” meaning could be highlighted for power users
or administrators or hidden (ordinary users)
Environment
• Android 3.x+
• IOS – 6.x+
Custom View Architecture

Native Platform

Custom View
Interpreter

Custom View
Manager

Custom View
Designer

Metadata
Component
registration

Local Storage
Custom View Architecture
Cloud Custom
View Repository

Native Platform
Custom View Cloud API service

Custom View
Interpreter

Custom View
Manager

Custom View
Designer

Metadata
Component
registration

Local Storage
Custom View Architecture

Cloud Custom
View Repository

(Continued)
Architecture Components
Custom View Representation
(Custom View Layout,
Configuration)

Custom View Metadata
Custom View APIs
Custom View Cloud Services
Custom View Representation
• JSON-based

• Screen
– Container
• Content

<Screen>:= {
Name = text,
[Title= text],
[Description=text],
[Constraints],
[Orientation],
Container}
<Container>:=
[background="image tag"],

[scrollable=true|false],
ExtentType=proportional|filled| fixed
ExtentValue=value ( weight for
proportional, size for fixed)
children={Container|Content}+,
type=vertical|horizontal|carousel
}
<Content>:= {tag=text ,
[Configuration],
ExtentType=proportional|variable|
fixed
ExtentValue=value( weight for
proportional, size for fixed)
}
Custom View Layout
• Containers
– Vertical,
– Horizontal
– Carousel

• Touch-based layout tuning
(gesture recognition)
Configurable

{

"tag": "webview",
"configuration":
"http://www.intuit.com",
"flexible”: true,
"suggestedLayout": {
"type": "filled"
}
},
Flexible
Metadata Service

Component registry
platform-agnostic

{ "type": "component-registry”
"components": [
{
"name": "Budget",
”icon”: ”budget.png”
"tag": "current_budget",
"description": "This month overall budget.nNot
configurable",
"suggestedLayout": {
"type": "fixed",
"value": "120"
}
}
,{
"name": "Feed",
"tag": "feed",
"description": "Lists Mint alerts &
advices.nNot configurable",
"suggestedLayout": {
"type": "proportional",
"value": "1"
}
},
Metadata Service
{

Component binding
platform-specific

(Continued)

"type": "tag-registry",
"tags": [
{
"type": "component",
"tag": "blue",
"value": "BlueViewController"
},
{
"type": "component",
"tag": "budget",
"value": "TrendsController_iPad"
},
{
"type": "component",
"tag": "feed",
"value": "VespaFeedsController"
},
{
"type": "component",
"tag": "accounts",
"value": "AccountsViewController_iPad"
},
APIs
• Content (may be implemented by content provider)
• Screen instantiation
– Inflate screen in view

• Components discovery and bindings
• Custom View management
– Delete
– Create
– Find

• Cloud services
– Get all
– Delete
– Publish
Content APIs
@protocol VespaConfigurable <NSObject>

– VespaConfigurable

-(void) configure:(NSString *)configuration;

– VespaConfigurableView

-(NSString *) configuration;

– VespaConfigurableController

-(void) flexConfiguration;
@end

@protocol VespaConfigurableController <VespaConfigurable>
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil configuration:(NSString *) configuration;
- @end
package com.intuit.mobilelib.vespa.api;
public interface ConfigurableComponent {
public void setComponentConfiguration(String config);
public String getComponentConfiguration();
public void flexConfiguration(ComponentConfigurator configurator);
}
Custom View Interpreter
• Inflate screen
• Create layout hierarchy
– Instantiate content
– Configure content
– Apply layout constraints
– Binds components
Custom View Manager
• Manages screens
– Create (Designer)
– Delete
– View (sort)
– Edit
Custom View Designer
• Create/edit screens
– Displays content repository
– Layout selection
– Layout tuning
– Drag & drop interface
– Orchestrate content
configuration
Custom View Discrimination
•
•
•
•

By
By
By
By

platform (any, Android, IOS)
orientation (any, portrait, landscape)
type (phone, tablet)
tags – multi-tenancy (“Plumber”, “Sweet Bagels”)
Standard Components
• General
– Web view
– Image view
– RSS feed
– Weather
– Stock

• Mint
– Accounts
– Budget
– Transactions
– Spending
– Income
– Reports
Custom Reports

28
Custom Reports –continued

29
Content Writers’ Guidelines
• Componentization!!!
• Do not use hardcoded sizes!!! (IOS)
• Make everything “relative”
• Maximize advantages of Android layouts & fragments and IOS
autolayout
Takeaways
• It is possible to personalize, customize native user experience
for certain type of applications
• You may achieve common dashboard, reporting capabilities in
a platform agnostic way
• It is possible to distribute and share custom views among
group of users (admin/crowd sourcing)
Q&A

Want to talk more?
I’ll be at the Intuit booth today 11am – 2pm.

Email: eugene_krivopaltsev@intuit.com
Intuit Speakers @ Silicon Code Camp 2013:
SATURDAY
9:45 a.m. - Ramakrishna Kollipara – “Complete Automation of Performance Testing”
1:45 p.m. - Joe Wells - “QBO: Journey From legacy Java app to a Client-side HTML5 app”
3:30 p.m. - Naga Addagadde & Sangeeta Narang – “Intuit APIs for Financial Transaction

Aggregation”
5:00 p.m. Ted Drake –“Hitting the Accessibility High Notes with ARIA”
SUNDAY
9:15 a.m. - Eugene Krivopaltsev –“Building Native Mobile Apps with Custom Views”
1:15 p.m. - Tim Hobson – “Developing Highly Instrumental Applications with Minimal Effort”

For more information about joining our organization visit our booth or connect with
our onsite recruiter:
Chriscox_recruiter@intuit.com
You don't want to miss out on a chance to win this cool headset.
Stop by our booth to enter

33

More Related Content

What's hot

Java Platform and IDE Netbeans 6.7 for Developing Enterprise and Web Applicat...
Java Platform and IDE Netbeans 6.7 for Developing Enterprise and Web Applicat...Java Platform and IDE Netbeans 6.7 for Developing Enterprise and Web Applicat...
Java Platform and IDE Netbeans 6.7 for Developing Enterprise and Web Applicat...SSA KPI
 
Building responsive web mobile mapping applications
Building responsive web mobile mapping applicationsBuilding responsive web mobile mapping applications
Building responsive web mobile mapping applicationsAllan Laframboise
 
Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to hero
Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to heroBuilding a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to hero
Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to heroAllan Laframboise
 
What's coming in WCM for Liferay 6.2?
What's coming in WCM for Liferay 6.2?What's coming in WCM for Liferay 6.2?
What's coming in WCM for Liferay 6.2?Julio Camarero
 
11g boot camp weblogic and adf
11g boot camp weblogic and adf11g boot camp weblogic and adf
11g boot camp weblogic and adfChad Thompson
 
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...Lucas Jellema
 
PowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application DeploymentPowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application Deploymentzulmach .
 
Application Development Approaches
Application Development ApproachesApplication Development Approaches
Application Development ApproachesOsman Celik
 
Building Android, iOS and Windows 8 Apps with Windows Azure Mobile Services
Building Android, iOS and Windows 8 Apps with Windows Azure Mobile ServicesBuilding Android, iOS and Windows 8 Apps with Windows Azure Mobile Services
Building Android, iOS and Windows 8 Apps with Windows Azure Mobile ServicesPranav Ainavolu
 
Three WEM Dev Tricks
Three WEM Dev TricksThree WEM Dev Tricks
Three WEM Dev TricksGabriel Walt
 
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...Luc Bors
 
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)Lucas Jellema
 
Enterprise Use Case - Selecting an Enterprise Service Bus
Enterprise Use Case - Selecting an Enterprise Service Bus Enterprise Use Case - Selecting an Enterprise Service Bus
Enterprise Use Case - Selecting an Enterprise Service Bus WSO2
 
Refinery CMS: BostonRB CMS Showdown
Refinery CMS: BostonRB CMS ShowdownRefinery CMS: BostonRB CMS Showdown
Refinery CMS: BostonRB CMS ShowdownDan Pickett
 

What's hot (19)

Java Platform and IDE Netbeans 6.7 for Developing Enterprise and Web Applicat...
Java Platform and IDE Netbeans 6.7 for Developing Enterprise and Web Applicat...Java Platform and IDE Netbeans 6.7 for Developing Enterprise and Web Applicat...
Java Platform and IDE Netbeans 6.7 for Developing Enterprise and Web Applicat...
 
Building responsive web mobile mapping applications
Building responsive web mobile mapping applicationsBuilding responsive web mobile mapping applications
Building responsive web mobile mapping applications
 
Mobile for the rest of us
Mobile for the rest of usMobile for the rest of us
Mobile for the rest of us
 
Twitter bootstrap1
Twitter bootstrap1Twitter bootstrap1
Twitter bootstrap1
 
Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to hero
Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to heroBuilding a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to hero
Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to hero
 
What's coming in WCM for Liferay 6.2?
What's coming in WCM for Liferay 6.2?What's coming in WCM for Liferay 6.2?
What's coming in WCM for Liferay 6.2?
 
Chag dashboard
Chag dashboardChag dashboard
Chag dashboard
 
AMIS Oracle OpenWorld 2013 Review Part 4- SAAS Miscellaneous and Summary
AMIS Oracle OpenWorld 2013 Review Part 4- SAAS Miscellaneous and SummaryAMIS Oracle OpenWorld 2013 Review Part 4- SAAS Miscellaneous and Summary
AMIS Oracle OpenWorld 2013 Review Part 4- SAAS Miscellaneous and Summary
 
11g boot camp weblogic and adf
11g boot camp weblogic and adf11g boot camp weblogic and adf
11g boot camp weblogic and adf
 
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
ADF in Action - getting (re)acquainted with Oracle’s premier application deve...
 
PowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application DeploymentPowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application Deployment
 
Application Development Approaches
Application Development ApproachesApplication Development Approaches
Application Development Approaches
 
Building Android, iOS and Windows 8 Apps with Windows Azure Mobile Services
Building Android, iOS and Windows 8 Apps with Windows Azure Mobile ServicesBuilding Android, iOS and Windows 8 Apps with Windows Azure Mobile Services
Building Android, iOS and Windows 8 Apps with Windows Azure Mobile Services
 
Three WEM Dev Tricks
Three WEM Dev TricksThree WEM Dev Tricks
Three WEM Dev Tricks
 
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
 
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
Introducing ADF Mobile - and Luc Bors(AMIS SIG, 12th November 2012)
 
Prashant_Shukla-UI
Prashant_Shukla-UIPrashant_Shukla-UI
Prashant_Shukla-UI
 
Enterprise Use Case - Selecting an Enterprise Service Bus
Enterprise Use Case - Selecting an Enterprise Service Bus Enterprise Use Case - Selecting an Enterprise Service Bus
Enterprise Use Case - Selecting an Enterprise Service Bus
 
Refinery CMS: BostonRB CMS Showdown
Refinery CMS: BostonRB CMS ShowdownRefinery CMS: BostonRB CMS Showdown
Refinery CMS: BostonRB CMS Showdown
 

Similar to Intuit Mobile Custom Views

Xamarin 9/10 San Diego Meetup
Xamarin 9/10 San Diego MeetupXamarin 9/10 San Diego Meetup
Xamarin 9/10 San Diego MeetupSeamgen
 
Good bye Massive View Controller!
Good bye Massive View Controller!Good bye Massive View Controller!
Good bye Massive View Controller!Supercharge
 
A Smooth Transition to HTML5
A Smooth Transition to HTML5A Smooth Transition to HTML5
A Smooth Transition to HTML5Chris Bannon
 
PaaS + Appcelerator = WIN
PaaS + Appcelerator = WINPaaS + Appcelerator = WIN
PaaS + Appcelerator = WINAaron Saunders
 
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 ArchitecturesSalesforce Developers
 
SharePoint Design & Development
SharePoint Design & DevelopmentSharePoint Design & Development
SharePoint Design & DevelopmentJonathan Schultz
 
Web, Mobile, App and Back!
Web, Mobile, App and Back!Web, Mobile, App and Back!
Web, Mobile, App and Back!Gabriel Walt
 
Web, Mobile, App and Back!
Web, Mobile, App and Back!Web, Mobile, App and Back!
Web, Mobile, App and Back!connectwebex
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...Mark Roden
 
Appcelerator Titanium at Mobile 2.0
Appcelerator Titanium at Mobile 2.0Appcelerator Titanium at Mobile 2.0
Appcelerator Titanium at Mobile 2.0Jeff Haynie
 
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator TitaniumMobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator TitaniumJeff Haynie
 
A Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVMA Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVMChris Bannon
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Ganesh Kondal
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotchaphegaro
 
Tutti pronti per Windows 10?
Tutti pronti per Windows 10?Tutti pronti per Windows 10?
Tutti pronti per Windows 10?Fabrizio Bernabei
 

Similar to Intuit Mobile Custom Views (20)

Xamarin 9/10 San Diego Meetup
Xamarin 9/10 San Diego MeetupXamarin 9/10 San Diego Meetup
Xamarin 9/10 San Diego Meetup
 
Good bye Massive View Controller!
Good bye Massive View Controller!Good bye Massive View Controller!
Good bye Massive View Controller!
 
A Smooth Transition to HTML5
A Smooth Transition to HTML5A Smooth Transition to HTML5
A Smooth Transition to HTML5
 
PaaS + Appcelerator = WIN
PaaS + Appcelerator = WINPaaS + Appcelerator = WIN
PaaS + Appcelerator = WIN
 
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
 
Kentico CMS
Kentico CMSKentico CMS
Kentico CMS
 
DotNetNuke
DotNetNukeDotNetNuke
DotNetNuke
 
SharePoint Design & Development
SharePoint Design & DevelopmentSharePoint Design & Development
SharePoint Design & Development
 
Web, Mobile, App and Back!
Web, Mobile, App and Back!Web, Mobile, App and Back!
Web, Mobile, App and Back!
 
Web, Mobile, App and Back!
Web, Mobile, App and Back!Web, Mobile, App and Back!
Web, Mobile, App and Back!
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Androidify workshop
Androidify workshopAndroidify workshop
Androidify workshop
 
Appcelerator Titanium at Mobile 2.0
Appcelerator Titanium at Mobile 2.0Appcelerator Titanium at Mobile 2.0
Appcelerator Titanium at Mobile 2.0
 
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator TitaniumMobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
 
A Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVMA Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVM
 
SAP Business Objects Trianing
SAP Business Objects TrianingSAP Business Objects Trianing
SAP Business Objects Trianing
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Mobile gotcha
Mobile gotchaMobile gotcha
Mobile gotcha
 
Tutti pronti per Windows 10?
Tutti pronti per Windows 10?Tutti pronti per Windows 10?
Tutti pronti per Windows 10?
 

Recently uploaded

Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 

Recently uploaded (20)

Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 

Intuit Mobile Custom Views

  • 3. Agenda • Custom view introduction • Demo • High-level architecture of custom view framework •Q&A
  • 4. Mobile Application Landscape Native Mobile Web Hybrids • Device integration • Single app for multiple platforms • Leverage Web advantages while having native capabilities • User experience • Push capabilities • Offline access • Performance • Tuned for particular platform • App Store • Leverage Web standards (Jscript, CSS3, HTML) • Upgradability, flexibility – instant! • Easy access via links browser, email • Installation
  • 5. Custom view introduction (Mint use case) Wish List • Personalize • Let me design my dashboard • Let me configure my dashboard • Let me action on my dashboard • Let me change it • Run my dashboard • Enable reports • Add more features over time
  • 7. How It Started • • • • • • • Custom dashboard Comparison (see things side by side) Get functionality which is in the product but never exposed Avoid extra release cycles Provide customization on product/group/user level Platform-agnostic Environment: – Starting point: • Android – Mint – Tablet – Target: • {IOS/Android/Windows/Web ?} – {Tablet/Phone/Desktop?}-{Intuit product}
  • 8. Architecture Objectives • Lego paradigm – Quickly build UX out of existing components – Be able to add 3rd-party components • Platform is a glue • Light interfaces – IOS & Java APIs – View representation – Metadata registry ( HTML - <TABLE>, <H1> <A> …) • Platform-independent view description – 3 type of layouts – vertical, horizontal, carousel – Additional aspects – scrolling, divider, background – Component configuration
  • 9. Architecture Objectives (Continued) • View instantiation – Take whole real estate – Take designated portion(s) • View crafting – Custom view designer – Hand-crafted • “Custom view” meaning could be highlighted for power users or administrators or hidden (ordinary users)
  • 11. Custom View Architecture Native Platform Custom View Interpreter Custom View Manager Custom View Designer Metadata Component registration Local Storage
  • 12. Custom View Architecture Cloud Custom View Repository Native Platform Custom View Cloud API service Custom View Interpreter Custom View Manager Custom View Designer Metadata Component registration Local Storage
  • 13. Custom View Architecture Cloud Custom View Repository (Continued)
  • 14. Architecture Components Custom View Representation (Custom View Layout, Configuration) Custom View Metadata Custom View APIs Custom View Cloud Services
  • 15. Custom View Representation • JSON-based • Screen – Container • Content <Screen>:= { Name = text, [Title= text], [Description=text], [Constraints], [Orientation], Container} <Container>:= [background="image tag"], [scrollable=true|false], ExtentType=proportional|filled| fixed ExtentValue=value ( weight for proportional, size for fixed) children={Container|Content}+, type=vertical|horizontal|carousel } <Content>:= {tag=text , [Configuration], ExtentType=proportional|variable| fixed ExtentValue=value( weight for proportional, size for fixed) }
  • 16. Custom View Layout • Containers – Vertical, – Horizontal – Carousel • Touch-based layout tuning (gesture recognition)
  • 19. Metadata Service Component registry platform-agnostic { "type": "component-registry” "components": [ { "name": "Budget", ”icon”: ”budget.png” "tag": "current_budget", "description": "This month overall budget.nNot configurable", "suggestedLayout": { "type": "fixed", "value": "120" } } ,{ "name": "Feed", "tag": "feed", "description": "Lists Mint alerts & advices.nNot configurable", "suggestedLayout": { "type": "proportional", "value": "1" } },
  • 20. Metadata Service { Component binding platform-specific (Continued) "type": "tag-registry", "tags": [ { "type": "component", "tag": "blue", "value": "BlueViewController" }, { "type": "component", "tag": "budget", "value": "TrendsController_iPad" }, { "type": "component", "tag": "feed", "value": "VespaFeedsController" }, { "type": "component", "tag": "accounts", "value": "AccountsViewController_iPad" },
  • 21. APIs • Content (may be implemented by content provider) • Screen instantiation – Inflate screen in view • Components discovery and bindings • Custom View management – Delete – Create – Find • Cloud services – Get all – Delete – Publish
  • 22. Content APIs @protocol VespaConfigurable <NSObject> – VespaConfigurable -(void) configure:(NSString *)configuration; – VespaConfigurableView -(NSString *) configuration; – VespaConfigurableController -(void) flexConfiguration; @end @protocol VespaConfigurableController <VespaConfigurable> - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil configuration:(NSString *) configuration; - @end package com.intuit.mobilelib.vespa.api; public interface ConfigurableComponent { public void setComponentConfiguration(String config); public String getComponentConfiguration(); public void flexConfiguration(ComponentConfigurator configurator); }
  • 23. Custom View Interpreter • Inflate screen • Create layout hierarchy – Instantiate content – Configure content – Apply layout constraints – Binds components
  • 24. Custom View Manager • Manages screens – Create (Designer) – Delete – View (sort) – Edit
  • 25. Custom View Designer • Create/edit screens – Displays content repository – Layout selection – Layout tuning – Drag & drop interface – Orchestrate content configuration
  • 26. Custom View Discrimination • • • • By By By By platform (any, Android, IOS) orientation (any, portrait, landscape) type (phone, tablet) tags – multi-tenancy (“Plumber”, “Sweet Bagels”)
  • 27. Standard Components • General – Web view – Image view – RSS feed – Weather – Stock • Mint – Accounts – Budget – Transactions – Spending – Income – Reports
  • 30. Content Writers’ Guidelines • Componentization!!! • Do not use hardcoded sizes!!! (IOS) • Make everything “relative” • Maximize advantages of Android layouts & fragments and IOS autolayout
  • 31. Takeaways • It is possible to personalize, customize native user experience for certain type of applications • You may achieve common dashboard, reporting capabilities in a platform agnostic way • It is possible to distribute and share custom views among group of users (admin/crowd sourcing)
  • 32. Q&A Want to talk more? I’ll be at the Intuit booth today 11am – 2pm. Email: eugene_krivopaltsev@intuit.com
  • 33. Intuit Speakers @ Silicon Code Camp 2013: SATURDAY 9:45 a.m. - Ramakrishna Kollipara – “Complete Automation of Performance Testing” 1:45 p.m. - Joe Wells - “QBO: Journey From legacy Java app to a Client-side HTML5 app” 3:30 p.m. - Naga Addagadde & Sangeeta Narang – “Intuit APIs for Financial Transaction Aggregation” 5:00 p.m. Ted Drake –“Hitting the Accessibility High Notes with ARIA” SUNDAY 9:15 a.m. - Eugene Krivopaltsev –“Building Native Mobile Apps with Custom Views” 1:15 p.m. - Tim Hobson – “Developing Highly Instrumental Applications with Minimal Effort” For more information about joining our organization visit our booth or connect with our onsite recruiter: Chriscox_recruiter@intuit.com You don't want to miss out on a chance to win this cool headset. Stop by our booth to enter 33