SlideShare une entreprise Scribd logo
1  sur  46
THE ANATOMY OF A SERIOUSLY  SOPHISTICATED AIR APPLICATION
BEFORE WE GET DOWN TO BUSINESS…
WHAT WAS OUR BRIEF FROM FIAT? BUILD A PRODUCT THAT HELPS IMPROVE YOUR DRIVING USING TELEMATIC DATA COLLECTED FROM THE CAR
WHY IS ECO:DRIVE “SOPHISTICATED”? THE CHALLENGES CONNECTING YOUR CAR TO YOUR COMPUTER IS A NEW CONCEPT TO MOST DRIVING DATA CAN BE CONFUSING LARGE AMOUNTS OF DATA, ONCE PER SECOND OF EVERY JOURNEY
WHY IS ECO:DRIVE “SOPHISTICATED”? THE CHALLENGES CONNECTING YOUR CAR TO YOUR COMPUTER IS A NEW CONCEPT TO MOST DRIVING DATA CAN BE CONFUSING LARGE AMOUNTS OF DATA, ONCE PER SECOND OF EVERY JOURNEY YET THE SOLUTION HAD TO BE INTUITIVE EASY TO USE RESPONSIVE
A LITTLE BIT MORE DETAIL… BUILT USING ADOBE AIR 1.1 AND FLEX
A LITTLE BIT MORE DETAIL… BUILT IN 4 MONTHS BY A DEVELOPMENT TEAM OF 5 BUILT USING ADOBE AIR 1.1 AND FLEX
A LITTLE BIT MORE DETAIL… BUILT IN 4 MONTHS BY A DEVELOPMENT TEAM OF 5 CREATED USING FLEXBUILDER 3 PROFESSIONAL EDITION BUILT USING ADOBE AIR 1.1 AND FLEX
A LITTLE BIT MORE DETAIL… BUILT IN 4 MONTHS BY A DEVELOPMENT TEAM OF 5 CREATED USING FLEXBUILDER 3 PROFESSIONAL EDITION LAUNCHED IN 3 LANGUAGES, SOON TO BE 5 BUILT USING ADOBE AIR 1.1 AND FLEX
WHY ADOBE AIR? CROSS PLATFORM
WHY ADOBE AIR? SMOOTH INSTALL OF THE FRAMEWORK AND APPLICATION CROSS PLATFORM
WHY ADOBE AIR? SMOOTH INSTALL OF THE FRAMEWORK AND APPLICATION EASY AUTO-UPDATE FUNCTIONALITY CROSS PLATFORM
WHY ADOBE AIR? SMOOTH INSTALL OF THE FRAMEWORK AND APPLICATION EASY AUTO-UPDATE FUNCTIONALITY INTERGRATED SQLITE DB CROSS PLATFORM
WHAT DOES ECO:DRIVE  LOOK LIKE INSIDE?
THE MANDATORY BLOCK DIAGRAM
THE MANDATORY BLOCK DIAGRAM USB KEY
THE MANDATORY BLOCK DIAGRAM USB KEY ECO:INDEX WEB SERVICE HTTP COMMUNITY WEB SERVICE HTTP FUEL PRICE WEB SERVICE HTTP
DELVING DEEPER IMPORTING DATA GRAPHING THE DATA CONTEXTUALISING THE DATA
IMPORTING DATA: PARSING LIMITED SPACE AVAILABLE IN BLUE & ME COMPUTER MORE COMPUTING POWER AVAILABLE ON THE DESKTOP THAN IN THE CAR EASE OF PARSING WAS NOT THE FIRST PRIORITY NO BITARRAY IN ACTIONSCRIPT 3 DATA IS STORED IN A TIGHTLY PACKED BIT ARRAY
IMPORTING DATA: WRITING DATA TO THE DATABASE THERE WERE TWO MAJOR REQUIREMENTS IMPORT HAD TO BE HIGHLY PERFORMANT USER INTERFACE HAD TO REMAIN SMOOTH AND RESPONSIVE
IMPORTING DATA: WRITING DATA TO THE DATABASE THERE WERE TWO MAJOR REQUIREMENTS IMPORT HAD TO BE HIGHLY PERFORMANT USER INTERFACE HAD TO REMAIN SMOOTH AND RESPONSIVE THERE WERE TWO PROBLEMS USING A TIMER WAS NOT FAST ENOUGH USING “FOR” LOOPS MEANT AN UNRESPONSIVE APPLICATION
IMPORTING DATA: WRITING DATA TO THE DATABASE THERE WERE TWO MAJOR REQUIREMENTS IMPORT HAD TO BE HIGHLY PERFORMANT USER INTERFACE HAD TO REMAIN SMOOTH AND RESPONSIVE THERE WERE TWO PROBLEMS USING A TIMER WAS NOT FAST ENOUGH USING “FOR” LOOPS MEANT AN UNRESPONSIVE APPLICATION THE SOLUTION? THE “ASYNC CHUNKER MONKEY”
IMPORTING DATA: THE ASYNC CHUNKER WHAT? USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
IMPORTING DATA: THE ASYNC CHUNKER WHAT? USING A TIMER USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
IMPORTING DATA: THE ASYNC CHUNKER WHAT? USING THE ASYNC CHUNKER MONKEY USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
IMPORTING DATA: THE ASYNC CHUNKER WHAT? MAX TIME FOR EXECUITION IS SET BY DEVELOPER USING THE ASYNC CHUNKER MONKEY USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
IMPORTING DATA: THE ASYNC CHUNKER WHAT? MAX TIME FOR EXECUITION IS SET BY DEVELOPER USING THE ASYNC CHUNKER MONKEY USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
THE PEOPLE BEHIND THE PRODUCT…
HERE’S HOW YOU MIGHT THINK IT WORKED
HERE’S HOW YOU MIGHT THINK IT WORKED
HERE’S HOW YOU MIGHT THINK IT WORKED
HERE’S HOW YOU MIGHT THINK IT WORKED
HERE’S HOW YOU MIGHT THINK IT WORKED
HERE’S HOW YOU MIGHT THINK IT WORKED
HERE’S HOW YOU MIGHT THINK IT WORKED
HERE’S HOW YOU MIGHT THINK IT WORKED
HOW DID IT ALL WORK OUT? HERE’S HOW YOU MIGHT THINK IT WORKED
HERE’S HOW WE ENDED UP SEEING IT…
THE MOST TRICKY PART…
KEEPING QUALITY HIGH
KEEPING QUALITY HIGH PROOF OF CONCEPTS CONTINUOUS INTEGRATION USING CRUISECONTROL.NET PEER REVIEW ON EVERY CHECK-IN UNIT TESTS USING FLEXUNIT AND FLEXCOVER
TOP TIPS AND LESSONS LEARNED
TOP TIPS AND LESSONS LEARNED FILE.GETROOTDIRECTORIES ISN’T AS GREAT AS YOU MIGHT THINK NEVER  WRITE DATA TO THE APPLICATION DIRECTORY MULTI-LINGUAL? ALWAYS GET THE USER TO CHOOSE THEIR OWN LANGUAGE USE THE VIEWSTACK CLASS CAREFULLY KEEP YOUR DATABASE ACCESS STRATEGY CONSISTENT
CLOSING WORDS
CLOSING WORDS… DO PROOF OF CONCEPTS FOR ANY RISKY AND ESSENTIAL FUNCTIONALITY UNIT TEST YOUR CODE. IT HELPS PREVENT BUGS AND IMPROVES THE APPLICATION ARCHITECTURE. THINK ABOUT PERFORMANCE – ESPECIALLY IF YOU ARE PROCESSING LARGE AMOUNTS OF DATA ADOBE AIR IS A GREAT PLATFORM FOR INNOVATIVE DESKTOP APPLICATIONS.
LINKS AND Q&A http://www.fiat.co.uk/ecoDrive - eco:Drive home page http://code.google.com/p/as3localelib/ - Locale Library http://thanksmister.com/?p=92 – Detecting Local Drives with Adobe AIR http://is.gd/7RcW - Article about Usability, Interactivity in Agile Processes Rick’s blog: http://www.pixelpod.co.uk Adam’s blog: http://blog.adamcreeger.com

