Friday, December 23, 2011

SEO Lesson #2: More Guayaki Yerba Mate

Yesterday we posted on a friend's company who is examining their search engine visibility. The company is called Guayaki and they sell products based on the culture of a plant named Ilex paraguariensis, commonly referred to as Yerba Mate. All the founders of Guayaki have a passion for mate but they also want to be socially responsible. They have pioneered an innovative business model that directly links their customer’s purchases to partner farming communities in their supply chain, enabling fair trade, fair wages and the ability to restore parts of the rain forests from which the Yerba plan grows.

Yesterday we explored how Google's results vastly vary based on where a search is being done from.  This is largely a baseline for understanding where the results are.  Today we will examine what course of action could be taken to elevate their relevancy for various searches.  As always, Technoracle never recommends cheating on SEO.  The rules and systems used by various search engines are very fair and have feedback mechanisms to promote relevant results.  There is no point in coming up #1 for a topic like "horses" if your website is all about golfing.  This serves no purpose and will annoy anyone unlucky enough to find your site.

Having said that, the first thing to do is to try and determine the actual search inventory that is available and what related searches might be useful.  We ran some reports on various systems and determined the following:

The term "yerba mate" has relatively low competition and there are 246,000 global searches and 8,100 local searches per month. The term "yerba" by itself has over 823,000 global searches per month while the term "mate" has 13,000,000 plus. The latter must be heavily discounted since it is a term with a plurality of meanings. People may be trying to find a mate instead of yerba.

The company itself has done well and every month, over 9,900 searches are done for Guayaki. This indicates a good brand presence yet shows us that there is a lot of upside potential.  Stated simply, being able to capitalize on close to a million new eyeballs per month on their website would be potentially lucrative.

There are also mis-spelled variants of "yerba mate" such as "yerbe mata" which are commonly used plus a third word "la" (spanish) used as an article in conjunction with the term. It is possible that capturing this traffic is something that could be of interest.

At this point we are ready to generate a report to present to Guayaki. The company is strong, has a great community and is ready to grow.  There are various techniques that can be used to build search engine traffic but the most proven way is to ensure what you are serving your website visitors is what they are looking for.  Our next step is to use some analytics to understand what the people searching for are hoping to find when they land on the website.  Google Analytics is probably the best tool in the business for this.

On a final note - Merry Christmas to those of you who celebrate it!  This will be our last post until after the holidays.  Peace and blessings and thank you for supporting our blog.

Thursday, December 22, 2011

SEO Lessons: Guayaki Yerba Mate

As part of our ongoing technical work at Technoracle, we like to work with business owners to help them understand search engine optimization (commonly referred to as “SEO”) and provide better results for them. An initial step is often to ascertain the current state however this proves problematic. To explore this problem, we will use the case study of Guayaki. Guayaki is a company using a restorative business model to help provide fair wages to everybody in their supply chain and also restore sub tropical South American rain forests. in fact, it is referred to as the the "Mata Atlantica", or Atlantic Rainforest, deemed one of the top 5 priorities for biodiversity conservation in the world by conservation international.   The Atlantic forest has been reduced to 7% of its original size.They sell products based on Yerba Mate, a substance commonly used and shared by civilizations for centuries and a common stimulant drink. The powers of Yerba Mate are very restorative and we have started consuming it while coding instead of coffee. On a personal note, it seems to be better for productivity than straight coffee or Coke/Pepsi.

Since most people curious about Yerba Mate seem to search for the term “Yerba Mate” or “Yerba Matte” (mis-spelled), they desire a good ranking and currently have it in some areas. The first step was to use our Google Adwords account to ascertain the most relevant search terms and search term volume for any given month. Google however, uses localization and profiling as factors in ranking search results. To illustrate this, we asked several of our networked associates and friends to help do a straw poll on the current rankings. From what we understand, most of them had never searched for this term before so the results were probably more accurate than someone who has already logged several searches for the term and has those searches linked to their profile. This blog post is a summary of some of the results we encountered. While not considered scientifically conclusive, these results may be of interest to others.

Google uses geographical location and Guayaki’s head office is in Sebastapol, CA, USA. Most of their business is in North America. The request was simple. We asked random associates to navigate to and search for the term “yerba mate” and note where any hosted page appears in the results. Here is a random sampling of results:

This is only a small sampling but it shows a pattern of higher results in countries where the product is sold.  We tried to search via however google redirects the browsers to  We consider ourselves tainted as google could note that we (Yerba Mate fans) have visited several times and hence elevate it in my results via any personal google home pages.  Nevertheless, we found it on page 2 in 12th spot.  This was shocking considering one of the principals and co-founders is located in British Columbia and does considerable business here.

So what does this mean? 

Simply stated, search results seen by one person are not necessarily universally shared.    The first step in SEO is to get an accurate read of where your site appears before any attempts to optimize.  This, in itself, is a difficult feat.  Google uses cookies, IP addresses and a host of other mechanisms to determine how to provide you with the most relevant search results.  If you commonly search for your own brand, it is possible it may appear higher in search results on your computer than a computer that has never searched for the same term.  Google, Yahoo and Bing have all stated this policy clearly but have not explained what that means exactly in terms of results.

What would we recommend for Guayaki?

Since the first site that appeared most commonly was Wikipedia, we found a way to link Guayaki to the Yerba Mate page in Wikipedia.  This is done is accordance with Wikipedia’s terms of service and standards.  The page itself claimed sources were required for verification so we added a footnote to show verification that Yerba Mate is in fact sold as an iced beverage in a can.  Be careful about this however and do not try to spam others with links to your page.  Some types of links are not even followed such as blogger comments.  We never advocate trying to hack the system.  The system is set up to govern itself via feedback and respecting terms of use is something we encourage all people to do.  

Having said that, there is a potential that this blog article itself may end up elevating their ranking since it contains links to their site but that is not the intent of this post. 

