Semantic Web technologies and services lie at the heart of the effort to drive the Web to the next generation as a universal medium for data, information and knowledge exchange. Recently, we've seen a wave of new startups and initiatives that focus on using semantic Web technologies to help people consume the ever-growing vat of information available on the Internet.
One good example is Filtrbox, which uses the Flex RIA technology from Adobe to build the user interface. InfoQ spoke with Filtrbox RIA Flex Developer, Justin Imhoff, to gain insight into the resources and technologies needed for such a startup. In terms of human capital, Imhoff said:
Currently, at Filtrbox, we have three developers: Tom Chikoore - Architect and CTO; Bruce Deen - Flex and Java; and me - Flex and AIR. The company was co-founded by Ari Newman and Tom Chikoore. Ari is an accomplished entrepreneur and the voice of direction for the team.
On the contribution of Flex to Filtrbox, Imhoff says:
In a semantic search, you are dealing with large amounts of data. By using Flex and AMF, we are able to deliver these data quickly and efficiently for a powerful user experience. Each technology has its flaws, but for what we were doing, we found Flex to be the best fit for our needs.
As to the role of rich Internet application (RIA) technologies, Imhoff explains:
RIAs are designed to produce a comfortable user experience that resembles desktop interaction, but makes use of the Internet and server-stored data. One of the largest hurdles with RIA is developing ease of use and advanced functionality for large-scale applications. Many RIA development firms have UI and UX designers just for this purpose. Semantic search is not just a different way of using search technology, but also requires users to adopt new ways to interact and react to the results. When searching for information on Google, you are using a navigation search, but when semantic searching, you are searching by what is known as research searching. This means that you want to increase the contextual relevancy of your results by using semantics and have multiple results that then give users exactly what they are seeking. This is done by calculating the value of a user's interaction and by giving value to the search results. These results resemble a basic artificial intelligence of what a user may like or dislike, thus refining the content received. The only way for a semantic search to compete with a basic search while also holding true to being a semantic client is by leveraging the newest technologies on the RIA space.
In describing Filtrbox’s technical architecture, Imhoff noted:
We use Blaze DS to communicate to Flex in order to process AMF request. Blaze is an open-source limited version of Adobe's LiveCycle DataServices. With the use of AMF, we can send binary data back and forth from Flex, which decreases the download time and resources used by the client. Blaze provides a great backbone for server-client interactions that really help Filtrbox provide an efficient and streamlined data retrieval system.
At Filtrbox, we use the Cairngorm micro-architecture to better facilitate OOP programming and to allow the use of a fast-paced development cycle with application updates weekly. For the UI, we used many of the basic Flex components and expanded their uses and functions.
Imhoff added:
The main challenges in building a Flex UI are user expectations and interactions. By researching and understanding user demands with respect to both the Web and the desktop, there slowly emerges a correlation on expectations and requirements that can be followed to provide an easy-to-use and efficient interface.
Speed is a concern, due to user expectations. Many users are comfortable with the Ajax-like experience on the Web: loading as needed. With Flex, all that is required is the initial load. Some things that we have done to help this is the implementation resource shared libraries (RSL), which allows us to cache the Flex, RPC, and data visualization library on the client side, cutting the application size in half.
Another challenge is the overall design of the UI. Unlike HTML, there are not very many templates to go by. The challenge when using fluid layout in Flex is the scaling of graphics and images in the application. This is best accomplished by using Scale 9 formatting. Scale 9 allows you to define nine sections of an image that can scale independently of one another. Without this, a fluid layout would be almost impossible.
Developing in groups, especially when projects may overlap is definitely a challenge. When developing in groups, you will most likely run into the problem of multiple projects being combined into a single outcome. The best way to combat this is to invest in a good SVN client or to use subclipse in the Flex IDE. This will allow multiple developers to maintain current and historically versions of the application.
When developing in Flex, you will have to consider why you used Flex instead of Ajax, and you must have good reasons for this. Flex is just starting to emerge as an enterprise alternative and is making its way as a predominant framework in the RIA space.
With respect to features he would like to see included in the next version of Flex, Imhoff stated:
I would definitely like to see advancement in Flex charting and printing features. We had to develop our own solutions using third-party products or interfaces outside of Flex for this.
Other features that could be included relate to the Flash player and correcting bugs in support for SSL on different browsers and OS. Another enhancement would be security policies, which are heavily addressed in Flash player 10.