I’m excited to finally announce that I have embarked upon a new adventure! Today marks my first day as a MobileFirst Developer Advocate for IBM!
So, what does that mean?
It is very similar to what I was doing back at Adobe focusing on developers. I’m excited to engage with the development community around building mobile apps and leveraging cloud services to meet critical business needs. I’ll be focused on IBM’s MobileFirst platform, including Worklight – a platform for building and delivering mobile applications leveraging Apache Cordova (PhoneGap), and Bluemix – IBM’s scalable cloud computing platform, which can be used for everything from hosted services, “big data”, security, back-ends for mobile apps, Java, node.js, ruby, and much, much more… Seriously, check out everything that Bluemix has to offer.
It is my mission to help you, the developer or business decision maker be successful, and now I have access to IBM’s tools, knowledge and services to back me up!
Will I still be building apps and services?
YES – stay tuned for more info
Will I still be helping you build apps, and writing about development tools, paradigms, and best practices?
YES – it’s my mission to help you make the right decisions and be successful
Will I see you at the next development conference, hackathon, or meetup?
YES, and I can’t wait to show you everything IBM has to offer.
Will I still be flying drones?
Of course! However, I won’t be blogging about drones and creative tools quite so much. Follow me on Flickr to see images from my latest flights, and feel free to ask me questions.
I had a great run with Adobe, and am thankful for all of the opportunities while there. I worked on many amazing projects, worked with a lot of great (and very, very smart) people, and was able to continually push the envelope on both the development and creative/media sides. For which I am grateful.
I normally don’t write posts to talk about a specific product from another company, but this is the first product that I have seen which lets you do automated UI testing in PhoneGap applications, so I figured I’d share…
Automated UI testing enables you to test the GUI of your application. It allows you to make sure proper buttons or controls are displayed wherever they are supposed to be displayed, that they have the proper user interaction, and generally that your application’s user interface is functioning properly. There are numerous tools to enable automated UI testing on the desktop by recording user input and turning that user input into reproducible scripts. However on mobile devices, there aren’t as many options. You can write code to create test scripts for both iOS and Android, but writing these tests for PhoneGap applications could get challenging.
Recently, while attending the 360iDev conference, I was introduced to Telerik’s Test Studio for iOS applications. At first glance, I thought “oh, that’s cool, automated ui tests for native iOS apps”, but doubted it would work with PhoneGap apps. It turns out I was wrong. You can use it to record and automate UI tests for native, web, or hybrid iOS applications. Below is a video of it in action with the “Walkable” PhoneGap app that I recently released. You can record test scripts, and play them back at any time, and it will evaluate whether the test was a success of failure if the UI responds as it did in the original script.
Test Studio allows you to capture user input in your iOS application and play it back as a script without touching or interacting with the application yourself. There are just a few steps to get it up and running:
Download and install Test Studio application and mobile testing SDK.
Configure a testable build of your application – Note: Do not follow the “quick instructions” in the confirmation email you get when you download the SDK – it left out a step, follow these instructions instead.
Deploy your app to your device.
Launch Test Studio, and follow the UI prompts to “Record A Test”.
At any time, access and execute any existing script.
However, be forewarned, it is not seamless and error-free. I’ve noticed in testing my own applications that when executing recorded scripts, Test Studio often attempts to execute steps before my HTML DOM elements actually exist. This is a common issue in automated UI testing, especially when testing single-page dynamic HTML applications – regardless of whether they are PhoneGap or in a desktop browser. You have to be very deliberate and precise when you record your steps, and at certain points, I had to manually introduce a wait period in the script to enable enough time for my HTML DOM elements to be created. In Test Studio, there are a few ways you can do this:
Introduce a finite “wait” duration
Test to see if the HTML elements exist before continuing with script execution
You can also go back and edit/add steps to existing tests. It can be a painstaking process to record accurate UI test scripts, but can be useful for QA processes for many applications.
I am happy to announce the US Census Browser version 2.0! Back in December of 2011, I released the US Census Browser as an open source application intended to demonstrate principles for enterprise-class data visualization and applications developed with web standards. This version has some fairly substantial changes – See the video below to check out features in the latest version:
Version 2.0 of the US Census Browser has some substantial changes, including:
Completely new & redesigned UI layer, using app-UI. app-UI is an open source framework for application view-navigators that mimic native mobile applications. Using the app-UI SplitViewNavigator, the US Census Browser now supports both landscape and portrait orientations.
Switched from Google Maps to Open Street Map using OpenLayers. Users of the Census Browser maxed out my Google Maps account! That is 25,000 map loads within a 24 hour period! WOW! I switched to the free Open Street Maps solution, which doesn’t have any usage/bandwidth limitations. With this change I was also able to add interactive maps.
Updated to Twitter Bootstrap 2.0. The app is now using new UI styles and components which are now available in Twitter Bootstrap version 2.0
I’d like to take this opportunity to introduce you to a new project I’ve been working on to showcase enterprise-class data visualization in HTML-based applications. The US Census Browser is an open source application for browsing data from the 2010 US Census.
Please keep in mind that this application was designed for mobile devices. Internet Explorer in particular does not work well with the Census Browser – use at your own risk. The browser-based application has been tested and works properly in the latest versions of Chrome, Safari, Firefox, and Opera. The US Census Browser application also does not work in Android 2.x and below, due to the fact that these versions of Android do not support SVG graphics in the mobile browser.
The application is essentially a single-page web site, which asynchronously loads data from the backend upon request, and displays that data to the user. The main application file is index.html, which loads the UI and appropriate client-side scripts. The main presentation logic is applied via CSS stylesheets, and the application control is handled by the ApplicationController class, inside of application.js. The ApplicationController class handles state changes within the application and updates the UI accordingly. The main data visualization and data formatting logic is all contained within the censusVisualizer class, which the ApplicationController class uses to render content. All DOM manipulation, event handling, and AJAX requests are performed using jQuery.
The client-side runtime does not have any dependencies for access to device-specific functionality. However, PhoneGap is being used as an application container so that the application can be distributed through various mobile “app stores”.
The back-end of this application is written using ColdFusion. Yep, that’s right. I used CF. In fact, the server side is ridiculously simple. It is only a single ColdFusion Component (CFC), with three remotely exposed methods for accessing data, and relies upon CF’s built in functionality to serialize JSON. CF is incredibly powerful, and made this project very simple and quick to develop.
My recent Developer Deep Dive webinar “Visualizing Complex Enterprise Data in a Tablet World” is now available on the Adobe Enterprise Developers Portal. In this webinar, I walk through the fundamentals of a rich, enterprise-data driven mobile experience, powered by Flex, AIR, LCDS, & LCCS.
Take a look at this short clip to get a feel for what’s covered in this webinar…