Posts Tagged ‘hacks’

Desktop Mashups: Closing the Gap Between the Web and the Desktop

June 9, 2009

Google and other web-centered businesses try to establish the web as a platform similar to an operating system. Many new web services use interactive GUIs to offer email clients, messaging, word processing and other services that are in their behavior similar to traditional desktop applications. Client-side scripting, well defined APIs, and asynchronous data exchange are the key elements of the interactive web interfaces that rapidly spread under the Web 2.0 label. Developers of mashups go even one step further and create new web applications by combining data from different sources. Numerous examples of excellent mashups show that the remix of data in mashups can have significant advantages compared to the individual web applications still providing the data. Unfortunately, the Web 2.0 has also some major disadvantages and creates new problems.

The most obvious technical risk of storing data on web servers or computer ‘clouds’ is the catastrophic failure of a web service that can create major problems especially when no backups or alternative programs exist. Besides such technical issues there are also very serious problems related to the code and the user’s data as Richard Stallman recently pointed out. He argued that the common business models of cloud computing get users over time into a trap of proprietary systems including the lose of control over their data, and paying eventually more than for an equivalent desktop application. Other unsolved issues include privacy and ownership questions related to user generated content. Stallman criticized also that the Javascript code of websites, although freely distributed, is in many cases so obfuscated and unreadable that it can not be considered to be Free Software.

A white paper published by MAYA Design questioned the technical reliability of the centralized cloud structures. The authors describe today’s cloud computing as “radical experiments to be performed by gigantic, non-redundant entities.” Their suggestion is that “until we understand a domain of endeavor very, very well, we should insist on decentralized, massively-parallel venues for dubious experiments. In the information economy, it means net equality, information liquidity and radically distributed services (and that’s pretty much the opposite of “cloud computing” as described today).” Also, they argue that short-term profits, and insufficient thinking about architecture, security, and resilience may guide developments in the wrong direction. Serious warnings about the risks of cloud computing come now even from more main stream journals such as The Economist saying that the economic advantages are associated with the customers’ risk of “losing control once again, in particular over their data, as they migrate into the cloud.” As a specific example they mention that it may be more difficult to change the service provider than migrating from one computer application to another: “For a foretaste of this problem, try moving your MySpace profile to Facebook without manually retyping everything.” Another report entitled “AppEngine doesn’t fit the needs of startups on the runway” described how limited data access made impossible to run a statistical analysis of the user data. Without the option to download the data buried in Google’s database the analysis has to run as a job on AppEngine but once the database grows bigger and the job takes longer it will hit AppEngine’s 5 second timeout and cannot be completed anymore.

The big challenges of keeping the freedom and independence from individual web services, and supporting the principles of free software on the web including full control over our data show that we need to develop alternatives to the risks of purely web-centric applications. We have to ask for example: Is it possible that we use mashups and other new developments of Web 2.0 without loosing the freedom to control our data and the application’s code? Mashups provide very interesting new concepts for integrating different applications. In fact, Google CEO Eric Schmidt expects that Web 3.0 will be “applications that are pieced together.” I agree that small scripts can be simple but powerful tools for redirecting and manipulating data on the web as well as on the desktop. This concept of integration has the potential to change our desktop paradigms. I first realized this when I started writing small Bash and Python scripts. However, I think the more important step was adding a tiny CGI server. This user-centered server running on my desktop allowed me to integrate both web services and desktop applications with some small but very efficient applications I needed.

Mashups require essentially only two things: 1) client-side or server-side processing, and, 2) proper APIs supporting efficient data exchange between client and server. Most mashups are relative small applications that improve usability by linking and remixing the data of more than one dedicated web application such as Google Maps, photo sharing, social bookmarking, social networking, web mail, and chatting. The data exchange among web applications is achieved by a simple old-fashioned text channel. In fact, this type of communication is very similar to the traditional data exchange between concatenated text processing tools in Linux/Unix, also referred to as pipes. The only important advantage of the text channel used for web applications is the standardized structure for sending data, e.g. “key1=value1&key2=value2”, and of character encoding for data to protect the control characters, e.g. equal sign. Unfortunately, these key concepts of web APIs that are essential for mashups are largely missing in our desktop applications.

