SlideShare une entreprise Scribd logo
1  sur  14
Source Compatibility Robert Cooper Extreme
Background I love crossword puzzles Fled iPhone land for Android No good crossword apps 
Shortyz Named in honor of (and with apologies to) Will Shortz @ NYT/NPR Downloads free puzzles Can download NYT subscription puzzle
1.0 Written in 2 weekends PUZ file format sucks Lots of UI issues GridView performance poor GridView/ListView have two completely different interaction models However, “Good Enough for Me.”
2.0 Laptop stolen Written in about 3 weeks of nights/weekends New UI Custom rendering Custom touch handling (ugh) Cleaner Code IO, State, Controller in separate APIs.
Life is Good In a reasonable steady state Good feedback from users Growing if small user base
Other People Got an email from Pam @ Google asking for a Wave version Got an IM from Josh @ Palm asking for a WebOS version
Hmm… “Some people when faced with a problem think, I know, I’ll use GWT…”
Initial Effort Code reuse actually made this easy. Moved model code and IO code into separate packages. Made GWT Module for original code Implemented new renderer for web Took about 5 hours to get something playable
History Repeating Play -> Render cycle painfully slow on the DOM. Re-implemented the Web version to look more like the original Android version with MVC and bind events Performance problem solved
Productivity Web version (after Android code) About 16 hours Facebook Version  About 3 hours (Still needs work) WebOS Version About 5 hours Binary IO painful iGoogle version Trivial
Productivity (cont) Wave Version Almost 40 hours Wave development is a serious PITA because you need a full deploy to make it work.  There are a lot of things they don’t tell you in the docs.
Summary Java on “Everything but the Java Platform” Tips: Manage Dependencies. Gin is totally frackingawesome. Interesting: GWT gziped is ~ same size as Android version.
Links Shortyz on Android Market shortyz.kebernet.net “Shortyz Crosswords” public Wave apps.facebook.com/shortyz

Contenu connexe

Similaire à Extreme Source Compatibility

Phase 1 Software Progress ReportCard Czar Android AppCMS.docx
Phase 1 Software Progress ReportCard Czar Android AppCMS.docxPhase 1 Software Progress ReportCard Czar Android AppCMS.docx
Phase 1 Software Progress ReportCard Czar Android AppCMS.docxrandymartin91030
 
Node.js and MongoDB from scratch, fully explained and tested
Node.js and MongoDB from scratch, fully explained and tested Node.js and MongoDB from scratch, fully explained and tested
Node.js and MongoDB from scratch, fully explained and tested John Culviner
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedWojciech Koszek
 
Full stack development in Go
Full stack development in GoFull stack development in Go
Full stack development in GoYves Junqueira
 
Galaxy grab
Galaxy grabGalaxy grab
Galaxy grabDuane
 
festival ICT 2013: Ruby, the 0.8 language you were looking for
festival ICT 2013: Ruby, the 0.8 language you were looking forfestival ICT 2013: Ruby, the 0.8 language you were looking for
festival ICT 2013: Ruby, the 0.8 language you were looking forfestival ICT 2016
 
Intel processor-powered Lenovo ThinkPad 11e Chromebook for education
Intel processor-powered Lenovo ThinkPad 11e Chromebook for educationIntel processor-powered Lenovo ThinkPad 11e Chromebook for education
Intel processor-powered Lenovo ThinkPad 11e Chromebook for educationPrincipled Technologies
 
ISS Art. How to do IT. Kotlin Multiplatform
ISS Art. How to do IT. Kotlin MultiplatformISS Art. How to do IT. Kotlin Multiplatform
ISS Art. How to do IT. Kotlin MultiplatformISS Art, LLC
 
The UX of Tomorrow: Designing for the Unknown by Jeff Feddersen
The UX of Tomorrow: Designing for the Unknown by Jeff FeddersenThe UX of Tomorrow: Designing for the Unknown by Jeff Feddersen
The UX of Tomorrow: Designing for the Unknown by Jeff FeddersenOxford Tech + UX
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5Minko3D
 
