Using JavaScript, jQuery and HTML5 with Cloud-Based Web Development Tools

Cloud based web development tools (such as Squarespace) are making web development easier. Their WYSIWYG editors even make simple web update accessible to non technical users. Web developers can concentrate on the more complicated, higher value added tasks, while their clients make simpler updates such as text changes and blogging.

By adding JavaScript, jQuery and HTML5 to the mix, sophisticated, cost effective websites can be developed. 

Using Concept Maps with UML Components

Concept Maps are a useful way to graphically document the relationships between the elements of a system. Not only do they assist in the system design process, but they can be used to communicate design ideas to stakeholders such as users and management. Unified Modeling Language (UML) is a more structured form of concept maps focused on Object Oriented Programming (OOP.)

We've found that combining tools and including useful graphic elements such as screen shots creates a very user friendly design tool.

Programming Languages: Java vs. C++

We're often asked about the differences between the Java and C++ programming languages and why Android apps are written most often in Java.

The table below highlights some of the differences between the languages. Basically, Java is better suited to the fundamental programming (using the SDK - Software Development Kit) for most app functions. C++ is used (with the NDK - Native Development Kit) in circumstances when high performance or easy re-use of existing C++ code is important. 

Object Oriented Programming Data Structure Decisions

When it comes to organizing data in an Object Oriented Program, there are lots of choices and decisions to make. It can at times be difficult to think through all the criteria for selecting and implementing the right data structure.

The decision table below can help work through the data design process.

Object Oriented Programming Design Patterns

OOP Design Patterns are development templates that give software designers and coders shorthand ways of thinking about and solving programming challenges.

A full explanation of OOP Design Patterns can (and does) fill entire textbooks. Understanding and remembering every aspect of every pattern can be a daunting task. Hopefully the brief descriptions below will help in remembering the function of some common Design Patterns.

Often programmers need to discuss pattern usage with software designers, managers and other programmers. Getting too lost in the details can distract from communicating the essence of a software solution. Design Patterns can help with these challenges.

Some commonly used Design Patterns are listed below. Click on the Design Pattern name for a full pattern description.

  • Adapter - Facilitates object interaction.
  • Bridge - Similar to the Adapter pattern but more robust.
  • Builder - Similar to the Factory pattern for returning objects as an output but used in cases where many variables of output object construction are needed.
  • Chain of Responsibility - Uses a sequence of processing code blocks, each of which handles a specific set of conditions before passing control to the next block.
  • Command - Used to store and use the information needed to call a method at a later time.
  • Composite - Describes that a group of objects is to be treated in the same way as a single instance of an object.
  • Decorator - Also known as a wrapper, allows behavior to be added to an individual object.
  • Facade - Provides a simplified interface to a larger body of code.
  • Factory - Creates objects as a return output.
  • Flyweight - Minimizes memory use by sharing as much data as possible with other objects.
  • Interpreter - Specifies how to evaluate sentences in a language.
  • Iterator - Used to traverse a container and access the container's elements.
  • Mediator - Defines an object the encapsulates how a set of objects interact. Instead of communicating directly, the encapsulated objects communicate through the Mediator.
  • Memento - Provides the ability to restore an object to its previous state, such as an undo via a rollback.
  • Null Object - Object with defined neutral ("null") behavior.
  • Object Pool - Set of initialized objects kept ready to use, rather than allocating and destroying them on demand. Thread Pools are a common Object Pool implementation.
  • Observer - Maintains a list of other objects and notifies them of any state change. Objects that perform Callbacks operate as an observer.
  • Prototype - Similar to the Factory pattern, creates objects based on prototypical instances.
  • Proxy - Functions as an interface to something else.
  • Singleton - Restricts the instantiation of a class to one object.
  • Strategy - Enables an algorithm's behavior to be selected at runtime.
  • Template - Defines the program skeleton of an algorithm and defers some steps to subclasses.
  • Visitor - Separates an algorithm from the objects on which it operates.

Smartphones Becoming All Touch-Screen

According to a new report from ABI Research, 97 percent of all smartphones will feature touch-screens by 2016. In 2006, only 7 percent of smartphones were touch-screen equiped.

Although it seems likely that special purpose smartphones for gaming, etc. will continue to use physical keypads, the flexibility of touch-screens is hard to beat.

 

Newly Released Smartphone and Tablet Apps Cut Through Screen Clutter

Imagine being in a hurry between meetings and needing to find a nearby restaurant for a fast lunch. The QuickClick Restaurants app can locate and map places to go with one button tap. Or realizing that you're out of cash. A single click of the ATM app shows the nearest locations.

In developing software for the QuickClick Locale series, Marketimpacts.com took an approach different from other developers. "Many apps try to be too many things to too many people" said Don Cowan, the lead QuickClick apps developer and Director of Software Engineering at Marketimpacts.com. "As a result, it can take valuable time to scan through a sequence of app screens to find what you're looking for. We made speed and ease of use the top priority in our design."

See our press release.

The Software Revolution

As software transforms industry after industry, it's becoming apparent that the world is transitioning to a software driven paradigm that won't be denied.

Manufacturing, entertainment, journalism, music ... they are just a few of the business domains that have been dramatically altered by the power of software.