The few programs with useful APIs that I know include Krunner and Korganizer both part of the Linux/KDE environment. Krunner has since KDE 4.2 an exciting new concept that allows not only starting programs similar to the command line interface (CLI) but shows also dynamic search results while the user is typing. Krunners numerous plugins include also calculations, searching for contacts, opening profiles, and other interesting links to different programs. Korganized includes both a GUI and a simple CLI for a calendar. The CLI allows to add, list, and delete calendar events. So, it can be used as API for scripting and data exchange with other applications. Most applications, however, do not support such data exchange although they would greatly benefit from higher integration at the desktop. Thunderbird, for example, would be much more useful if I would be able to place links in calendar event, ToDo items, notes, etc. pointing to specific emails with additional information. Ideally, Thunderbird would support both opening of the email and returning of their content for displaying it in a desktop mashup. Thunderbird would also benefit from a “command line” similar to Firefox’s URL supporting smart keywords and bookmarklets. Combining the desktop CGI server with Firefox’s smart keywords allowed me to send, receive, and remix data similar to mashups. Ubiquity on Firefox also promotes mashups and is a very interesting new concept except that without a mechanism like a CGI server it is unable to communicate with other desktop programs. I think an integrated solution for a CGI interface would promote integration with other desktop applications and mashups including the powerful ubiquity. It would allow us to develop very efficient user-centered desktop mashups that can basically integrate any desktop application that has a sufficient API. I think the common web standards for URLs provide an efficient and robust text channel for the exchange of structured data at the CLI level.

In summary, running a tiny CGI server on the desktop allows to build applications integrating different data very similar to mashups on the web. Developing such desktop mashups doesn’t mean that we need to abandon web applications but that we will have more freedom to choose and that we can integrate both desktop applications and web applications. I think the last point is especially important because it is a major limitation of web operating systems.


Running Windows 2000 on SuSE 10.2 with VMware

October 14, 2007

This article consists of notes, comment, and links supporting the installation of VMware Workstation and VMware Player. My primary motivation was to run programs in Windows 2000 on a SuSE 10.2 Linux host. Read more …

Firefox Hacks :: Improve the Usability of the Bookmarks Manager

October 14, 2007

Opening the bookmarks manager with keywords avoids problems with big bookmarks lists and Flat Bookmark Editing makes the bookmarks manager to an active workspace.

The handling of bookmarks in the current versions of Firefox results in some annoyances when the number of bookmarks reaches several hundred or thousand bookmarks. For example, Firefox does not respond for several seconds after the mouse pointer came across the bookmarks menu because it is putting all bookmarks into the menu.

Fortunately, the user interface of Firfox and other Mozilla-based browsers can be opened from the URL bar:


I saved it as a bookmark, opened the bookmark properties, and entered as keyword “bm”. Since then I have never used the menu again because it is much fast to press Control-L (to activate the URL bar), enter “bm”, and hit the Enter key. A double click on a bookmark opens the website in the same tab. But it can be opened in a new tab when the Control key is pressed while double clicking. This keeps the bookmarks manager open and saves time when the bookmarks manager is used more frequently.

The second major improvement in usability was to install the Firefox extention Flat Bookmark Editing (screenshot). It works like a tool in Photoshop that stays open instead of being opened and closed with every change. This type of permanent dialog window is always very useful for any continuing editing processes. Saving bookmarks without changing anything has been the primary use in the past. But adding and changing tags or meta-data requires a better editing process. The lower effort for editing is very beneficial for the active use of bookmarks. Flat Bookmark Editing makes changing tags or short notes much quicker. I hope Firefox will soon have a sidebar like Flat Bookmark Editing that loads all information simultaneously with the website and would be a very effective annotation tool.

Related blogs:
Firefox Hacks :: Search Simultaneously in Firefox,, and Archived Bookmarks
Firefox Hacks :: Tagging Bookmarks
The Evolution of Bookmarking — Bookmarks, Firefox, and

My related bookmarks at …

Rethinking the User Interface For Bookmarks — Two Different Purposes May Require Two Different Interfaces

October 14, 2007