Contenu connexe

Tendances

Tendances (20)

Microsoft Azure Automation
Microsoft Azure AutomationMicrosoft Azure Automation
Microsoft Azure Automation
 
Akamai-as-Code with The Washington Post
Akamai-as-Code with The Washington PostAkamai-as-Code with The Washington Post
Akamai-as-Code with The Washington Post
 
Self-healing Applications with Ansible
Self-healing Applications with AnsibleSelf-healing Applications with Ansible
Self-healing Applications with Ansible
 
Testing in Infrastructure
Testing in InfrastructureTesting in Infrastructure
Testing in Infrastructure
 
Aero app updates how to v1.1510.12
Aero app updates how to v1.1510.12Aero app updates how to v1.1510.12
Aero app updates how to v1.1510.12
 
Deployment with Elastic Beanstalk at Edinburgh Startup Event
Deployment with Elastic Beanstalk at Edinburgh Startup EventDeployment with Elastic Beanstalk at Edinburgh Startup Event
Deployment with Elastic Beanstalk at Edinburgh Startup Event
 
Rails on Rack
Rails on RackRails on Rack
Rails on Rack
 
Python in SQL 2019
Python in SQL 2019Python in SQL 2019
Python in SQL 2019
 
WordPress REST API
WordPress REST APIWordPress REST API
WordPress REST API
 
