SlideShare uma empresa Scribd logo
1 de 37
Nick	
  Sykes,	
  Director	
  of	
  Mobile	
  Projects	
  
Trent	
  Gundersen,	
  Android	
  Development	
  Lead	
  
10,000,000	
  Lines	
  of	
  Code	
  to	
  Mobile	
  	
  
1986	
  
27	
  Years	
  Ago…	
  
1986	
  
27	
  Years	
  Ago…	
  
Orem,	
  Utah	
  
Orem,	
  Utah	
  

•  19	
  of	
  the	
  top	
  25	
  US	
  insurance	
  carriers	
  	
  
•  80%	
  of	
  US	
  homeowner	
  property	
  claims	
  	
  
•  7	
  of	
  the	
  top	
  10	
  US	
  independent	
  adjusOng	
  firms	
  
	
  
	
  
	
  
	
  
London,	
  England	
  

	
  
	
  
	
  
•  Each	
  day	
  14,000	
  property	
  claims	
  
processed	
  
•  Over	
  31.5	
  million	
  property	
  claims	
  
processed	
  	
  
2014
•  New	
  210,000	
  square	
  foot	
  
campus	
  
	
  
	
  
	
  
•  Fitness	
  Center,	
  Beach	
  Volleyball,	
  and	
  
Basketball	
  Courts	
  
2014
Turkey	
  Fire
COLLAPSE	
  
COLLISION	
  
EARTH	
  MOVEMENT	
  
EARTHQUAKE	
  
FIRE	
  
FREEZING	
  
HAIL	
  
HURRICANE	
  
LIGHTNING	
  
SMOKE	
  
STRUCTURAL	
  DEFECT	
  
THEFT	
  
VANDALISM	
  
WATER	
  
WIND	
  
Super	
  Storm	
  Sandy,	
  2012
Super	
  Storm	
  Sandy,	
  2012
$25.0	
  Billion
Super	
  Storm	
  Sandy,	
  2012
400,000
claims	
  assigned	
  in	
  days
Hurricane	
  Katrina,	
  
2005
Hurricane	
  Katrina,	
  
2005
$48.7	
  Billion
Mobile	
  Team
(Video)
App	
  Demo
Xactware	
  Customers	
  Want	
  Mobile	
  
•  We	
  tried	
  mobile	
  a	
  few	
  Omes…	
  	
  	
  
–  Apple	
  Newton	
  
–  Windows	
  Mobile	
  
–  XP	
  Tablet	
  EdiOon	
  
–  Blackberry	
  	
  
–  iOS	
  (naOve	
  objecOve	
  C)	
  
•  Too	
  much	
  overhead	
  and	
  
customer	
  maintenance	
  
•  Finally	
  a	
  shared	
  iOS	
  and	
  Android	
  version	
  
User’s	
  Mobile	
  Experience	
  
•  Why	
  do	
  they	
  want	
  a	
  mobile	
  
soluOon?	
  
•  What	
  makes	
  sense?	
  
•  Don’t	
  try	
  to	
  include	
  everything	
  
•  Desktop	
  applicaOon	
  without	
  a	
  
mouse	
  and	
  keyboard.	
  	
  	
  
Mobile	
  Devices	
  
•  Keeping	
  up	
  with	
  new	
  devices	
  
•  FragmentaOon	
  
•  When	
  to	
  force	
  an	
  upgrade	
  of	
  hardware	
  
•  Internal	
  tesOng	
  device	
  budget	
  
Why	
  We	
  Chose
1.  UOlize	
  exisOng,	
  complex	
  codebase	
  
2.  Same	
  calculaOons	
  across	
  plaiorms	
  
3.  Speed	
  of	
  deployment	
  
4.  .NET	
  developer	
  recruitment	
  
5.  TransiOon	
  and	
  training	
  of	
  developers	
  
6.  RelaOonship	
  with	
  Xamarin	
  
App	
  Demo
Appendix	
  
How	
  We	
  Started	
  
•  Created	
  a	
  new	
  mobile	
  soluOon	
  
–  Learned	
  later	
  on	
  we	
  needed	
  2	
  soluOons	
  
•  One	
  for	
  each	
  plaiorm	
  Android	
  and	
  iOS	
  
–  Xamarin.iOS	
  libraries	
  are	
  not	
  compaOble	
  on	
  Android	
  
–  Decided	
  what	
  assemblies	
  we	
  needed.	
  