DISCLOSURE:  David K. from Guayaki is a personal friend.  He has not asked us to post this blog to help with SEO.  We are merely helping him as we would with any other client to understand the SEO landscape.  We have not been paid to post this article.

How does this information help you?

Before you start any SEO project, try a similar grass roots poll to understand where you currently rank and in what geographical areas your brand is ranked higher.  Match this information with your goals.  You may find this is a chicken and egg problem as business in one area may be slow due to the fact no one finds your website or brand via a search in Google, Bing or Yahoo.  If you are trying to build business, approach SEO as a regional endeavor.

If you have any follow up questions on this topic, please don’t hesitate to contact duane at Nickull dot net.  We’re always glad to help.  If you want to know more about Guayaki, check out this video.

Tuesday, December 20, 2011

Data Mapping with Inference and Feedback

We've worked with thousands of companies for most of the 1990's and early Web 2.0 era.  Every Medium to large enterprise has typically struggled with data integration projects. Every new acquisition, system or IT project creates a new integration project. To make matters worse, there are no standard crosswalks for data mapping. This problem is not only epidemic, but increasingly neglected by many enterprises. David Luckham hinted at “IT Blindness” when a company makes incredible blunders that are compounded by false beliefs, often generated by a lack of real data or the inability to process events (both simple and complex). David has developed a set of patterns for solving some of these issues (Complex Event Programming or CEP), yet the events themselves still must be minable for data that can then be integrated.

The Problem:

Data mapping has historically been a rather time consuming practice, often done manually. There are multitudes of issues with data mapping, some of which are dependent upon the context in which instance data might appear. To illustrate this point, let us assume that we could create a single data dictionary of all the terms used in business. This approach has been tried many times with various EDI and XML dialects. Defining a simple data element such as one that would denote the first name of a human being should be easy, correct? The definition itself is not the issue, it is the ability to map it automatically when encountered. The logic of context often makes this hard. Take this data element for example:

Element Name: FirstNameOfPerson 

Type: String64

Description: a string value representing the legal first name of a human being.

We could easily serialize this into an XML element as Duane. Now account for the fact that we must map this data format into a second format that has an element and semantics as follows:

Element Name: PersonFirstName 

Type: String

Description: a string value representing the legal first name of a human being.

It might be easy to figure out that in a vacuum this is pretty straight forward. The challenge comes when the aspect of “context” is added. To illustrate this issue, consider the following data structures:




While both use the same data element for the first name of a person, the semantics (or pragmatics rather) are slightly different based on the hierarchy and context. If both of these appear on the input side, they cannot be mapped to any instance of the PersonFirstName (the second example above) without contemplating the special nature each context brings. The meaning is the first name of a person but the two are not equal. One is the first name of the buyer party and the other is the first name of the seller party. Not immediately apparent is that the instance data set is now also bound to a process (procurement in this case).

The approach of manual data mapping has been around for a few decades. Automating this process is extremely difficult. A processor must be able to account for subtle differences in mapping rules based on a number of things. Even with the best schema and metadata support, exceptions and errors are likely to be encountered.

Computational Intelligence (CI) approach caught my eye the other day. We at Technoracle have studied this problem for a number of years. The CI approach combines an inference engine with a graphical user interface. As input data is encountered, the user interface guides users by uggesting optimal mapping scenarios. Unlike more traditional approaches to auto-mapping that require a significant amount of preparatory work, the inference approach semi-automates some of the work.

Disclosure:  we were contacted by an agent for Contivo to write about their system.  No consideration was paid in exchange for this blog post.  Technoracle reviews technology and does not speak for or make claims as a representative of the companies we highlight.

