Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Mobile-Web Integration
with Open Source Tools (1)
Lukhnos D. Liu
Principal, Lithoglyph Inc.
Agenda


Client Side
Server Side
Client-Side Agenda

What to put on client, what on server
Mobile app design constraints
Case study: TapExpense
Open source...
Mobile Internet is finally
there!
Ubiquitous computing for
consumers
But mobile web is not the
answer to everything...
Server-side pro’s and con’s

 Server is good for LARGE data
 But network is slower than you think
 Mobile web = just ok to...
Perspective

Mobile computers that happen can make calls
Telephony is not important
Data terminal, data presentation
Limit...
Client-side problems


 Device is limited in every aspect
 Display, memory, CPU speed
 But response is very fast
 Suitable...
Mobile app constraints


Slow CPU
Low memory: 64 MB of heap, no swap
So design you app as if you were in 1996 (seriously)
Integration considerations


 Use lightweight data structure
 XML parsing is usually a bad idea (no SOAP, e.g.!)
 Stream-a...
Wacky connections

Internet should be assumed but not taken for granted
Power management policy is a pain
3G handover
Inte...
UIRequiresPersistentWiFi   UIRequiresPersistentWiFi
                        <true/>                    <false/>


        ...
Still with us? Good.
Case Study: TapExpense

iPhone expense tracker
Requirement: Excel spreadsheet export
Data analytics
Internet strategy: “Sh...
“XLS is complicated...”
“Let’s use CSV”
“But...”
CSV is not simple at all!
 Originally: Email to user
 Common format, but tons of pain (saving, exporting)
 Usability = 0
 ...
You thought that is all...
1,000,000.00
Parlez-vous français?


 1.000.000,00
 30.4.2009:Food:1.000.000,00
 Ich spreche Deutsch, aber...
Sprechen Sie...
Schwyzerdütsch?


1‘000‘000,00
Two Provisions


Pure-text CSV: Matches user’s international settings
(language and locale)—backward compatible
XLS: Use s...
Making HTTP Requests


Everyone has her favorite wrapper on iPhone
Our favorite: LFHTTPRequest
LFHTTPRequest

Part of the ObjectiveFlickr project
http://github.com/lukhnos/objectiveflickr/
Targeting both Mac 10.4/10.5/...
Other Open Source Libs

Three20
http://github.com/joehewitt/three20
Erica Sadun’s code
http://ericasadun.com/
And more
Client-side demo
Upcoming SlideShare
Loading in …5
×

Mobile-Web Integration with Open Source Tools

2,963 views

Published on

This is the first half of the talk given by Lukhnos and Mikimoto Chuang. They talk about how to use open source tools and libraries to integrate mobile client software with server-side services. Some thoughts and best practices are given. The cast study is TapExpense, an iPhone expense tracker. Also featuring their experiences in tackling wacky wifi/3G connections and CSV/XLS formats.

The talk is given at OSDC.tw 2009 on April 19, 2009.

Published in: Technology
  • Be the first to comment

Mobile-Web Integration with Open Source Tools

  1. 1. Mobile-Web Integration with Open Source Tools (1) Lukhnos D. Liu Principal, Lithoglyph Inc.
  2. 2. Agenda Client Side Server Side
  3. 3. Client-Side Agenda What to put on client, what on server Mobile app design constraints Case study: TapExpense Open source tools you can use Demo
  4. 4. Mobile Internet is finally there!
  5. 5. Ubiquitous computing for consumers
  6. 6. But mobile web is not the answer to everything...
  7. 7. Server-side pro’s and con’s Server is good for LARGE data But network is slower than you think Mobile web = just ok to use But you don’t want to use it every day Native mobile app FTW
  8. 8. Perspective Mobile computers that happen can make calls Telephony is not important Data terminal, data presentation Limited device versus cloud
  9. 9. Client-side problems Device is limited in every aspect Display, memory, CPU speed But response is very fast Suitable code: UI, data collection, simple computation
  10. 10. Mobile app constraints Slow CPU Low memory: 64 MB of heap, no swap So design you app as if you were in 1996 (seriously)
  11. 11. Integration considerations Use lightweight data structure XML parsing is usually a bad idea (no SOAP, e.g.!) Stream-able or partially readable format is good (JSON, CSV, etc.)
  12. 12. Wacky connections Internet should be assumed but not taken for granted Power management policy is a pain 3G handover Intermittent connection Design early: Offline plan, caching policy, resume mechanism
  13. 13. UIRequiresPersistentWiFi UIRequiresPersistentWiFi <true/> <false/> Always on, but idleTimerDisalbed Always on, always wifi/3G off after 30 YES connected min 3G/wifi off when Wifi on when app idleTimerDisalbed device wants to is on, but 3G off NO even when app is when screen off on
  14. 14. Still with us? Good.
  15. 15. Case Study: TapExpense iPhone expense tracker Requirement: Excel spreadsheet export Data analytics Internet strategy: “Shoot and Forget”
  16. 16. “XLS is complicated...” “Let’s use CSV” “But...”
  17. 17. CSV is not simple at all! Originally: Email to user Common format, but tons of pain (saving, exporting) Usability = 0 No way to handle multi-line text Variants! Not all spreadsheet app is created equal Excel, Numbers, OpenOffice
  18. 18. You thought that is all... 1,000,000.00
  19. 19. Parlez-vous français? 1.000.000,00 30.4.2009:Food:1.000.000,00 Ich spreche Deutsch, aber...
  20. 20. Sprechen Sie... Schwyzerdütsch? 1‘000‘000,00
  21. 21. Two Provisions Pure-text CSV: Matches user’s international settings (language and locale)—backward compatible XLS: Use server-side solution
  22. 22. Making HTTP Requests Everyone has her favorite wrapper on iPhone Our favorite: LFHTTPRequest
  23. 23. LFHTTPRequest Part of the ObjectiveFlickr project http://github.com/lukhnos/objectiveflickr/ Targeting both Mac 10.4/10.5/[Redacted], iPhone OS 2.x/[Redacted], 32-bit, 64-bit Lightweight and robust
  24. 24. Other Open Source Libs Three20 http://github.com/joehewitt/three20 Erica Sadun’s code http://ericasadun.com/ And more
  25. 25. Client-side demo

×