–  Started	
  adding	
  empty	
  projects	
  and	
  then	
  adding	
  in	
  files	
  
to	
  them	
  and	
  compiling	
  
–  Added	
  needed	
  references	
  and	
  dependent	
  assemblies	
  
and	
  classes	
  
–  Got	
  everything	
  compiling	
  as	
  a	
  first	
  step,	
  nothing	
  visual	
  
yet.	
  
Project	
  Structure	
  
•  We	
  created	
  two	
  soluOons	
  
– iOS	
  and	
  Android	
  
– Custom	
  build	
  commands	
  to	
  replace	
  the	
  
AndroidManifest.xml	
  to	
  have	
  to	
  separate	
  package	
  
names	
  
Sketch	
  Interface	
  ImplementaMon 	
  	
  
•  Created	
  a	
  test	
  setup	
  environment	
  for	
  our	
  
Sketch	
  applicaOon	
  
•  Implemented	
  Drawing	
  class	
  for	
  sketch	
  
•  Used	
  mouse	
  click	
  events	
  and	
  connected	
  to	
  
touch	
  events	
  and	
  touched	
  the	
  screen	
  
– Jumped	
  up	
  and	
  down	
  in	
  excitement	
  because	
  20	
  
years	
  of	
  code	
  was	
  now	
  running	
  on	
  iOS	
  and	
  
android	
  
iOS	
  CompilaMon	
  
•  Edge	
  Cases:	
  
– Assembly	
  size	
  –	
  We	
  ran	
  into	
  a	
  case	
  where	
  we	
  
could	
  not	
  compile	
  an	
  assembly	
  because	
  we	
  
exceeded	
  the	
  gcc	
  limit	
  –	
  we	
  had	
  to	
  split	
  the	
  
assembly.	
  
Memory	
  Management	
  
•  Windows	
  Desktop	
  applicaOons	
  don’t	
  worry	
  
about	
  memory	
  like	
  you	
  need	
  to	
  on	
  Mobile	
  
devices.	
  	
  This	
  is	
  a	
  large	
  concern	
  porOng	
  huge	
  
code	
  bases	
  to	
  mobile	
  
– Events	
  
•  Must	
  release	
  them.	
  	
  +=	
  must	
  be	
  followed	
  with	
  -­‐=,	
  this	
  
will	
  kill	
  you	
  
•  NaOve	
  Controls	
  –	
  iOS	
  –	
  UITextView	
  and	
  all	
  naOve	
  
controls,	
  you	
  must	
  dispose	
  them	
  explicitly.	
  
2	
  GC	
  Systems	
  on	
  Android	
  
•  Use	
  structs	
  instead	
  of	
  classes	
  when	
  your	
  system	
  is	
  
allocaOng	
  thousands	
  of	
  objects	
  per	
  second.	
  	
  The	
  GC	
  
can’t	
  keep	
  up	
  
GC	
  on	
  iOS	
  
•  We	
  had	
  to	
  explicitly	
  call	
  collect	
  in	
  a	
  few	
  cases	
  
to	
  keep	
  performance	
  up	
  
•  We	
  had	
  to	
  increase	
  the	
  number	
  of	
  
trampolines	
  
•  Mixed	
  library	
  using	
  naOve	
  objecOve	
  c	
  librarys	
  
are	
  really	
  hard	
  to	
  debug,	
  Just	
  don’t	
  do	
  it	
  
unless	
  you	
  have	
  to.	
  
	
  
Preprocess	
  DirecMves	
  
•  We	
  had	
  to	
  use	
  liberal	
  amounts	
  of	
  #if	
  !MONO	
  
throughout	
  the	
  code	
  base	
  to	
  remove	
  non	
  .net	
  
pieces	
  of	
  our	
  desktop	
  applicaOon	
  
Lucene	
  
•  It	
  overflows	
  on	
  purpose	
  –	
  Change	
  the	
  
compiler	
  to	
  not	
  care	
  about	
  overflows	
  
otherwise	
  it	
  will	
  crash	
  randomly	
  in	
  places	
  that	
  
do	
  not	
  make	
  any	
  sense.	
  	
  Total	
  garbage	
  call	
  
stacks.	
  
	
  

Mais conteúdo relacionado

Semelhante a The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nick Sykes and Trent Gundersen

An Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller PatternAn Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller PatternTeamstudio
 
