extreme source compatibility
DESCRIPTION
The story of Shortyz. A crossword puzzle application for Android, iGoogle, Wave, Facebook, WebOS and the web.TRANSCRIPT
Source CompatibilityRobert 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 fracking awesome.
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