Herding Microservices – the Atlassian Way
Herding Microservices – the Atlassian WayHerding Microservices – the Atlassian Way
Herding Microservices – the Atlassian Way
 
My first WordPress Plugin
My first WordPress PluginMy first WordPress Plugin
My first WordPress Plugin
 
AWS モニタリングソリューションのご紹介
AWS モニタリングソリューションのご紹介AWS モニタリングソリューションのご紹介
AWS モニタリングソリューションのご紹介
 
AWSのDatabase・Analytics系サービス 概要と使いどころをざくっとおさらい
AWSのDatabase・Analytics系サービス 概要と使いどころをざくっとおさらいAWSのDatabase・Analytics系サービス 概要と使いどころをざくっとおさらい
AWSのDatabase・Analytics系サービス 概要と使いどころをざくっとおさらい
 
The ultimate dilemma of choosing container environment on AWS: ECS, EKS or Fa...
The ultimate dilemma of choosing container environment on AWS: ECS, EKS or Fa...The ultimate dilemma of choosing container environment on AWS: ECS, EKS or Fa...
The ultimate dilemma of choosing container environment on AWS: ECS, EKS or Fa...
 
Lightning Components Best Practices by Fabien Taillon
Lightning Components Best Practices by Fabien TaillonLightning Components Best Practices by Fabien Taillon
Lightning Components Best Practices by Fabien Taillon
 
Integrate drupal 8 with alexa - Rakshith
Integrate drupal 8 with alexa - RakshithIntegrate drupal 8 with alexa - Rakshith
Integrate drupal 8 with alexa - Rakshith
 
Rs Sdone
Rs SdoneRs Sdone
Rs Sdone
 
Terraform for Azure Quickstart
Terraform for Azure QuickstartTerraform for Azure Quickstart
Terraform for Azure Quickstart
 
Deploying and Managing Red Hat Enterprise Linux in Amazon Web Services
Deploying and Managing Red Hat Enterprise Linux in Amazon Web ServicesDeploying and Managing Red Hat Enterprise Linux in Amazon Web Services
Deploying and Managing Red Hat Enterprise Linux in Amazon Web Services
 
WeirdAAL (AWS Attack Library)
WeirdAAL (AWS Attack Library) WeirdAAL (AWS Attack Library)
WeirdAAL (AWS Attack Library)
 

Similaire à The Anatomy of a Seriously Sophisticated AIR Application

Be a modern developer ! #liveCoding #cloud #docker #akka #scala #amqp - at Ch...
Be a modern developer ! #liveCoding #cloud #docker #akka #scala #amqp - at Ch...Be a modern developer ! #liveCoding #cloud #docker #akka #scala #amqp - at Ch...
Be a modern developer ! #liveCoding #cloud #docker #akka #scala #amqp - at Ch...
Quentin Adam
 
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Noah Sussman
 
How to stop fingerpointing when your application is down
How to stop fingerpointing when your application is downHow to stop fingerpointing when your application is down
How to stop fingerpointing when your application is down
Compuware ASEAN
 

Similaire à The Anatomy of a Seriously Sophisticated AIR Application (20)

Fiat eco:Drive
Fiat eco:DriveFiat eco:Drive
Fiat eco:Drive
 