Mobile Applications with Angular 4 and Ionic 3
Mobile Applications with Angular 4 and Ionic 3Mobile Applications with Angular 4 and Ionic 3
Mobile Applications with Angular 4 and Ionic 3Oleksandr Tryshchenko
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android ApplicationsLeif Janzik
 
Pieter Brinkman - My first mobile experience From mobile no no, to mobile go ...
Pieter Brinkman - My first mobile experienceFrom mobile no no, to mobile go ...Pieter Brinkman - My first mobile experienceFrom mobile no no, to mobile go ...
Pieter Brinkman - My first mobile experience From mobile no no, to mobile go ...SUGCON
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDocker, Inc.
 
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and DeliveryDESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and DeliveryDavid Rosen
 
Docker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker, Inc.
 
Field enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakField enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakBlueMetalInc
 
Real World Windows 8 Apps in JavaScript
Real World Windows 8 Apps in JavaScriptReal World Windows 8 Apps in JavaScript
Real World Windows 8 Apps in JavaScriptDomenic Denicola
 
Mobile (App) Development with Sitecore
Mobile (App) Development with SitecoreMobile (App) Development with Sitecore
Mobile (App) Development with SitecorePieter Brinkman
 
OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012Steven Pousty
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to XamarinBrian Anderson
 
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Bala Subra
 
Disenchantment: Netflix Titus, Its Feisty Team, and Daemons
Disenchantment: Netflix Titus, Its Feisty Team, and DaemonsDisenchantment: Netflix Titus, Its Feisty Team, and Daemons
Disenchantment: Netflix Titus, Its Feisty Team, and DaemonsC4Media
 
FLIGHT Amsterdam Presentation - From Protex to Hub
FLIGHT Amsterdam Presentation - From Protex to Hub FLIGHT Amsterdam Presentation - From Protex to Hub
FLIGHT Amsterdam Presentation - From Protex to Hub Black Duck by Synopsys
 
Creating Dragon City for Mobile
Creating Dragon City for MobileCreating Dragon City for Mobile
Creating Dragon City for MobileSocial Point
 
Italian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionItalian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionChris Hardy
 

Semelhante a The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nick Sykes and Trent Gundersen (20)

An Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller PatternAn Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller Pattern
 
Mobile Applications with Angular 4 and Ionic 3
Mobile Applications with Angular 4 and Ionic 3Mobile Applications with Angular 4 and Ionic 3
Mobile Applications with Angular 4 and Ionic 3
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Pieter Brinkman - My first mobile experience From mobile no no, to mobile go ...
Pieter Brinkman - My first mobile experienceFrom mobile no no, to mobile go ...Pieter Brinkman - My first mobile experienceFrom mobile no no, to mobile go ...
Pieter Brinkman - My first mobile experience From mobile no no, to mobile go ...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
DevOps Days Ohio
DevOps Days OhioDevOps Days Ohio
DevOps Days Ohio
 
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and DeliveryDESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
 
Docker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott Coulton
 
Field enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakField enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John Pelak
 
Real World Windows 8 Apps in JavaScript
Real World Windows 8 Apps in JavaScriptReal World Windows 8 Apps in JavaScript
Real World Windows 8 Apps in JavaScript
 
Mobile (App) Development with Sitecore
Mobile (App) Development with SitecoreMobile (App) Development with Sitecore
Mobile (App) Development with Sitecore
 
OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012OpenShift with Eclipse Tooling - EclipseCon 2012
OpenShift with Eclipse Tooling - EclipseCon 2012
 
Death to Manual Deployments
Death to Manual DeploymentsDeath to Manual Deployments
Death to Manual Deployments
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
Mobile Development Architecture Ppt with Slides, Book Notes on using Web Silv...
 
Disenchantment: Netflix Titus, Its Feisty Team, and Daemons
Disenchantment: Netflix Titus, Its Feisty Team, and DaemonsDisenchantment: Netflix Titus, Its Feisty Team, and Daemons
Disenchantment: Netflix Titus, Its Feisty Team, and Daemons
 
FLIGHT Amsterdam Presentation - From Protex to Hub
FLIGHT Amsterdam Presentation - From Protex to Hub FLIGHT Amsterdam Presentation - From Protex to Hub
FLIGHT Amsterdam Presentation - From Protex to Hub
 
Creating Dragon City for Mobile
Creating Dragon City for MobileCreating Dragon City for Mobile
Creating Dragon City for Mobile
 
Italian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionItalian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch Session
 

