Last week I gave a presentation to a local DC Meetup group on “Rapid Prototyping with PhoneGap“. The main takeaways are:
- PhoneGap is great for rapid prototyping.
- Don’t limit yourself to a prototype! PhoneGap is awesome for building real-world production applications targeting multiple platforms!
You can check out my presentation here:
Some reasons why you might want to use PhoneGap for rapid prototyping:
- It’s easy
- More people know HTML & JS, over native development
- Lower barrier of entry in mobile development
- Integrate seamlessly with HTTP services
- It can cost less & can get done faster
- Reduced developer hours + web designers can build the prototypes
- Less development effort = faster turnaround
Here are the real-world PhoneGap apps that I demonstrated:
Wikipedia Mobile – The official mobile application for wikipedia.
Halo Waypoint – Companion application to the Halo game for Xbox & Xbox Live.
Untappd – Social networking with beer.
US Census Browser – Visualizing data from the 2010 US Census
I covered techniques for making your apps feel like “apps”, not “web pages”. You can read more about these techniques and useful libraries in my recent post on Multi-Device Best Practices. Note: That post contains references to both Flex and HTML/JS/CSS tools. In this presentation I focused only on the HTML/JS/CSS tools.
I also covered techniques for data visualization. You can read about techniques for visualizing data using web standards technologies, and see serveral HTML/JS data visualization libraries from my recent post on “Data Visualization with Web Standards“.
In this presentation, I covered PhoneGap Build, a cloud-based compilation tool for PhoneGap apps, and debug.phonegap.com for remote application debugging. I also covered iWebinspector for debugging PhoneGap experiences inside of the iOS Simulator.
Let’s also not forget the real-world companies that have invested in PhoneGap/Apache Cordova, including Wikipedia, Facebook, Salesforce, IBM, and others. You can read more about these companies from my recent post “Who Uses PhoneGap“.
Basically, there are 5 general ways to visualize data using web-standards techniques – here is a brief overview with pros & cons:
You can embed images using the html <img> that have server-rendered data visualizations. This is nothing new… They are very basic, but will certainly work.
- Not interactive
- Requires online & round-trip to server
- No “WOW” factor – let’s face it, they are boring
- Example: Google Image Charts
- Can be interactive
- Hardware accelerated on some platforms
- Can work offline
- Works in newer browsers: http://caniuse.com/#search=canvas
- Rgraph – Open source charting library using HTML5 <canvas>
- “One Million Points” Scatter Plot – Let the page load, then use the mouse to click and drag regions to “drill into”. This is a live visualization that shows a scatter plot with a histogram for massive data sets by manipulating individual pixels.
- “Lil Doodle” iOS App. This is not data visualization, just shows you programmatic drawing using HTML5 Canvas.
Vector Graphics (SVG)
Vector graphics can be used to create visual content in web experiences.
- Client or Server-side rendering
- Can be static or dynamic
- Can be scripted with JS
- Can be manipulated via HTML DOM
- Works in newer browsers (but not on Android 2.x and earlier): http://caniuse.com/#search=SVG
HTML DOM Elements
Visualizations like simple bar or column charts can be created purely with HTML structures and creative use of CSS styles to control position, visual presentation, etc… You can use CSS positioning to control x/y placement, and percentage-based width/height to display relative values based upon a range of data. For example, the following bar chart/table is created purely using HTML DIV containers with CSS styles.
WebGL is on the “bleeding edge” of interactive graphics & data visualization across the web. WebGL enables hardware-accelerated 3D graphics inside the browser experience. Technically, it is not a standard, and there is varied and/or incomplete support across different browsers (http://caniuse.com/#search=webgl). There is also considerable debate whether it ever will be a standard; however there are some incredible samples out on the web worth mentioning:
Feel free to leave a comment with any questions.
I recently spoke at the 360|Flex conference in Devner, CO on “Multi-Device Best Practices”. This presentation was focused upon multi-device & multi-platform development strategies for both PhoneGap and Flex/AIR applications. Below you can view my presentation slides and source code, and a brief summary.
First, I gave an overview of mobile & multi-platform with AIR and PhoneGap. See these links for more detail on the platforms:
Next, I emphasized the differences in user experience, display density, usability, and application style/feel between different platforms and device form factors. You can read more detail on these topics here:
I also covered various libraries and techniques for making your creations feel like “native apps” instead of “web pages in a container”, and ways to make your apps look & feel “more native” for a given platform.
Details on Flex/AIR-specific tools & frameworks for native-like app experiences:
Frameworks/Libraries for HTML/Web/PhoneGap, for “app-like” experiences:
Feel free to leave a comment with any questions.