Be a modern developer ! #liveCoding #cloud #docker #akka #scala #amqp - at Ch...
Be a modern developer ! #liveCoding #cloud #docker #akka #scala #amqp - at Ch...Be a modern developer ! #liveCoding #cloud #docker #akka #scala #amqp - at Ch...
Be a modern developer ! #liveCoding #cloud #docker #akka #scala #amqp - at Ch...
 
Am i doing deployments right v2
Am i doing deployments right v2Am i doing deployments right v2
Am i doing deployments right v2
 
Optimizing for Change (Henrik Joreteg)
Optimizing for Change (Henrik Joreteg)Optimizing for Change (Henrik Joreteg)
Optimizing for Change (Henrik Joreteg)
 
The end of server management : hosting have to become a commodity - #devoxxPL...
The end of server management : hosting have to become a commodity - #devoxxPL...The end of server management : hosting have to become a commodity - #devoxxPL...
The end of server management : hosting have to become a commodity - #devoxxPL...
 
The End of server management - Continuous delivery meetup Paris
The End of server management  - Continuous delivery meetup ParisThe End of server management  - Continuous delivery meetup Paris
The End of server management - Continuous delivery meetup Paris
 
Flume & FluentD (ETL Comparison)
Flume & FluentD (ETL Comparison)Flume & FluentD (ETL Comparison)
Flume & FluentD (ETL Comparison)
 
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
Fast and Good: Alternate Approaches to Quality at Etsy - STPCon fall 2011
 
Starting Your DevOps Journey – Practical Tips for Ops
Starting Your DevOps Journey – Practical Tips for OpsStarting Your DevOps Journey – Practical Tips for Ops
Starting Your DevOps Journey – Practical Tips for Ops
 
The End of server management - Opening keynote Lux i/o 2016
The End of server management - Opening keynote Lux i/o 2016The End of server management - Opening keynote Lux i/o 2016
The End of server management - Opening keynote Lux i/o 2016
 
The end of server management - devoxx UK talk version
The end of server management - devoxx UK talk versionThe end of server management - devoxx UK talk version
The end of server management - devoxx UK talk version
 
Agility® Product Management for Commerce: The Simplest PIM on the Planet
Agility® Product Management for Commerce: The Simplest PIM on the PlanetAgility® Product Management for Commerce: The Simplest PIM on the Planet
Agility® Product Management for Commerce: The Simplest PIM on the Planet
 
NPR API: Create Once Publish Everywhere
NPR API: Create Once Publish EverywhereNPR API: Create Once Publish Everywhere
NPR API: Create Once Publish Everywhere
 
Splunk Data Onboarding Overview - Splunk Data Collection Architecture
Splunk Data Onboarding Overview - Splunk Data Collection ArchitectureSplunk Data Onboarding Overview - Splunk Data Collection Architecture
Splunk Data Onboarding Overview - Splunk Data Collection Architecture
 
Developing a successful big data business strategy
Developing a successful big data business strategyDeveloping a successful big data business strategy
Developing a successful big data business strategy
 
Success Factors for a Mature Microservices Implementation
Success Factors for a Mature Microservices ImplementationSuccess Factors for a Mature Microservices Implementation
Success Factors for a Mature Microservices Implementation
 
JavaOne 2015 Devops and the Darkside CON6447
JavaOne 2015 Devops and the Darkside CON6447JavaOne 2015 Devops and the Darkside CON6447
JavaOne 2015 Devops and the Darkside CON6447
 
It automation & devops - devopsdays istambul 2016
It automation & devops -  devopsdays istambul 2016It automation & devops -  devopsdays istambul 2016
It automation & devops - devopsdays istambul 2016
 
Application Security in a Container World - Akash Mahajan - BCC 2017
Application Security in a Container World - Akash Mahajan - BCC 2017Application Security in a Container World - Akash Mahajan - BCC 2017
Application Security in a Container World - Akash Mahajan - BCC 2017
 
How to stop fingerpointing when your application is down
How to stop fingerpointing when your application is downHow to stop fingerpointing when your application is down
How to stop fingerpointing when your application is down
 