Mais de Xamarin

Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin
 
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinXamarin
 
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinGet the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinXamarin
 
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushCreative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushXamarin
 
Build Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureBuild Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureXamarin
 
Exploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksExploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksXamarin
 
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinDesktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinXamarin
 
Developer’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningDeveloper’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningXamarin
 
Customizing Xamarin.Forms UI
Customizing Xamarin.Forms UICustomizing Xamarin.Forms UI
Customizing Xamarin.Forms UIXamarin
 
Session 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesSession 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesXamarin
 
Session 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilitySession 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilityXamarin
 
Session 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeSession 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeXamarin
 
Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Xamarin
 
SkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsSkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsXamarin
 
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureBuilding Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureXamarin
 
Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Xamarin
 
Connected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureConnected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureXamarin
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Xamarin
 
Building Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioBuilding Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioXamarin
 

Mais de Xamarin (20)

Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...Xamarin University Presents: Building Your First Intelligent App with Xamarin...
Xamarin University Presents: Building Your First Intelligent App with Xamarin...
 
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App CenterXamarin University Presents: Ship Better Apps with Visual Studio App Center
Xamarin University Presents: Ship Better Apps with Visual Studio App Center
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
 
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for XamarinGet the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
Get the Most out of Android 8 Oreo with Visual Studio Tools for Xamarin
 
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePushCreative Hacking: Delivering React Native App A/B Testing Using CodePush
Creative Hacking: Delivering React Native App A/B Testing Using CodePush
 
Build Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft AzureBuild Better Games with Unity and Microsoft Azure
Build Better Games with Unity and Microsoft Azure
 
Exploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin WorkbooksExploring UrhoSharp 3D with Xamarin Workbooks
Exploring UrhoSharp 3D with Xamarin Workbooks
 
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for XamarinDesktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
Desktop Developer’s Guide to Mobile with Visual Studio Tools for Xamarin
 
Developer’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine LearningDeveloper’s Intro to Azure Machine Learning
Developer’s Intro to Azure Machine Learning
 
Customizing Xamarin.Forms UI
Customizing Xamarin.Forms UICustomizing Xamarin.Forms UI
Customizing Xamarin.Forms UI
 
Session 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and ResourcesSession 4 - Xamarin Partner Program, Events and Resources
Session 4 - Xamarin Partner Program, Events and Resources
 
Session 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and ProfitabilitySession 3 - Driving Mobile Growth and Profitability
Session 3 - Driving Mobile Growth and Profitability
 
Session 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile PracticeSession 2 - Emerging Technologies in your Mobile Practice
Session 2 - Emerging Technologies in your Mobile Practice
 
Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud Session 1 - Transformative Opportunities in Mobile and Cloud
Session 1 - Transformative Opportunities in Mobile and Cloud
 
SkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.FormsSkiaSharp Graphics for Xamarin.Forms
SkiaSharp Graphics for Xamarin.Forms
 
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and AzureBuilding Games for iOS, macOS, and tvOS with Visual Studio and Azure
Building Games for iOS, macOS, and tvOS with Visual Studio and Azure
 
Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017Intro to Xamarin.Forms for Visual Studio 2017
Intro to Xamarin.Forms for Visual Studio 2017
 
Connected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft AzureConnected Mobile Apps with Microsoft Azure
Connected Mobile Apps with Microsoft Azure
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017
 
Building Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual StudioBuilding Your First iOS App with Xamarin for Visual Studio
Building Your First iOS App with Xamarin for Visual Studio
 

Último

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
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
 