Getting Started With Android Application Development [IndicThreads Mobile Ap...
Getting Started With Android Application Development  [IndicThreads Mobile Ap...Getting Started With Android Application Development  [IndicThreads Mobile Ap...
Getting Started With Android Application Development [IndicThreads Mobile Ap...IndicThreads
 
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017   ember.js - escape the javascript fatigueNode.js meetup 17.05.2017   ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigueTobias Braner
 
Concurrency in java
Concurrency in javaConcurrency in java
Concurrency in javaSaquib Sajid
 
Real-Time with Flowdock
Real-Time with FlowdockReal-Time with Flowdock
Real-Time with FlowdockFlowdock
 
Backbone & React Together Forever
Backbone & React Together ForeverBackbone & React Together Forever
Backbone & React Together ForeverSamuel Breed
 
GPU Programming 360iDev
GPU Programming 360iDevGPU Programming 360iDev
GPU Programming 360iDevJanie Clayton
 

Similaire à Extreme Source Compatibility (20)

How it All Goes Down
How it All Goes DownHow it All Goes Down
How it All Goes Down
 
Phase 1 Software Progress ReportCard Czar Android AppCMS.docx
Phase 1 Software Progress ReportCard Czar Android AppCMS.docxPhase 1 Software Progress ReportCard Czar Android AppCMS.docx
Phase 1 Software Progress ReportCard Czar Android AppCMS.docx
 
Node.js and MongoDB from scratch, fully explained and tested
Node.js and MongoDB from scratch, fully explained and tested Node.js and MongoDB from scratch, fully explained and tested
Node.js and MongoDB from scratch, fully explained and tested
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
 
Full stack development in Go
Full stack development in GoFull stack development in Go
Full stack development in Go
 
Galaxy grab
Galaxy grabGalaxy grab
Galaxy grab
 
festival ICT 2013: Ruby, the 0.8 language you were looking for
festival ICT 2013: Ruby, the 0.8 language you were looking forfestival ICT 2013: Ruby, the 0.8 language you were looking for
festival ICT 2013: Ruby, the 0.8 language you were looking for
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
 
Bsd ss
Bsd ssBsd ss
Bsd ss
 
Intel processor-powered Lenovo ThinkPad 11e Chromebook for education
Intel processor-powered Lenovo ThinkPad 11e Chromebook for educationIntel processor-powered Lenovo ThinkPad 11e Chromebook for education
Intel processor-powered Lenovo ThinkPad 11e Chromebook for education
 
ISS Art. How to do IT. Kotlin Multiplatform
ISS Art. How to do IT. Kotlin MultiplatformISS Art. How to do IT. Kotlin Multiplatform
ISS Art. How to do IT. Kotlin Multiplatform
 
The UX of Tomorrow: Designing for the Unknown by Jeff Feddersen
The UX of Tomorrow: Designing for the Unknown by Jeff FeddersenThe UX of Tomorrow: Designing for the Unknown by Jeff Feddersen
The UX of Tomorrow: Designing for the Unknown by Jeff Feddersen
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5
 
Getting Started With Android Application Development [IndicThreads Mobile Ap...
Getting Started With Android Application Development  [IndicThreads Mobile Ap...Getting Started With Android Application Development  [IndicThreads Mobile Ap...
Getting Started With Android Application Development [IndicThreads Mobile Ap...
 
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017   ember.js - escape the javascript fatigueNode.js meetup 17.05.2017   ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
 
101002 computers
101002 computers101002 computers
101002 computers
 
Concurrency in java
Concurrency in javaConcurrency in java
Concurrency in java
 
Real-Time with Flowdock
Real-Time with FlowdockReal-Time with Flowdock
Real-Time with Flowdock
 
Backbone & React Together Forever
Backbone & React Together ForeverBackbone & React Together Forever
Backbone & React Together Forever
 
GPU Programming 360iDev
GPU Programming 360iDevGPU Programming 360iDev
GPU Programming 360iDev
 

Plus de Robert Cooper

Plus de Robert Cooper (6)

What's New in Android
What's New in AndroidWhat's New in Android
What's New in Android
 
Android 3
Android 3Android 3
Android 3
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than You
 
Guice gin
Guice ginGuice gin
Guice gin
 
Android Froyo
Android FroyoAndroid Froyo
Android Froyo
 
GWT 2 Is Smarter Than You
GWT 2 Is Smarter Than YouGWT 2 Is Smarter Than You
GWT 2 Is Smarter Than You
 

Dernier

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 

Dernier (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 

Extreme Source Compatibility

  • 2. Background I love crossword puzzles Fled iPhone land for Android No good crossword apps 
  • 3. Shortyz Named in honor of (and with apologies to) Will Shortz @ NYT/NPR Downloads free puzzles Can download NYT subscription puzzle
  • 4. 1.0 Written in 2 weekends PUZ file format sucks Lots of UI issues GridView performance poor GridView/ListView have two completely different interaction models However, “Good Enough for Me.”
  • 5. 2.0 Laptop stolen Written in about 3 weeks of nights/weekends New UI Custom rendering Custom touch handling (ugh) Cleaner Code IO, State, Controller in separate APIs.
  • 6. Life is Good In a reasonable steady state Good feedback from users Growing if small user base
  • 7. Other People Got an email from Pam @ Google asking for a Wave version Got an IM from Josh @ Palm asking for a WebOS version
  • 8. Hmm… “Some people when faced with a problem think, I know, I’ll use GWT…”
  • 9. Initial Effort Code reuse actually made this easy. Moved model code and IO code into separate packages. Made GWT Module for original code Implemented new renderer for web Took about 5 hours to get something playable
  • 10. History Repeating Play -> Render cycle painfully slow on the DOM. Re-implemented the Web version to look more like the original Android version with MVC and bind events Performance problem solved
  • 11. Productivity Web version (after Android code) About 16 hours Facebook Version About 3 hours (Still needs work) WebOS Version About 5 hours Binary IO painful iGoogle version Trivial
  • 12. Productivity (cont) Wave Version Almost 40 hours Wave development is a serious PITA because you need a full deploy to make it work. There are a lot of things they don’t tell you in the docs.
  • 13. Summary Java on “Everything but the Java Platform” Tips: Manage Dependencies. Gin is totally frackingawesome. Interesting: GWT gziped is ~ same size as Android version.
  • 14. Links Shortyz on Android Market shortyz.kebernet.net “Shortyz Crosswords” public Wave apps.facebook.com/shortyz