Bookmarks are useful as FAVORITES in a menu for quick access to websites and as a large INDEX of marked websites with valuable content.
The reasons for saving bookmarks have evolved with the development of the web. Currently, there is a lot of discussion on the web about tagging of bookmarks. The discussion has two primary reasons: 1) frustrating experiences with organizing large amounts of bookmarks in directories, and 2) new online services for sharing tagged bookmarks within a community. It seems all users of online services for tagging of bookmarks, photos, etc. would like to have a new bookmark manager that supports tagging and can synchronize the local bookmarks with the online service. However, I think the necessary rethinking of the interface for bookmarking is not only a decision between hierarchy and tagging paradigms.
The redesign of graphical interfaces for bookmarks must address two different purposes. One is a menu for quick access to websites and the other is a personal index of marked websites. Both concepts are important for the interaction with the web and have been kept in one interface over time. But it may be better to have two separate interfaces.
The menu’s purpose is fast access to frequently visited websites. In principle, its function is similar to program menus or to sidebars with collapsible groups of items or submenus. Both have a very simple directory structure that provides not only the items but serves also as an visual reminder for the items and their shortcut keys. Menus and sidebars with the most frequently used bookmarks on the top level and a few more grouped in submenus or folders are good examples for this concept. The name FAVORITES emphasizes the concept very well that has been very beneficial for organizing a limited number of bookmarks in my sidebar.
Bookmarks without the high visibility in the sidebar or in the menu are a “permanent history” of marked websites. This personal INDEX contains bookmarks that have been saved because they were interesting or valuable. Searching this INDEX can provide pre-selected information very quickly. Tagging seems a perfect tool to categorize these bookmarks for the INDEX in a very flexible, quick, and simple way. Important for the interface of the INDEX are quick adding of bookmarks, simplified editing (e.g. Flat Bookmark Editing), and fast search for tags and text (title and description).
My own bookmarks file has the FAVORITES at the beginning of the bookmarks file to be visible in the sidebar and the INDEX as long flat list of tagged bookmarks below the FAVORITES. Unfortunately, this structure has affected the response time of Firefox (details) and it is not useful at all to have a large file of bookmarks listed in the menu nor in the sidebar. To solve this problem and to tailor the interfaces for FAVORITES and the INDEX more specifically to their purpose it seems reasonable to have separate user interfaces for the FAVORITS and the large INDEX. I’m sure if their data should be separated but it may be easier to have a file for the FAVORITES that just contains titles and URLs in the order of the menu while the content of the bookmarks is saved in the INDEX.
Important for the FAVORITES is that bookmarks can be manually ordered and that folders can be used to organize and collapse groups of bookmarks. The FAVORITES could contain dynamic or “LiveFolders” for dynamic search results of the INDEX, e.g. a selection by tags using a link structure chrome://browser/content/bookmarks/bookmarksPanel.xul?search=favorites+firefox. But the primary purpose needs to be visual feedback and quick access to websites. The manual order of bookmarks can be as important as in regular menus.
Important for the INDEX is the excellent support for tagging and Flat Bookmark Editing (screenshot). A new but very useful concept for entering tags are “tag clouds” combined with dynamic recommendations as the POST interface (screenshot) demonstrates. I hope very much that some time soon we will have for the sidebar a form like Flat Bookmark Editing and that opening a website loads simultaneously the bookmark when available so that I can change tags and make notes and annotations. This type of tools that do not require to open and close a dialog became very common for graphical editing, e.g. Photoshop, Gimp. Firefox’s Find in websites and in bookmarks as well as Flat Bookmark Editing demonstrate how this concept of avoiding dialog windows can improve the usability of web browsers too.
A redesign of the user interfaces to add, edit, and use bookmarks is a great opportunity to introduce new concepts and increase usability. Improved user interfaces for bookmarks including “dialog-free” annotations of websites could result in an interesting tool for information management and may pioneer the way we will use tagging and other meta-data in the future.
Related blogs:
The Evolution of Bookmarking — Bookmarks, Firefox, and
Firefox Hacks :: Improve the Usability of the Bookmarks Manager
Firefox Hacks :: Tagging Bookmarks
Firefox Hacks :: Search Simultaneously in Firefox,, and Archived Bookmarks

My related bookmarks at …

Firefox Hacks :: Search Simultaneously in Firefox,, and Archived Bookmarks

October 14, 2007

A simple script searches for one or more terms in Firefox,, and archived bookmarks files. The script presents the results in Firefox using Netscape’s standard format for bookmarks.

At the time I realized that the size of my bookmarks file was slowing down the response time of Firefox/Mozilla I decided to split the file. I moved a large fraction of the bookmarks I want to keep as a permanent history of selected websites to an archive without changing the format of the bookmarks. The Firefox bookmarks file contains since then the newest bookmarks and the permanent favorites on the very top to be shown in the bookmarks sidebar.

Searching the bookmarks and their tags in the archive (permanent history) required a script I wrote in BASH to use it on Linux systems. The script searches for one or more words in the archive, in the Firefox bookmarks file, and in the backup file of my bookmarks. So, all bookmarks can be searched from one place.


  • Download the script;
  • Put it in your ~/bin directory or where ever you have your scripts;
  • Change its permissions to make it executable; and
  • Configure all paths and file names of your bookmarks files.

If you’re using KDE I recommend to open the mini-command line (Alt-F2) and type for example: bms Firefox<Enter>. This is very similar to using keywords in Firefox. The search results are shown in a new tab in Firefox. For bookmarks is the response time much shorter than on the web. The backup files can be downloaded from<YourLogin>/export. But the backups contain the notes of each bookmark as multiple lines below the bookmark. You can use this perl script to convert it to a file with one line per bookmark.

If you like to see a list of all bookmarks with Firefox keywords search for SHORTCUTURL. With regular expressions for the search, you can try ordered tags, e.g. bms “tags:.*social.*bookmarks”, and many other powerful search terms.

Related blogs:
Firefox Hacks :: Tagging Bookmarks
Advanced Tagging — Hierarchical And Ordered Tags
The Evolution of Bookmarking — Bookmarks, Firefox, and

My related bookmarks at …