Último (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
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
 

The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nick Sykes and Trent Gundersen

  • 1. Nick  Sykes,  Director  of  Mobile  Projects   Trent  Gundersen,  Android  Development  Lead   10,000,000  Lines  of  Code  to  Mobile    
  • 2. 1986   27  Years  Ago…  
  • 3. 1986   27  Years  Ago…  
  • 4.
  • 6.
  • 7.
  • 8. Orem,  Utah   •  19  of  the  top  25  US  insurance  carriers     •  80%  of  US  homeowner  property  claims     •  7  of  the  top  10  US  independent  adjusOng  firms          
  • 9. London,  England         •  Each  day  14,000  property  claims   processed   •  Over  31.5  million  property  claims   processed    
  • 10. 2014 •  New  210,000  square  foot   campus         •  Fitness  Center,  Beach  Volleyball,  and   Basketball  Courts  
  • 11. 2014
  • 12.
  • 14. COLLAPSE   COLLISION   EARTH  MOVEMENT   EARTHQUAKE   FIRE   FREEZING   HAIL   HURRICANE   LIGHTNING   SMOKE   STRUCTURAL  DEFECT   THEFT   VANDALISM   WATER   WIND  
  • 16. Super  Storm  Sandy,  2012 $25.0  Billion
  • 17. Super  Storm  Sandy,  2012 400,000 claims  assigned  in  days
  • 23. Xactware  Customers  Want  Mobile   •  We  tried  mobile  a  few  Omes…       –  Apple  Newton   –  Windows  Mobile   –  XP  Tablet  EdiOon   –  Blackberry     –  iOS  (naOve  objecOve  C)   •  Too  much  overhead  and   customer  maintenance   •  Finally  a  shared  iOS  and  Android  version  
  • 24. User’s  Mobile  Experience   •  Why  do  they  want  a  mobile   soluOon?   •  What  makes  sense?   •  Don’t  try  to  include  everything   •  Desktop  applicaOon  without  a   mouse  and  keyboard.      
  • 25. Mobile  Devices   •  Keeping  up  with  new  devices   •  FragmentaOon   •  When  to  force  an  upgrade  of  hardware   •  Internal  tesOng  device  budget  
  • 26. Why  We  Chose 1.  UOlize  exisOng,  complex  codebase   2.  Same  calculaOons  across  plaiorms   3.  Speed  of  deployment   4.  .NET  developer  recruitment   5.  TransiOon  and  training  of  developers   6.  RelaOonship  with  Xamarin  
  • 29. How  We  Started   •  Created  a  new  mobile  soluOon   –  Learned  later  on  we  needed  2  soluOons   •  One  for  each  plaiorm  Android  and  iOS   –  Xamarin.iOS  libraries  are  not  compaOble  on  Android   –  Decided  what  assemblies  we  needed.   –  Started  adding  empty  projects  and  then  adding  in  files   to  them  and  compiling   –  Added  needed  references  and  dependent  assemblies   and  classes   –  Got  everything  compiling  as  a  first  step,  nothing  visual   yet.  
  • 30. Project  Structure   •  We  created  two  soluOons   – iOS  and  Android   – Custom  build  commands  to  replace  the   AndroidManifest.xml  to  have  to  separate  package   names  
  • 31. Sketch  Interface  ImplementaMon     •  Created  a  test  setup  environment  for  our   Sketch  applicaOon   •  Implemented  Drawing  class  for  sketch   •  Used  mouse  click  events  and  connected  to   touch  events  and  touched  the  screen   – Jumped  up  and  down  in  excitement  because  20   years  of  code  was  now  running  on  iOS  and   android  
  • 32. iOS  CompilaMon   •  Edge  Cases:   – Assembly  size  –  We  ran  into  a  case  where  we   could  not  compile  an  assembly  because  we   exceeded  the  gcc  limit  –  we  had  to  split  the   assembly.  
  • 33. Memory  Management   •  Windows  Desktop  applicaOons  don’t  worry   about  memory  like  you  need  to  on  Mobile   devices.    This  is  a  large  concern  porOng  huge   code  bases  to  mobile   – Events   •  Must  release  them.    +=  must  be  followed  with  -­‐=,  this   will  kill  you   •  NaOve  Controls  –  iOS  –  UITextView  and  all  naOve   controls,  you  must  dispose  them  explicitly.  
  • 34. 2  GC  Systems  on  Android   •  Use  structs  instead  of  classes  when  your  system  is   allocaOng  thousands  of  objects  per  second.    The  GC   can’t  keep  up  
  • 35. GC  on  iOS   •  We  had  to  explicitly  call  collect  in  a  few  cases   to  keep  performance  up   •  We  had  to  increase  the  number  of   trampolines   •  Mixed  library  using  naOve  objecOve  c  librarys   are  really  hard  to  debug,  Just  don’t  do  it   unless  you  have  to.    
  • 36. Preprocess  DirecMves   •  We  had  to  use  liberal  amounts  of  #if  !MONO   throughout  the  code  base  to  remove  non  .net   pieces  of  our  desktop  applicaOon  
  • 37. Lucene   •  It  overflows  on  purpose  –  Change  the   compiler  to  not  care  about  overflows   otherwise  it  will  crash  randomly  in  places  that   do  not  make  any  sense.    Total  garbage  call   stacks.