We're hiring!

We're actively seeking developers and designers for our Detroit & Ann Arbor locations.

Mobile Apps

SpeedLimit: Testing Apps on Slow Connections

Recently I had switched to an iPhone on T-Mobile’s network. T-Mobile has been slowly rolling out their high-speed 3G and 4G connection to iPhones on their network. Most of my time is spent on Wi-Fi or EDGE data connection (about 500kb/s tops). It’s those times on the EDGE data that I realize something: many apps and websites are not built with slow connections in mind.

Why does it matter?

A few months back, I wrote an article about user feedback in AJAX data transfers — the need to tell the user that the system is processing behind the scenes. In many cases, when you are building applications, you use a local machine as the server, so response times can be lightning fast. When you don’t consider slower connections (even a 6mb/s DSL connection can be considered “slow”), users are left waiting.

SEO best practices point out that slow loading pages and applications increase bounce rate and decrease your conversions. A SEO study on page loads and the effects on user experience shows that the slower the load time of the site, the more people give up and close the window.

Read more on SpeedLimit: Testing Apps on Slow Connections…

Posted in Mobile Apps | Tagged | Comments closed

Optimizing for Mobile Devices with Varnish Cache

Recently, I wrote about using Varnish Cache to speed up websites. However, not all websites appear identically on all devices. For example, many web applications will deliver different content to mobile devices such as phones, tablets, screen-readers, etc. What happens when Varnish receives a request for a resource from one of these devices?

Without additional configuration, Varnish will return the only version of a resource that it has cached for a particular URL — regardless of its appropriateness for the device performing the request.

This can be problematic. For example, if a mobile phone performs the first request for a resource, the request may return specific mobile content, and Varnish will likely cache it. However, if a desktop browser subsequently performs a request for the same resource, it may receive the mobile content that Varnish has cached. This could cause mobile-specific content to appear in the desktop browser.

Read more on Optimizing for Mobile Devices with Varnish Cache…

Posted in Mobile Apps | Tagged , , | Comments closed

Getting Started with jQuery Mobile

jQuery to the rescue again! jQuery Mobile is built on jQuery and helps ease work on mobile based web applications. The framework gives a great start to a mobile site with very little effort making a custom mobile interface. The examples below are also found on github.

jQuery Mobile Basics

The files needed to build a jQuery mobile site are: jQuery, the jQuery Mobile Javascript (and the corresponding CSS), your custom css and js (as needed) and an html file. jQuery and jQuery Mobile can be loaded from their CDN links on their home pages, but in the github example, they are local. One warning, there is certain load order to use when including your files: the jQuery Mobile css and your css, jQuery itself, your custom jQuery/Javascript, then finally jQuery Mobile js. Read more on Getting Started with jQuery Mobile…

Posted in Mobile Apps | Tagged | Comments closed

PhoneGap with HAML, SCSS, and CoffeeScript

PhoneGap is an HTML application platform that runs natively on iOS. After the initial project setup, PhoneGap allows you to pretend you are just writing a web application, meaning you spend your day in HTML, CSS and javascript instead of Objective-C.

When I had the opportunity to write a PhoneGap application for a project demo, I decided to take the development process one step further and use the goodness of HAML, SCSS and CoffeeScript instead of straight HTML, CSS and javascript.

Setting up the development environment was relatively simple. I put the source code for HAML, SCSS and CoffeeScript in a similar file tree next to the www directory. I then automated the process of converting the HAML, SCSS and CoffeeScript using a file change monitor to execute conversion scripts whenever a modification occurred.

Read more on PhoneGap with HAML, SCSS, and CoffeeScript…

Posted in Mobile Apps | Tagged , , , , | Comments closed

Mobile API Requests with JSON

Most mobile applications communicate with the internet. Some draw large amounts of their content from a stream, e.g. The Daily. Games communicate scores, twitter and facebook make API calls to pull your personalized information. It is hard to find a complex, compelling application that does not send HTTP requests.

Read more on Mobile API Requests with JSON…

Posted in Mobile Apps | Tagged | Comments closed

The Cost of Building BlackBerry Apps

We have just finished two BlackBerry apps, one native and one using Rhodes Mobile. In the course of creating these apps, we have developed some processes to improve both the speed of development and the quality of the resulting product - especially when porting from Android.[1]

Read more on The Cost of Building BlackBerry Apps…

Posted in Mobile Apps | Tagged , , | Comments closed

Porting Android Code to BlackBerry

After completing an Android application, we were asked to port it to BlackBerry. The Android code follows the Presenter First design pattern; therefore, we initially assumed that we would be able to re-use all the models. However, porting even the non-UI code was surprisingly difficult: The BlackBerry JVM is based on Java ME (a limited subset of the standard Java SE); therefore,

Read more on Porting Android Code to BlackBerry…

Posted in Mobile Apps | Tagged , , , | Comments closed

Fast(er) CSS Selector Based Element Lookups in WatiN via jQuery

We’re using SpecFlow and WatiN to automate acceptance-level tests for a new ASP.NET MVC 2 web application. As we write more and more high-level system tests, we find ourselves wishing we had the ability to search our DOM using CSS selectors and other cool jQuery tricks. Eventually it dawned on us: why not actually use jQuery in the browser to find elements for us? It turns out to be pretty easy… and snappy, too.

Read more on Fast(er) CSS Selector Based Element Lookups in WatiN via jQuery…

Posted in Mobile Apps | Tagged , , , | Comments closed

Our BlackBerry Development Environment

We have been hired to port an iPhone/Android app to BlackBerry. The prospect of developing a BlackBerry app is painful for us for several reasons:

  1. The only IDE plug-in is for Eclipse. (We prefer IntelliJ.)

Read more on Our BlackBerry Development Environment…

Posted in Mobile Apps | Tagged | Comments closed

Breaking BlackBerry: A Curious Interaction between SeparatorField & FlowFieldManager

While working on a BlackBerry app, Zach and I came across an odd side-effect of adding a SeparatorField to a FlowFieldManager.

Here’s the code in question:

It looks rather innocent, but its effect is sinister. Any buttons placed before the separator will not receive user input.

Read more on Breaking BlackBerry: A Curious Interaction between SeparatorField & FlowFieldManager…

Posted in Mobile Apps | Tagged | Comments closed