Nick	  Sykes,	  Director	  of	  Mobile	  Projects	  Trent	  Gundersen,	  Android	  Development	  Lead	  10,000,000	  Lines...
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	  clai...
London,	  England	  	  	  	  •  Each	  day	  14,000	  property	  claims	  processed	  •  Over	  31.5	  million	  property	...
2014•  New	  210,000	  square	  foot	  campus	  	  	  	  •  Fitness	  Center,	  Beach	  Volleyball,	  and	  Basketball	  C...
2014
Turkey	  Fire
COLLAPSE	  COLLISION	  EARTH	  MOVEMENT	  EARTHQUAKE	  FIRE	  FREEZING	  HAIL	  HURRICANE	  LIGHTNING	  SMOKE	  STRUCTURAL...
Super	  Storm	  Sandy,	  2012
Super	  Storm	  Sandy,	  2012$25.0	  Billion
Super	  Storm	  Sandy,	  2012400,000claims	  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	  M...
User’s	  Mobile	  Experience	  •  Why	  do	  they	  want	  a	  mobile	  soluOon?	  •  What	  makes	  sense?	  •  Don’t	  t...
Mobile	  Devices	  •  Keeping	  up	  with	  new	  devices	  •  FragmentaOon	  •  When	  to	  force	  an	  upgrade	  of	  h...
Why	  We	  Chose1.  UOlize	  exisOng,	  complex	  codebase	  2.  Same	  calculaOons	  across	  plaiorms	  3.  Speed	  of	 ...
App	  Demo
Appendix	  
How	  We	  Started	  •  Created	  a	  new	  mobile	  soluOon	  –  Learned	  later	  on	  we	  needed	  2	  soluOons	  •  O...
Project	  Structure	  •  We	  created	  two	  soluOons	  – iOS	  and	  Android	  – Custom	  build	  commands	  to	  replac...
Sketch	  Interface	  ImplementaMon 	  	  •  Created	  a	  test	  setup	  environment	  for	  our	  Sketch	  applicaOon	  •...
iOS	  CompilaMon	  •  Edge	  Cases:	  – Assembly	  size	  –	  We	  ran	  into	  a	  case	  where	  we	  could	  not	  comp...
Memory	  Management	  •  Windows	  Desktop	  applicaOons	  don’t	  worry	  about	  memory	  like	  you	  need	  to	  on	  ...
2	  GC	  Systems	  on	  Android	  •  Use	  structs	  instead	  of	  classes	  when	  your	  system	  is	  allocaOng	  thou...
GC	  on	  iOS	  •  We	  had	  to	  explicitly	  call	  collect	  in	  a	  few	  cases	  to	  keep	  performance	  up	  •  ...
Preprocess	  DirecMves	  •  We	  had	  to	  use	  liberal	  amounts	  of	  #if	  !MONO	  throughout	  the	  code	  base	  ...
Lucene	  •  It	  overflows	  on	  purpose	  –	  Change	  the	  compiler	  to	  not	  care	  about	  overflows	  otherwise	  ...
The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nick Sykes and Trent Gundersen
The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nick Sykes and Trent Gundersen
The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nick Sykes and Trent Gundersen
The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nick Sykes and Trent Gundersen
Upcoming SlideShare
Loading in …5
×

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

1,260 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,260
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Nick  Sykes,  Director  of  Mobile  Projects  Trent  Gundersen,  Android  Development  Lead  10,000,000  Lines  of  Code  to  Mobile    
  2. 2. 1986  27  Years  Ago…  
  3. 3. 1986  27  Years  Ago…  
  4. 4. Orem,  Utah  
  5. 5. 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          
  6. 6. London,  England        •  Each  day  14,000  property  claims  processed  •  Over  31.5  million  property  claims  processed    
  7. 7. 2014•  New  210,000  square  foot  campus        •  Fitness  Center,  Beach  Volleyball,  and  Basketball  Courts  
  8. 8. 2014
  9. 9. Turkey  Fire
  10. 10. COLLAPSE  COLLISION  EARTH  MOVEMENT  EARTHQUAKE  FIRE  FREEZING  HAIL  HURRICANE  LIGHTNING  SMOKE  STRUCTURAL  DEFECT  THEFT  VANDALISM  WATER  WIND  
  11. 11. Super  Storm  Sandy,  2012
  12. 12. Super  Storm  Sandy,  2012$25.0  Billion
  13. 13. Super  Storm  Sandy,  2012400,000claims  assigned  in  days
  14. 14. Hurricane  Katrina,  2005
  15. 15. Hurricane  Katrina,  2005$48.7  Billion
  16. 16. Mobile  Team
  17. 17. (Video)
  18. 18. App  Demo
  19. 19. 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  
  20. 20. 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.      
  21. 21. Mobile  Devices  •  Keeping  up  with  new  devices  •  FragmentaOon  •  When  to  force  an  upgrade  of  hardware  •  Internal  tesOng  device  budget  
  22. 22. Why  We  Chose1.  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  
  23. 23. App  Demo
  24. 24. Appendix  
  25. 25. 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.  
  26. 26. Project  Structure  •  We  created  two  soluOons  – iOS  and  Android  – Custom  build  commands  to  replace  the  AndroidManifest.xml  to  have  to  separate  package  names  
  27. 27. 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  
  28. 28. 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.  
  29. 29. 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.  
  30. 30. 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  
  31. 31. 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.    
  32. 32. Preprocess  DirecMves  •  We  had  to  use  liberal  amounts  of  #if  !MONO  throughout  the  code  base  to  remove  non  .net  pieces  of  our  desktop  applicaOon  
  33. 33. 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.    

×