SlideShare a Scribd company logo
1 of 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

More Related Content

Similar to 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
 

Similar to 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
 

More from Robert Cooper

More from 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
 

Recently uploaded

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
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
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 

Recently uploaded (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
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)
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
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
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
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
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 

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