Dernier

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Dernier (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

The Anatomy of a Seriously Sophisticated AIR Application

  • 1. THE ANATOMY OF A SERIOUSLY SOPHISTICATED AIR APPLICATION
  • 2. BEFORE WE GET DOWN TO BUSINESS…
  • 3. WHAT WAS OUR BRIEF FROM FIAT? BUILD A PRODUCT THAT HELPS IMPROVE YOUR DRIVING USING TELEMATIC DATA COLLECTED FROM THE CAR
  • 4. WHY IS ECO:DRIVE “SOPHISTICATED”? THE CHALLENGES CONNECTING YOUR CAR TO YOUR COMPUTER IS A NEW CONCEPT TO MOST DRIVING DATA CAN BE CONFUSING LARGE AMOUNTS OF DATA, ONCE PER SECOND OF EVERY JOURNEY
  • 5. WHY IS ECO:DRIVE “SOPHISTICATED”? THE CHALLENGES CONNECTING YOUR CAR TO YOUR COMPUTER IS A NEW CONCEPT TO MOST DRIVING DATA CAN BE CONFUSING LARGE AMOUNTS OF DATA, ONCE PER SECOND OF EVERY JOURNEY YET THE SOLUTION HAD TO BE INTUITIVE EASY TO USE RESPONSIVE
  • 6. A LITTLE BIT MORE DETAIL… BUILT USING ADOBE AIR 1.1 AND FLEX
  • 7. A LITTLE BIT MORE DETAIL… BUILT IN 4 MONTHS BY A DEVELOPMENT TEAM OF 5 BUILT USING ADOBE AIR 1.1 AND FLEX
  • 8. A LITTLE BIT MORE DETAIL… BUILT IN 4 MONTHS BY A DEVELOPMENT TEAM OF 5 CREATED USING FLEXBUILDER 3 PROFESSIONAL EDITION BUILT USING ADOBE AIR 1.1 AND FLEX
  • 9. A LITTLE BIT MORE DETAIL… BUILT IN 4 MONTHS BY A DEVELOPMENT TEAM OF 5 CREATED USING FLEXBUILDER 3 PROFESSIONAL EDITION LAUNCHED IN 3 LANGUAGES, SOON TO BE 5 BUILT USING ADOBE AIR 1.1 AND FLEX
  • 10. WHY ADOBE AIR? CROSS PLATFORM
  • 11. WHY ADOBE AIR? SMOOTH INSTALL OF THE FRAMEWORK AND APPLICATION CROSS PLATFORM
  • 12. WHY ADOBE AIR? SMOOTH INSTALL OF THE FRAMEWORK AND APPLICATION EASY AUTO-UPDATE FUNCTIONALITY CROSS PLATFORM
  • 13. WHY ADOBE AIR? SMOOTH INSTALL OF THE FRAMEWORK AND APPLICATION EASY AUTO-UPDATE FUNCTIONALITY INTERGRATED SQLITE DB CROSS PLATFORM
  • 14. WHAT DOES ECO:DRIVE LOOK LIKE INSIDE?
  • 16. THE MANDATORY BLOCK DIAGRAM USB KEY
  • 17. THE MANDATORY BLOCK DIAGRAM USB KEY ECO:INDEX WEB SERVICE HTTP COMMUNITY WEB SERVICE HTTP FUEL PRICE WEB SERVICE HTTP
  • 18. DELVING DEEPER IMPORTING DATA GRAPHING THE DATA CONTEXTUALISING THE DATA
  • 19. IMPORTING DATA: PARSING LIMITED SPACE AVAILABLE IN BLUE & ME COMPUTER MORE COMPUTING POWER AVAILABLE ON THE DESKTOP THAN IN THE CAR EASE OF PARSING WAS NOT THE FIRST PRIORITY NO BITARRAY IN ACTIONSCRIPT 3 DATA IS STORED IN A TIGHTLY PACKED BIT ARRAY
  • 20. IMPORTING DATA: WRITING DATA TO THE DATABASE THERE WERE TWO MAJOR REQUIREMENTS IMPORT HAD TO BE HIGHLY PERFORMANT USER INTERFACE HAD TO REMAIN SMOOTH AND RESPONSIVE
  • 21. IMPORTING DATA: WRITING DATA TO THE DATABASE THERE WERE TWO MAJOR REQUIREMENTS IMPORT HAD TO BE HIGHLY PERFORMANT USER INTERFACE HAD TO REMAIN SMOOTH AND RESPONSIVE THERE WERE TWO PROBLEMS USING A TIMER WAS NOT FAST ENOUGH USING “FOR” LOOPS MEANT AN UNRESPONSIVE APPLICATION
  • 22. IMPORTING DATA: WRITING DATA TO THE DATABASE THERE WERE TWO MAJOR REQUIREMENTS IMPORT HAD TO BE HIGHLY PERFORMANT USER INTERFACE HAD TO REMAIN SMOOTH AND RESPONSIVE THERE WERE TWO PROBLEMS USING A TIMER WAS NOT FAST ENOUGH USING “FOR” LOOPS MEANT AN UNRESPONSIVE APPLICATION THE SOLUTION? THE “ASYNC CHUNKER MONKEY”
  • 23. IMPORTING DATA: THE ASYNC CHUNKER WHAT? USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
  • 24. IMPORTING DATA: THE ASYNC CHUNKER WHAT? USING A TIMER USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
  • 25. IMPORTING DATA: THE ASYNC CHUNKER WHAT? USING THE ASYNC CHUNKER MONKEY USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
  • 26. IMPORTING DATA: THE ASYNC CHUNKER WHAT? MAX TIME FOR EXECUITION IS SET BY DEVELOPER USING THE ASYNC CHUNKER MONKEY USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
  • 27. IMPORTING DATA: THE ASYNC CHUNKER WHAT? MAX TIME FOR EXECUITION IS SET BY DEVELOPER USING THE ASYNC CHUNKER MONKEY USING SYNCHRONOUS “FOR” LOOP TO PROCESS EACH ITEM IN AN ARRAY
  • 28. THE PEOPLE BEHIND THE PRODUCT…
  • 29. HERE’S HOW YOU MIGHT THINK IT WORKED
  • 30. HERE’S HOW YOU MIGHT THINK IT WORKED
  • 31. HERE’S HOW YOU MIGHT THINK IT WORKED
  • 32. HERE’S HOW YOU MIGHT THINK IT WORKED
  • 33. HERE’S HOW YOU MIGHT THINK IT WORKED
  • 34. HERE’S HOW YOU MIGHT THINK IT WORKED
  • 35. HERE’S HOW YOU MIGHT THINK IT WORKED
  • 36. HERE’S HOW YOU MIGHT THINK IT WORKED
  • 37. HOW DID IT ALL WORK OUT? HERE’S HOW YOU MIGHT THINK IT WORKED
  • 38. HERE’S HOW WE ENDED UP SEEING IT…
  • 39. THE MOST TRICKY PART…
  • 41. KEEPING QUALITY HIGH PROOF OF CONCEPTS CONTINUOUS INTEGRATION USING CRUISECONTROL.NET PEER REVIEW ON EVERY CHECK-IN UNIT TESTS USING FLEXUNIT AND FLEXCOVER
  • 42. TOP TIPS AND LESSONS LEARNED
  • 43. TOP TIPS AND LESSONS LEARNED FILE.GETROOTDIRECTORIES ISN’T AS GREAT AS YOU MIGHT THINK NEVER WRITE DATA TO THE APPLICATION DIRECTORY MULTI-LINGUAL? ALWAYS GET THE USER TO CHOOSE THEIR OWN LANGUAGE USE THE VIEWSTACK CLASS CAREFULLY KEEP YOUR DATABASE ACCESS STRATEGY CONSISTENT
  • 45. CLOSING WORDS… DO PROOF OF CONCEPTS FOR ANY RISKY AND ESSENTIAL FUNCTIONALITY UNIT TEST YOUR CODE. IT HELPS PREVENT BUGS AND IMPROVES THE APPLICATION ARCHITECTURE. THINK ABOUT PERFORMANCE – ESPECIALLY IF YOU ARE PROCESSING LARGE AMOUNTS OF DATA ADOBE AIR IS A GREAT PLATFORM FOR INNOVATIVE DESKTOP APPLICATIONS.
  • 46. LINKS AND Q&A http://www.fiat.co.uk/ecoDrive - eco:Drive home page http://code.google.com/p/as3localelib/ - Locale Library http://thanksmister.com/?p=92 – Detecting Local Drives with Adobe AIR http://is.gd/7RcW - Article about Usability, Interactivity in Agile Processes Rick’s blog: http://www.pixelpod.co.uk Adam’s blog: http://blog.adamcreeger.com