Software often gives an order of magnitude or two advantage to the new businesses that fully leverage its capabilities.

Some of the effects on society are profound:

  • Radical lowering of costs.
  • Shifting of the demands of labor from the physical to the intellectual.
  • Increasing the rate of change.

What are some takeaways for businesses large and small?

  • Embrace the change ... don't fight it.
  • Try to get ahead of the curve instead of playing catch-up.
  • Develop an understanding of the latest new technologies, which are, today, things like smartphones, cloud computing and tablet computing.
  • Don't rely on yesterday's technology to carry the day. Witness the speed with which tablet computing is replacing PCs.
  • Give some of the latest technologies a try. Test them. See what they can do for you.

 

 

Smartphone Apps for Android Tablets

There is speculation that an upcoming version of the Google Android platform (possibly 3.2) may have better options for displaying apps on tablets that are sized for smartphones.

Apps would have both stretch and zoom options. Zoom would be a new mode that would simulate a smartphone display and then fill the tablet screen with it.

The purpose is to give Android tablet users greater access to Android Market apps, the majority of which are designed for smartphone screens. Since smartphones greatly outnumber tablets, this seems to us to be a great idea. Some smartphone apps incorporate a mixture of screen size optimizations. For example, our QuickClick Locales series of apps use a smartphone sized screen for user query input and mapping function that is optimized for both smartphones and tablets. 

 

How Many Smartphone App Clicks is Too Many?

At what point will the user of a smartphone app just give up and move on to the next app? It's an important question for app developers. 
 
Although it's difficult to come up with an exact answer, we can understand at least something about the factors involved and how we might improve that chances that an app user will have a satisfying, non-frustrating experience.
 

First, there are factors that are out of the control of the developer:
  
Situational Pressure.
Smartphones are generally used in a higher pressure environment than is the case with a PC. People are one the move, busy and anxious to get results as fast as possible.
 
Information Needs.
How badly the user needs the information provided by an app will be highly variable. If they're late for a meeting and need a phone number or address quickly, user tolerence for clicking through multiple screens and waiting through delays in displays will be quite low.
 
App Knowledge.
All app developers would like users to take the time to completely understand every aspect of how to use their app. This usually is not the case. Users learn only the minimum they need and want apps to respond quickly.
 
Given this challenging environment, app developers need to focus on what they can control to make an app as usable as possible:
 
Design.
Apps need to be understood quickly and easily. Navigation, layout, colors, text, images, buttons ... all the elements of design play a role in creating a good user experience.
 
Information Load.
Is the user presented with just the right amount of information necessary to get the job done? Too much or too little can lead to an unsatisfactory experience and poor app ratings.
 
Click Sequences.
Can the user get to what they need directly? Having to click through long sequences of screens can frustrate users. People are impatient. 
 
In summary, app developers need to focus on what they can control and not assume favorable conditions for those factors that are out of their control.

Smartphone App User Interface - Lessons from Websites

Apps are relatively new compared to websites.  There's a lot of hard earned knowledge about website user interfaces. It might be useful to take some lessons from websites and apply them to apps. Here are a few starters:
 
At a glance understanding.
People skim computer based interfaces, they don't read them like you would a book. It's important to get people's attention and convey meaning quickly. Use elements such as images and symbols in addition to text.
 
Obvious navigation.  
People want to know where they are as they pass through an application. Give them hints about where they are and how to move around easily.
 
Appealing graphic design (colors, placement, font,...).  
People have visceral reactions to the look and feel of what they see on a screen. You may not be able to judge a book by it's cover, but if the cover isn't appealing, the content may never be seen.
 
Important elements above the fold.  
Don't make people scroll to see critical information. Put the important elements on the first part of the screen to appear.
 
Importance of names, symbols, etc.

Naming and creating symbols for your app, tabs, sections is important as an aid in remembering where users have been and where they want to go.

 

Android for Control of Real World Objects

Google has just announced a group of hardware and software platforms for using Android tablets and other devices to control real world objects. Developers are being invited to create applications for these platforms that could control anything from lighting to heavy duty equipment. Android@Home is part of the initiative and will let Android software apps discover, connect and communicate with devices in the home. Below is a photo of the hardware controller used to interface Android with objects.

Eye Tracking and Heat Maps

Eye tracking has become a hot topic in the last few years. Eye tracking devices are used to create heat maps showing where attention is focused on display pages. A sample heat map of a Google search results is shown below:

A dominant pattern for search engine results is the "F" pattern showing the eye being drawn to the upper left and then moving down and across from there. There are, however, factors (such as the inclusion of images, graphics, and additional columns) that can significantly alter this pattern. This is shown in the sample YouTube pages below:

You can do a Google Images search of "eye tracking" to see sample heat maps. Having a basic understanding of how people focus their attention on internet sites is important for improving traffic and conversions. Heat maps of specific sites can help to further improve results.

Basic Usability Testing

Doing basic testing for website usability can often be simplified down to a series of sessions with users who spend an hour or so each being observed carrying out specific website tasks. Usability testing is often put off or ignored resulting in websites which are difficult to use and have low conversion rates. Sometimes simple fixes can have big results.

 Click here to see a video on a sample usability testing session.