The approach espoused by one company in particular has caught our eye. Liaison’s Contivo ( builds reusable mappings by associating the metadata with a semantic "dictionary". The method uses an analytics model to parse incoming data, then it references that input against a dictionary that captures and stores mapping graphs. The dictionary is portable and can be leveraged by future transformation maps.

Liaison’s Contivo then establishes an integration vocabulary and thesaurus that may be fine tuned by manual methods. Contivo then leverages the vocabulary and thesaurus to automate data transformation and reconciliation tasks that are traditionally implemented using manual mapping techniques.

Figure – a snapshot of the Contivo Mapping

This approach was the basis for the long term product roadmap in XML Global Technologies, a company co-foundered in the dot com era. Their plan was use the mapping graphs built from their GoXML Transform product (now part of Xenos Group) and store these maps into a metadata Registry/Repository organized using a business ontology so they could be accessed by an entire community of users rather than one single enterprise. This approach made a lot of sense back then and makes a lot today. It also mitigates the issues of changing schemata and EDI vocabularies.

The problem has not gone away. There is a lot of great work being done my companies who can automate the mapping of integration data into known system. Using a feedback loop such as Contivo helps a system evolve over time and can facilitate a much more intelligent approach to solve this problem.

A long term architecture Contivo might consider is to use a social approach to learning via a centralized repository of mapping knowledge. Each of the users systems could continuously update and commit to a central knowledge base that uses the global trade dictionaries and various EDI and XML business dialects alongside a feedback circuit to learn the finer nuances of data translation.

We are left wondering if a standard should be developed for declaring reusable mapping graphs and if so, who should develop it. Many open data initiatives would benefit from this as would those who use the open data.

Thursday, December 15, 2011

Samsung 1, Apple 0

Victory!  Samsung's Galaxy Tab 10.1 was the subject of Apple's vexing for a long time.  At one point, Apple even had a temporary injunction against Samsung which halted sales of the tab in Australia of all places.    The good news is that according to the Android Community, an American judge has ruled in favor of Samsung and the new tablet is cleared for sale in North America.

The Android Community blog then goes on to state:

"In November a judge ruled that Samsung’s tablet might indeed violate the patents, but expressed doubt that such was a justification for granting a sales injunction. District Judge Lucy Koh made good on those statements today, saying, “”It is not clear that an injunction on Samsung’s accused devices would prevent Apple from being irreparably harmed.”  (full story at

Oh when will those in power learn this one simple lesson?  If you try to ban or censor anything, all you do is feed it more attention.  Apple in this case has probably itself to thank for the rise of this tablet's fame although Samsung was quick to taunt Apple with some very clever ads with slogans such as "The Tablet Apple Tried to Stop".  Have they learned nothing since the Sex Pistols music was banned from public airwaves in the UK in the late 1970's?  Have we not thought about the impact of the Spencer family trying to ban the Boomtown Rats "I don't like Mondays".  Pouring gasoline onto a fire is an understatement.

Samsung officials have also indicated they will bring as many units to the public market as possible.  Get them while you can!  I do hope to enjoy mine in Canada!

Thursday, December 08, 2011

App Store SEO (Continued)

Earlier we published a blog entry discussing the important emerging market of App Store SEO (read).   What we are learning is that there is a disturbing trend taking place with people who publish apps.  Many simply direct users to their apps by phrases like "Go to the Apple Store or Google Market and search for <term>".  Of a list of several dozen of these we researched, several of the searches now reveal competing apps are showing up above the vendors' application.

So why is this emerging place so important?  Simple.  Users search for applications.  If you do not rank high enough in any filter query or search, the potential end user will not find your application.  Most developers want a wide as possible implementation base of their mobile applications.  We have spent a lot of our lives working on SEO.  There are several posts on this blog about this topic.

Mobile application SEO is not only an emerging market, but will likely become a large part of an enterprises digital presence.  Once again, the rules that determine most of the "relevancy" in various mobile app marketplaces has not been made public leaving us to test and hypothesize.  Uberity has now come to understand the evolution of such systems.  So what should individuals do? Short of getting an online degree in an effort to understand this, here are some tips.

1.  Don't refer potential application users to your application with non-deterministic mechanisms like "search".  You have no control over AppStore SEO and it is a dynamic place with new apps being added every minute.  A better method would be to use absolute mechanisms to resolve directly to your app such as QR codes or a URI.

2. If you are trying to get a higher ranking in either the AppStore or the Google Android Market, do some research to find out what terms people are actually searching for that are relevant to your application.  For example, if you have a financial stock market monitoring application, you might find that people are searching for terms like "Dow Jones", NYSE, Stock Market and more.

3.  Use the terms from your research in your applications title and description.  Some of these words are used for building a relevancy index for mobile applications.

4. Divide and conquer.  Simply put, use your existing web presence to augment the mobile app visibility by creating links to it from your blog, website or other presence.  Our initial research has shown some promising trends.

5. Don't use punctuation marks in your app title.  This is valuable real estate and most are ignored by the search utilities.  For example, searching for a "*" reveals no applications (*&so=1&c=apps) while searching for either "!" or "+" reveal a bunch of Google applications (

6. Ensure you categorize your mobile application properly.  Misclassifying a game as a business app would confuse people.

If you are reading this and want to know more about what we are doing, please contact us at info at uberity dot com or by visiting our website at

Thursday, December 01, 2011

I want to thank everyone in all my communities and networks for the huge outpouring of support and well wishes.  I am once again humbled to realize I am a truly blessed individual and have great support and friends.  My mood every day is less and less complacent, a trait I cannot stand.  Working at a large company too long breeds complacency and bureaucratic tendencies.  These are rapidly fading as our new venture starts to shape up.  Invention is the mother of all genius and intuitive improvisation is the key to that genius (the latter part applies to the Richard Dean Anderson in all of us).

Many of you have asked me what I am doing next or offered me jobs.  I appreciate that and the thought of entering into another job is horrifying to me.  I worked eight years at a big company, learned a lot, and have to digest the good, the band and the truly ugly.   Adobe has been a very important role in my life and will continue to be a company I work with.  My colleagues on the Evangelism team are all great individuals and I'm sure we'll cross paths again, even if I am hopeless at video games.  I honestly wish all of them the most in terms of happiness and fulfilment.

So what is next?  As the blues brothers did, so has Yellow Dragon Software.  We are "Getting the band back together" to work on some game changing services and software.  The new company, aptly named Überity, is operating in stealth mode right now.  A lot of you have requested information and we honestly are in stealth mode right now.  We cannot divulge anything publicly however if you wish to be amongst the first to know what we are doing, you can sign up now at and request to be placed on the list.

Why are we doing this?  Simple.  Doing what you like to do to earn a living is coolest thing an individual can have.  Me, a former professional mountain biker, professional musician and tech guy understands this better now that I did a decade ago.  We LOVE innovation and solving complex problems.  We love delivering value to society.  We love doing what we love doing.  Our work has to be fun.  How cool would that be?  This is why Überity exists.

According to the urban dictionary:

The adjective form of the adverb, "uber." Used to describe nouns that are "uber cool," without using the phrase "uber cool" and sounding like a lil babe. Uberious has also been known to be used, as well as the noun form, "uberity."
Dude I totes love that club it was uberian.
To us, doing what we love for a living is about as cool as it gets.

Monday, November 28, 2011

Open Data Initiatives - Growth or Failure?

One of the key areas of growth I have been watching is the birth of the open data movements.  The Open Data Foundation is an important group who's mandate includes helping many agencies migrate to an open data architecture.  (Disclosure: I sit on the Advisory Board). As a standards guy for more than a decade, I find their mandate admirable:

"The Open Data Foundation is committed to using and contributing to international standards and is a project- and results-focussed organisation. We believe in using open standards to deliver measurable benefits in solving business problems in the collection, production, and dissemination of statistics. The aim is use and integrate these standards in a coherent and consistent way, to develop tools and techniques to make them easy to use, and thereby work towards a universal and harmonised statistical architecture."

As noble as it sounds, the devil is often in the details.  I have a meeting later today with David Eaves, an Open Data guru who has worked with many governments including the Government of British Columbia, Vancouver City Council (as championed by Andrea Reimer) and even at the national level.  The gist of the work is that if we, as taxpayers, are footing the bill to create this data, shouldn't we be able to use it to make informed decisions?  The answer to me is an overwhelming yes.  So what about the details then?

If you take a look at the data publishing done my most agencies, it is often in mixed standards (flattened PDF's, Spreadsheets, Custom CSV (both text and binary), XML and more.  Some o these format are easy to work with but trying to parse a spreadsheet with a non-deterministic style to it is a daunting task.

I recently took on such work for a proof of concept for the government of British Columbia.  I worked with some CSV data from this stie and created a mobile application that runs on iOS, Android and BlackBerry Tablet.

One of the things that jumps right out is that open data needs a specialized set of Message Exchange Patterns and the published data has to be deterministic, available in many formats (like JSON/XML) and that callback and notification support is required in the event the data changes.  As an example, this data is published as static data.  As soon as I use it by embedding it, it could be obsolete if the original copy changes.

Another issue is that spreadsheets are not deterministic.  If you have a spreadsheet and output CSV such as this:

Duane, Nickull, Human, Vancouver
Bill, Gates, Human, Seattle

This is an annotation.  No one knows how to account for this if it changes nor how many lines it takes.  Sometimes, naturally occurring commas can also be inside an annotation.  OMG - what can be done?

Second, Set, Of, Data
Third, Set, Of, Data

This is an annotation.  No one knows how to account for this if it changes nor how many lines it takes.  Sometimes, naturally occurring commas can also be inside an annotation.  OMG - what can be done?

Second, Set, Of, Data
Third, Set, Of, Data

it can be major headaches for those trying to parse the data.  XML is far better yet this XML has issues:

These are relatively small data sets too.  Imagine large data sets being requested by mobile devices?

What is required in this industry is a new type of data server that can address some of these problems.  Ideas are rolling in my head already.

Thursday, November 24, 2011

Goodbye Adobe - We had Fun

As many of you have heard, I am no longer with Adobe Systems as a Sr. Technical Evangelist.  While on the 3rd day of my vacation in Mexico, I got the call with the explanation that Adobe is doing a major refocus and as part of that, many of us "enterprise" types are no longer required. "Überflussig" I guess is the correct German word for the situation.    Keep in mind that I now speak as an individual, not as an Adobe employee.

I missed most of the official story due to the timing of my vacation but caught up with a few news outlets to get the rationale. Techworld News reported the following:

"In order to drive increased Digital Marketing bookings, which are recognized as recurring revenue, the company will reduce its investment, and expected licence revenue, in certain enterprise solution product lines," it said in a statement.
Its enterprise products include Adobe Connect and Adobe LiveCycle, as well as web content management software it acquired last year when it bought Day Software."
On top of this, another statement from Infoworld confirmed that Adobe has indeed thrown in the towel on Flash for mobile browsers. The headline reads "Adobe ends mobile Flash Player, reveals enterprise pullback" and subtext reveals a focus on AIR and HTML5 for mobile.

Confused?  I guess being known as the enterprisey guy for so long has now sealed my fate.   Although there was a minor shock as I got this news just a week after finding out that my Adobe MAX AIR Mobile Code Camp (one of the areas of major focus for Adobe) scored an all time high for the AIR track of 4.96/5 with over 70 responses.  My Flex Mobile Code camp also scored the same (4.96/5). This makes me a MAX Master for the second year in a row although I somehow doubt I will be there for the next MAX.

Nevertheless, the words I once heard from friend and fellow mountain bike racer Alison Sydor rang in my head.  Any time you have been doing something for longer than five years, it is time to re-evaluate and re-think.   Perhaps it is time to move on to a new opportunity.  I loved working at Adobe and appreciated everything I learned there.  The people are great, awesome company and the next generation of tools are things I will be working with.   It is too easy though to become complacent if you stagnate for too long a time.

I also want to thank the Evangelism Team publicly for working through a lot of hard challenges and say it was truly amazing.  Adobe - thank you and best of luck!!

So what is next?  Can't tell you but watch this space for a new announcement on Uberity!

Sunday, November 20, 2011

Adobe Continues Its Move into Online Advertising

Adobe announced this past week the acquisition of Auditide Inc., a provider of video advertising technology, in its third advertising industry purchase in the last couple years.

The purchase reflects both Adobe’s interest in branching into the industry and the increasing sophistication of online advertising in the first place. During the early years of widespread Internet use, online advertisements were generally basic and unrefined compared to advertisements found in print and television media. Internet ads, often displayed in the form of blinking banners, unrelated gimmicks, and direct textual appeals, represented a crude and fast-growing business – one that grew rapidly alongside the web but displayed little tendency for innovation. As hosting companies evolved to offer services like Microsoft Exchange and Sharepoint Hosting, many marketers used these platforms as the basis of more advanced and holistic adverising. 

These ads still proliferate online these days, but site managers and developers more and more often look to create ads that are more professional, unobtrusive, and better targeted towards an intended audience. Businesses can create these targeted ads by tracking information about a person’s browsing habits, and the ads can then be easily disseminated through services such as Google’s AdSense. If an Internet user spends a lot of time searching Google for old high school friends, for example, they may soon thereafter see an ad for or These ads now more likely mirror advertisements made through other media channels in both content and construction.

More recently, online advertisers have turned their focus to newer frontiers. Prime among them are advertisements inserted into internet video. With people increasingly watching not just short clips but also full-length movies and television shows online, internet video advertising is an increasingly specialized and lucrative business.

Which brings us to Adobe’s recent purchase of Auditude. Auditude, which has raised funding from a variety of venture capitalist firms, provides a service for putting ads into online videos and works with publishers to create a standardized advertising approach across various video types. The company will be bringing its clients, software, and expertise into Adobe’s fold, which promises to quickly spur Adobe’s quest to enter and excel in the online advertising industry.

Adobe’s intentions to branch into advertising are nothing new. Over the past couple years the company has acquired several businesses to help achieve this goal, most notably Omniture in 2009 and Demdex, a business that manages audience data, earlier this year. The purchase of Auditude was only the most recent development in this quest.

In a statement released by Adobe, the company said that its technology fits well with Auditude’s advertising platform, which it will integrate with the Adobe Digital Marketing Suite. While the terms of the sale were not disclosed, the deal has an estimated value of about $120 million.

In conjunction with the Auditude acquisition, Adobe also announced the launch of a service it calls Project Adthenticate, which will use IAB’s Rich Media Creative Guidelines to test and optimize online advertisements. The service, the company hopes, will draw clients to its burgeoning ad business and make it a leader in more sophisticated marketing technologies, such as those behind the growing use of interactive ads.

It is yet to be determined whether Abode will become one of the leaders in the booming online advertising market, especially in the realm of video ads. But with its recent moves and acquisitions, there is little doubt that it is moving in the right direction.

Tuesday, November 01, 2011

Adobe Edge - My First JQuery/HTML5 Application

So I downloaded Adobe Edge a few days ago and installed it yesterday.  Within ten minutes I was able to create a simple animation with almost no coding.  Adobe Edge Preview 3 literally blew us away in the first few minutes by allowing the creation of JQuery and HTML/CSS animations using a WYSIWYG editor environment.

To see this again, just hit "reload".  Note that the JavaScript files are located on a remote server.  This could result in a slower loading.  The total size of all files to build the animation above is only 191 KB.  The source code for this is clean, elegant and nicely formatted.

The Edge Preview release APIs are also documented online at  I feel like I need a good project now to fully test Edge in a production environment.  Any ideas?

Monday, October 31, 2011

App Store SEO

I've been toying around with mobile application SEO for some time now and doing some structured research.  The field is focused on the study of how applications are sorted and ranked when a generic search term is utilized within a mobile application marketplace.  I believe the field of app store SEO will be a large area of focus for developers in the years to come.  The practice of optimizing mobile application listings within the dominant application stores in addition to the search engines will be an essential survival skill.   Basically, if your application is not found, it will not be installed and used.

Here is a use case.  I built an application called Magic Screen Pro.  It is a drawing application yet when I search on "drawing", my application does not show up in the first 100 search results.

There are currently only a handful of dominant mobile application stores such as Apple's App Store, the Google Android Market and BlackBerry's App World.   Additionally, to add to the complexity of SEO for Mobile applications, many app stores exist with variants of the major app stores and are  filtered by criteria such as ratings, downloads, languages, countries, and paid vs. free apps.  In a coming series of articles, I will build off previous SEO articles and write about some of my preliminary findings.

One of the first things to note is that the models used by Apple, Google, and RIM all seem to have both similarities and major differences.  Unlike web searches, app store results are presented as a combination of filter query and rankings algorithms.  The filters have several normalized components such as "most popular" and "price".  The problem seems to arise when a generic mobile application is sought via the search tool in an app store.  For example, searching on Google's Android Market for "Stock Market" results in over 1,000 results on the first set of results (over 21,000 in total as of the date of this post -  The results are ordered the same whether you search from the Google Market application itself vs. a web search.

This similarity also appears within the Apple App Store.

So how do the results get ranked?  Let's look at Google first.  The Android Market uses three specific filters - price, safe search (presumably to ward off adult content), and a "sort by" filter.  The latter has "relevance" selected as default.  They are shown below.

The "Sort by Relevance" is the key filter to understand.  The exact mechanism by which it works is private, similar to Apple's App Store.  So how does Google determine "relevance"? At first I had assumed it was the size of the install base however this turned out to be a dead end.  In fact, at a meta level, the first five results are not correct.  Fox Financial News has the first application.  I find it hard to believe it is the most relevant for the term "Stock Market".  The second highest ranked app is actually a link to the "App Brain Market".  When a user clicks through to and looks, there is no mention either in visible text or source code of the search term "stock market".  The third result is by Snapworks Technologies and has an install base of between 100,000 to 500,000.

By Google's own admission, the following criteria is available to search for apps:

Featured: great apps hand-picked by the Android Market team
Top Free: popular free apps of all time
Top New Free: popular free apps less than 30 days old
Top Paid: popular paid apps of all time
Top New Paid: popular paid apps less than 30 days old
Top Grossing: applications and games generating the most revenue, including app purchases and in-app payments
Trending Apps: apps showing a hockey stick growth in installs in the last 24 hours
Editors' Choice Apps: Some of the very best apps available for Android, chosen by the Android Market team
Top Developer: Some of the very best developers on Android Market, chosen by the Android Market team

On top of this, some variants of Android markets allow users to filter results based on the version of Android.  There are some additional criteria for allowing applications to be found.

Priced applications availability: Priced apps are only available to buyers in these countries. If you are not in a buyer-supported country, you will be unable to view priced applications.

Location: You may only view the version of Market for your country. For example, UK users may only view the UK version of Android Market from their devices. If a developer has not targeted his app to your home country, you may be unable to view it.

Mobile service provider: In addition to targeting for location, a developer may also target their application to specific mobile service providers. If a developer is not targeting your mobile service provider, you will not be able to view the application.

Note that Google declares that no application may appear in a top spot as a result of paying to be featured.  Could it be that they intend to let the market dynamically choose the top results as is done with normal search engine results?  I believe that this is in fact the case.  The pattern is very simple - the first search result page contains code that tracks which applications users select.  The system itself is not perfect and will need to be augmented with ontological classifications, however it is the only logical path to take.

So what works?  For starters, the title of the application seems to be worth its weight in gold.  Recall the earlier example of my Magic Screen Pro application not showing up for the term "drawing".  When I search for "Magic Screen", it appears in the #7 position out of 805 applications.

Google also seems to track the clicks on a search result, hence the more people that click through on each app counts as votes towards raising the ranking in the overall application store.

What seems to not affect mobile application SEO?  I have found that the choice of technologies used to build an applications seem to be irrelevant.  Even in the App Store where one could suspect that Apple might be prejudiced against applications built using Adobe Flash Builder tooling, it seems to make no difference.

What needs to be researched more?  I plan on conducting further research into the exact mechanisms used including external links, links from other mobile applications, keyword usage in app descriptions, and more.  This aspect of technology is relatively new and requires proper research to help developers understand the basics.  Stay tuned for more as information becomes available.

Sunday, October 30, 2011

Adobe Edge Explained

Adobe's push into HTML5 has been around for a long time.  On top of participating in the actual standards development effort to move the web forward, Adobe has been building some of the first major implementations of HTML5 authoring tools.  Given the adoption of any technology is inversely related to the complexity to use it, Adobe Edge represents a great potential for people to author complex HTML5/JQuery/CSS and AJAX applications.

This blog explains the recent changes of the newer release and some great tips on how to use it.  As a former standards guy, I love this direction!

Don't take my word for it.  Try it for free by downloading it here:

Tuesday, October 18, 2011

Very Cool AIR Mobile Application

Burhan Bozkurt has built a mobile IM and Video Chat application with Adobe AIR.
The name of the application is B-Messenger.  Thanks to AIR 3, both Android and iOS versions are very stable and functional now.

iOS version iTunes links:

Android version Android Market links:

Monday, October 17, 2011

Silicon Valley Code Camp Materials

The 2011 Silicon Valley Code Camp rocked!  Peter and the other organizers have really put on a first class event and it is great to watch it grow year over year.  The high point of this event is that it is all free and covers so much disparate technology.  I plan to be there next year.

For those who attended my sessions, here are the files I promised.

1. Customer Experience Management (CEM) for Architects - this is a look at an emerging architectural discipline surrounding multi-channel user experience.  The key relationships between running a successful enterprise and having a good user experience over disparate channels are discussed. - PPT format (18 MB)

2. Hands on Mobile Development using Flash Builder for iOS, Android and BlackBerry Tablet OS - during this course you will learn how to set up your development environment, architect and build a mobile application, use arrays, switch-case statements, while loops, data binding, remote data handling, Accelerometer access, Camera and Microphone access, GPS Receiver and all basic gestures.  Anyone can take this course with a little XML syntax knowledge and basic programming experience. - ZIP archive of source code, icons, preparation guide and courseware


Saturday, October 08, 2011

Very Cool SAP & Adobe Train Race Event

My colleague Doug Massa is organizing a three-day pre-SAP TECHED training and contest designed to help you develop an enterprise application based on the SAP NetWeaver Gateway platform and related SAP partner technologies. The SAP Train Race will start in Paris with a one day, immersive training event focused on SAP NetWeaver Gateway and Adobe technologies . After the training teams will have the opportunity to get hands-on with the technology with the help of SMEs from SAP and partners, before joining us for a ride on the Elipsos Train Hotel to the SAP TECHED conference in Madrid. On the train, teams will develop an enterprise app using NetWeaver Gateway and Adobe Flash Builder. On the train will be SAP and Adobe resources to help with design and implementation questions and offer best practices for Gateway and Flash Builder, which includes FAQ and registration information.

Who Should Participate:

We are looking to have four Adobe teams with 2-4 people per team. The overall team should have working experience with SAP ABAP and be comfortable with Flash Builder 4.5. Ideally teams are attending Tech Ed Madrid. There is no cost for this event but it is encouraged for people attending Tech Ed Madrid to participate.

Sign Up Deadline: We would like to have all teams registered by Oct. 11th.

More information:
SDN (SAP Developer Network) posting:
SAP Train Race site:

Gateway Beta Program: If anyone wants to be part of our pre-release program please send Doug Massa an email ( Developers interested should be familiar with SAP and comfortable using Flash Builder.

Thursday, September 29, 2011

Google Android Development with Flash Builder - Preparation Guide

This is the third in a series of articles explaining how to set up your development environment to prepare for attending my Adobe MAX preconference hands-on code camp.  The previous articles covered setting up Flash Builder and devices for iOS Application Development and BlackBerry Tablet OS development with Adobe Flash Builder.

In this post, you will learn how to set up Flash Builder and your Google Android device (running Android 2.2 or later) to get ready for development.

1.  The first step is to install Adobe AIR on your device if you have not already done so.  Simply visit the Android Market on your device, search for Adobe AIR, and complete the free install.  Here's a link:

2.  Next, you need to enable USB debugging on your device.  From the Home screen, tap Settings, and then select Applications > Development. Enable the USB debugging option.  If there is an option to stay awake while charging, enable that too.  NOTE:  This cannot be set while your phone is tethered to your computer.  Unplug the mini-usb cable before setting this.

3. If you're running Windows, you'll need to set up a USB device driver for your device.  For more information on this, see Connect Google Android Devices.   Depending on which version of Windows you're running and what Android device you have, the device driver set up can take some time.

This AdobeTV video by Platform Evangelist Bhakti Pingale walks through the setup steps for a Samsung Galaxy Tab:

4.  Plug your phone into your computer and open Adobe Flash Builder 4.5 or later.

5. Choose New > Flex Mobile Project and give your application a name.  Ensure that the defaults are selected as shown below.

6. Click Next and ensure that under Mobile Settings the Google Android checkbox is checked.  If you are only developing for this one platform, deselect the others.   Click the Permissions tab and ensure you have the appropriate permissions selected for each item you want to use.  For example, if your  app needs to use the Internet and access the camera on a Google Android device, you must select the permissions as shown below.

7. If you are building for both Tablet and smart phones, your application will have to be scaled for different screen densities and sizes.  I usually select the Scale Up From 160 dpi checkbox.  Click Finish.

8. Build your application.  If you want to see how easy this is, open the file created under the Views package, switch to Design view, and add a button.  Double-click the button to change the name to something unique (like "Hello Technoracle").  If you are looking for some easy tutorials for mobile application development, please download the course from

9. Once your application is complete, you may wish to release it to the Google Market.  To do this, you first need to make a proper certificate.  This process is described in this blog post on generating a P12 certificate for the Google Market using the Adobe AIR SDK.

10. When your application is complete, choose File > Export.  In the dialog box that appears, select Flash Builder > Release Build and click Next.

11. Ensure that the correct project is selected in the next screen along with the proper path location at which you wish to place your APK file.  APK files are the install packages for Google Android.  Also ensure that the Signed Packages For Each Platform setting is checked and click Next.

12. A screen will appear asking you for the location of the certificate and password that you created in step 9 above.  Fill these in and click on the deployment header and ensure that Install And Launch Application on Any Connect Devices is checked.  Make sure your Android device is connected and click Finish.

That is it!  Your application will compile into an *.APK file and install itself on your Google Android device.  If your application was built with a simple button it will appear and run as shown below.

Your application can be placed in the Google Market by creating an account and following the instructions at

Tuesday, September 20, 2011

iOS Development and Programming with Flash Builder - Preparation Guide

Many people have wanted to get into iOS development to build applications for iPad, iPhone, and iPods.  Developing in Objective C is one option but this would require you to have different projects if you also wanted to create mobile applications for Android and other operating systems.  With Adobe Flash Builder 4.5.1, you can write a code base once and compile it for iOS, Android, Desktop, Adobe AIR and BlackBerry Tablet OS without substantial modifications.  This is the second in a series of articles explaining how to set up your development environment.  The previous article was for BlackBerry Tablet OS development with Flash Builder.

In this post, you will learn how to generate a digital certificate and a provisioning file, both required to install and run a mobile application on an iOS device.  If you're to attending my Adobe MAX preconference hands-on code camp and you plan on using your iOS device, you'll need the certificate and the provisioning file before you arrive.

The instructions below are geared towards Mac OS.  If you're developing on Windows or if you run into problems with the Apple Development Provisioning Assistant I recommend following the steps in Holly Schinsky's thorough guide.

1.    Navigate to the Apple developer center and apply for an account.  This will cost approximately $99 and may take up to two business days.  The URL is

The next step is to obtain a Development Certificate. (Again the steps below are for Mac only.  If you're on Windows you'll need to use OpenSSL or something similar.)

 2.   To generate a Certificate Signing Request (CSR) with a public key, start by opening  your Applications folder, then open the Utilities folder and launch Keychain Access.

3.    Choose Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority.

4.    In the Certificate Information window, enter or select the following information:
  • In the User Email Address field, type your email address
  • In the Common Name field, type your name
  • In the Request is group, select the Saved To Disk option
Click Continue.


5.    The Certificate Assistant saves a Certificate Signing Request (CSR) file to your Desktop.  I use a folder in the Flash Builder workspace named Apple with two subfolders, CSRs and Provisioning.
The public/private key pair will be generated when you create the Certificate Signing Request (CSR) if you use the Key Chain Assistant to create the CSR.
6.    Submit the CSR through the Provisioning Portal at
After logging into the iOS Dev Center, click iOS Provisioning Portal.

7.    Click the Certificates link on the top left hand side.

 8.    Click the Development tab. 

Note: To deploy an application to a device, you need a development certificate. To deploy the application to the Apple App Store, you need a distribution certificate.  For the purposes of this session, you can use a development certificate.

9.    Click Request Certificate, and then upload the certificate request by choosing the CSR file and clicking Submit.

When the status on your certificate request is "Issued", you can move on to getting a provisioning file.

 10.  Click the Home link on the top left hand side to return to the iOS Provisioning Portal's main page.

 11.  Click Launch Assistant to start the Development Provisioning Assistant.

  12. The assistant will launch and provide an overview of the steps required to create a provisioning profile. Click Continue.
13.    When the Assistant asks you for the App ID Description, type MAX2011 and click Continue. 

  14.    Specify the device you are going to use.  (If you have previously set up a device, you can select it from a drop down list.)  

Type a description of your device (for example, John Smith iPad) and type its Unique Device ID.

Apple provides the following guidance for locating your Unique Device ID:
To locate your UDID, connect your device to your Mac and open Xcode. Navigate to the "Window" drop down menu and select "Organizer". The 40 character string in the Identifier field is your device's UDID. Copy and paste this string into the field above.

 Click Continue.
 15.    You will be prompted for a certificate.  The certificate you created earlier should be visible.  Click Continue.

 16.    On the next screen, type a Profile Description (for example, MAX2011) and then click Generate.


17.    This will generate a provisioning file named something like MAX2011.mobileprovision. Download it and save it under your Flash Builder workspace.  For convenience, I save mine under a folder to hold all Apple iOS related assets used by multiple applications.

18.  As a final step, you'll want to convert your development certificate to a P12 certificate file.  See Converting a developer certificate into a P12 file for detailed instructions on generating this file on Mac OS and Windows.

That's have finished the preparations for your iOS device and Flash Builder.

To build an iOS app in Flash Builder you'll need:

  • Your iOS development certificate in P12 format
  • Your Application ID to insert in the application descriptor XML file
  • Your developer provisioning profile

If you have any problems with the steps, email me at dnickull at adobe dot com. 

Wednesday, September 14, 2011

BlackBerry Tablet Development with Flash Builder 4.5.1

If you're attending the Adobe MAX preconference hands-on code camp that Garth Braithwaite and I will be delivering, you'll need to do some preparation in advance.

In this post, I outline the steps for BlackBerry Tablet preparation, which should be done well in advance if you want to run the code-camp application on the device.

Below is a depiction of the steps required. 

Figure courtesy of Research in Motion.

 0.  Request BlackBerry code signing keys, and obtain RDK and PBDT CSJ files from BlackBerry at According to RIM, it may take up to two hours to receive the keys in  via email. (You may want to leave a bit of leeway here, mine took about three hours to arrive.)

1.       Once the emails arrive, save both of them to your local file system. For convenience, I set up a folder inside my Flash Builder 4.5.1 workspace named BlackBerryDev and saved both of the CSJ files to that folder.


  Note: If you want to know what these files are, check out the additional documentation at this URL:

Basically the file with the PBDT is a PlayBook Debugging Tool.  The RDK one is not easy to find information about.

2.       Start Flash Builder 4.5.1.  

3.       Choose Flash Builder > Preferences (or Window > Preferences) to open the Preferences dialog box.

 4.      In the Preferences dialog box, select Flash Builder > Target   
   Platforms > BlackBerry Tablet OS as shown below.


5.    Click the "download and install the SDK" link.

6.    When you click the link, your default browser will open and load the page at . Click the "BlackBerry Tablet OS for Adobe AIR" link in the bottom left.

7.    Then click either Download BlackBerry Tablet OS SDK for AIR for Windows or Download BlackBerry Tablet OS SDK for AIR for Mac.


8.    Shut down Flash Builder during the next few steps.

9.    When the download is finished, click the installer and install the SDK.  There are several steps to pay close attention to.
10.    When asked if you want to integrate with Flash Builder, select Yes as shown below.

 In the next step you will be asked where Flash Builder is installed.  By default, this will be /Applications/Adobe Flash Builder X.X (on OS X) and c:\Program Files\Adobe\Adobe Flash Builder (on Windows).  DO NOT confuse this with the location of the current workspace used by Flash Builder.


11.    Next you will be prompted for a location to install the BlackBerry SDK.  As with the CSJ files above, I chose to use the folder BlackBerryDev under the Flash Builder workspace in order to keep all assets in one place.

12.    Click Next, and then click Install. Before the install completes you may see a message notifying you that you'll need to upgrade the SDK plug-in.  The steps for doing this are as listed in step 13a below.

13.    You should see the final screen indicating success.  (If anything went wrong, please consult the Research In Motion (RIM) developer site.)  Click Done.

13a.  If you were instructed to upgrade the SDK plug-in after installation completed, then follow the steps you were given on the screen, which I've summarized below.  NOTE: Make sure you run Flash Builder as administrator when performing these steps:

1. In Adobe Flash Builder, choose Help > Install New Software.
2. In the Available Software section, click Add.
3. In the Add Repository section, click Local, navigate to <BlackBerry_Tablet_OS_SDK_Install_Directory>/update_site_for_FB and click OK.

4. Back in the Available Software section, select BlackBerry Tablet OS Support, and click Next.

14.    Re-open Flash Builder, open the Preferences dialog box, and again select Flash Builder > Target Platforms > BlackBerry Tablet OS. 

15.    Click the SDK Path Browse button and navigate to the folder in which  you just installed the BlackBerry Tablet SDK.  Select that folder and click Save.


16.    Click OK to close the dialog box.

17.    Open the Preferences dialog box once more.

18.    Select Flash Builder > Target Platforms > BlackBerry Tablet OS > Signing and click Register.


19.    To register with the RIM Signing Authority, you must provide the following information:


RDK CSJ Path:        Specify where you installed this file
PBDT CSJ Path:      Specify where you installed this file
CSJ Pin:                  Type the PIN you used when you registered to receive the CSJ  files on the BlackBerry Website.
CSK Password:       Type a password.
Confirm CSK Password:    Retype it.

Also, select the Save Password option.  If you see an option labeled Automatically Generate Development Certificate, select that as well.

20.    Click OK once you have entered this information. Flash Builder will register with RIM.

21.    You are now ready to create a certificate.  Back in the Preferences dialog box, click Create Certificate.

22.    In the Create Developer Certificate dialog box, fill in the required information.


Certificate Path: This is the path you want to store the new certificate in.  Once again, I chose to use the <Flash_Builder_Workspace>/BlackBerryDev/ folder, but I added a new subdirectory named Certs to store the certificate.  I like to keep all the BlackBerry assets in a single location.

Author:  For some reason, this setting seems to work best with no spaces.  Use your name or company name.

Keystore Password: Create a Keystore Password you will remember.  You will be prompted for this each time you use this certificate.

Save Password: Select this option.

Click OK.

23.    You are now ready to add devices.  Turn on your BlackBerry Playbook tablet and click its Settings icon (the gear icon in the upper right). 


24.    Within the settings screen, select Wi-Fi, ensure Wi-Fi Connectivity is enabled, and join the same network as your development machine.  In the example shown below, this is duanenet.

25.    Next, click About in the top left corner and then select Network from the drop down menu to find your IP address.  In the example shown below, it is


26.    You will need to upload a debug token to the device.  Select Security on the left and click Development Mode.

27.    In the Development Mode screen, toggle Use Development Mode on, and then click Upload Debug Token. Note: When you turn Development Mode on, you'll need to set a device password if you have not already done so.  Remember the password you set, you'll need it again in Step 29.


28.    Back in Flash Builder, open Preferences and select Flash Builder > Target Platforms > BlackBerry Tablet OS > Test Devices.

29.    Click Add to add a test device. 


In the Add BlackBerry Tablet OS Test Device dialog box, enter the following information:

Device Name:   Type a descriptive name for your device.
Device IP:         Type the IP address you obtained above.
Password:         Type the password for the device.
Save password: Select this option.

30.    Click  Create A Debug Token And Upload It To This Device.   This will bring up a warning that says you have to put your device in debug token upload mode.

You've already done this in previous steps, so just click OK.  If the device times out of upload mode, you may have to repeat these steps.


31.    If all goes well, you should see your device listed as a Test Device. Click OK.

32.    You should also see your device indicate that the Debug Token has been installed.


33.    Congratulations!  You have finished the preparations for your BlackBerry tablet and Flash Builder.

If you have any problems with the steps, email me at dnickull at adobe dot com.