Archive for March, 2009

Great UI experience means good shopping carts


Have you use IKEA’s shopping carts, versus ones in Walmart, ToysR US for instance? The difference is huge.

The bad shopping carts tend to run in one direction, steer doggedly against where you want to go and take a huge amount of patience just trying to move from one aisle to another. This can become more painful when the store is crowded and you are trying to pull off some tight maneuvers. While the ones I used recently in IKEA were a dream come true. They steer perfectly, the ride is perfect and is effortless to move around. If I can compare shopping carts to cars, the ones in IKEA have to be the Mercedes, while the rest are the equivalent of the now defunct Yugo.

So why do shopping carts matter and what point am I trying to get across?

Shopping carts matter a lot for stores, because that is what (most of) the customers use when trying to buy things. If their shopping carts cause frustration, are fussy, customers are more likely trying to make that thing move instead of looking wondrously at the goods at your store and potentially buying more of them. I am sure stores want their customers looking at their products rather than at the shopping cart’s handlebars.

The same analogy holds true for great UI. You want to make a UI that is effortless to navigate, takes the user where he wants to go without trying to frustrate him needlessly. Otherwise you end up with user interfaces that are much like bad shopping carts, that a user spends more time trying to figure out how to navigate than looking at the great features you provide. Build great shopping carts and then build great features.

PS: Walmart, fix those bad shopping carts please.

Comparing Tonido Photos and Memeoshare


Both applications are designed to simplify photo sharing experience and save users from spending time in downloading and uploading photos. Users can form groups (Circles in Memeoshare and Tonido group in Tonido Photos) to share their photos. Group members need not upload or download photos, they automatically receive the photos.

For the first 10 minutes learning about these applications, they appear as if they are doing exact same functions. However, you will soon notice that there is a fundamental difference between these two applications. Tonido creates a private P2P network to transfer files among group. Tonido doesn’t use a third party server to store or channel user photos. In case of Memeoshare, it loads user photos into a central server and sends the photos from the server to other in the user group.  Since Tonido doesn’t use a central server, it promises complete privacy — user communications or photo sharing is neither monitored nor stored in any server.  This is a big advantage that Tondio Photos offers that no other photo sharing service offers.



Comparison By Feature


Tonido Photos


Photos vs. Memeo

Ease of Use: Sharing Photos

·   Quick to install

·   Easy steps to share

·   Notification when new photos are received

·   Quick to install

·   Easy steps to share

·   Notification when new photos are received


Viewing options

·   Browse by user, group, tag

·   Filter by date-time

·   Slideshow

·   Browse by tag

·   Slideshow

·   Option to rotate photos


Size/bandwidth Controls

·   Users can set bandwidth to use

·   Users can set size limit on group

·   No such controls

Tonido Photos


·   No one outside group can see what is shared by whom

·   User communication/ data/ photos are neither monitored nor stored in any external servers

·   Photos are stored in third party servers. Potential privacy concerns

Tonido Photos

Performance/ Footprint

·   Uses 19MB RAM

·   Uses 83MB RAM

Tonido Photos

Operate from anywhere and device

·   Access Tonido from any device with standard browser

·   Share new folder or create new group from anywhere

·   Only view photos/videos from anywhere

·   Cant create new group or share folders remotely

Tonido Photos

Porting to Facebook

·   Not available in Beta. (in product roadmap)

·   Easy to upload to Facebook


Backup option

·   Needs extra steps to set backup option

·   Easy backup


Selling points

·   Absolute Privacy

·   Extensible Platform (comes with other applications jukebox, workspace, webshare)

·   Performance

·   More granular user controls

·   Supports videos

·   Easy backup option

·   Option to upload to facebook



Photo Sharing in Tonido

1)      Create a Profile (no email registration)


2)      Create a Tonido group


3)      Select a folder to share


4)      View gallery in Tonido Photos


Photo Sharing in Memeo

1)      Register a new user


2)      Create a circle


3)      Select a folder


4)      View the gallery in


Browse options





Footprint Comparing memory usage across Tonido and Memeo



Tonido JukeBox Vs Jinzora: Installation and Configuration

Listening to music online is not a new concept to many internet users. However this habit has evolved more into listening to your own music collection online. With hardware prices getting dirt cheap and more users switching to faster internet connections (switching from dialup to cable/DSL), running your own personal radio station is fancier than ever.

In this article, we will take a look at the installation and configuration of two such software that lets user to run their own internet radio station.
(1) Tonido Jukebox – An application plugin from CodeLathe that runs on tonido platform.
(2) Jinzora – A PHP based web application that runs on LAMP stack.

Before proceeding with the installation let us look at the comparison of each of the above.

Tonido Jukebox

  • Setup very trivial.
  • Supported for different OS without any additional software stack.
  • Very Low memory footprint. (about 10M for music collection with 50 songs)
  • No need of separate Dynamic DNS (DDNS) setup.
  • Automatic UPnP port forwarding available if supported by users router.
  • Simplified user interface.


  • Setup is more involved.
  • Additional software stack (such as LAMP, WAMP, MAMP) will be needed depending on the target OS.
  • More memory footprint.  (about 50M for music collection with 50 songs)
  • Needs registration with a DDNS provider if a URL access is needed.
  • Automatic UPnP not available
  • Complicated user interface.

Let us look at the steps involved in installing the above two on a windows platform.

Installation of Tonido Jukebox

Tonido Jukebox is an addon plugin for tonido platform. Jukebox is bundled with the default Tonido installation along with few more other applications. Tonido also has the advantage of automatic dynamic dns (DDNS), so accessing your Jukebox with a URL is possible without any extra DDNS configuration.
1)  Download the latest Tonido from . Click the downloaded file to run the setup.

2)  In the windows security warning window, Click “Run” to run the setup.
Security Warning

3) In the Tonido setup welcome screen, click “Next”.
Welcome Screen - Tonido Install

4) In the next screen, keep the default start menu folder. Click “Next”.Tonido Install - Folder

5) In the next screen, keep the defaults. Click “Next” to start the installation.Tonido Install - Shortcut selection

6) After installation, click “Finish” to conclude the installation and launch tonido.
Tonido Setup - Launch

7) Tonido UI opens in a browser window. Click on “Create Profile” to create a new user id.
Tonido Installation - Select Profile (Empty)

8) Create a new user id by entering all the information and click on “Create”.
Tonido Install - Create Profile

9) A new user id is created in your Tonido. This instance of Tonido is completly local to your PC and no information is stored in any thirdparty servers. Login to the account by entering the password and clicking “Login”.
Tonido Install - Login Profile

10) In Tonido administration screen, click on Jukebox from the application list on the left navigation panel.Tonido Application List

11) When Tonido Jukebox starts for the first time, it prompts the user to add MP3 song collection. Enter the path to your MP3 collection and click “Add”. Jukebox - Add new collection12) Finally Jukebox is up and running. All the necessary configurations are completed and ready for access from anywhere.

Tonido Jukebox

13) Tonido Jukebox is already configured for dynamic dns (DDNS). So now you can access Jukebox anywhere on the internet by using the URL (, assuming tuxan is the user id and port forwarding is enabled. Goto for more information on port forwarding.

Installation of Jinzora

Jinzora is a PHP based streaming application that works on top of a LAMP stack.  So the steps include LAMP stack setup and then the Jinzora setup.
1) Download the latest LAMP stack from here. Click on the installer to start the installation. Click “Run” at the windows security warning window.
Lamp - Security Warning

2) Click “Yes” on the setup warning window.
WAMP - Install warning

3) Click “Next” on the welcome screen.
WAMP - welcome

4) In the next window, select “I accept the agreement” and click “Next”.
LAMP - License

5) In the next window, do not change the default path and click “Next”.
LAMP - Folder Selection

6) In the next window, select the shortcuts options that needs to be created. Click “Next”.
LAMP - Shortcuts

7) Enter the SMTP server information if you have one. If not keep the defaults. Click “Next”.LAMP - Email

8) When the installation is completed, click “Finish” to close the launcher.
LAMP - Summary9) Before proceeding with the Jinzora installation, the MySQL database user (root) should be assigned with a password.
Open URL(http://localhost/phpmyadmin/)  on a web browser. Click on privileges. Edit root user and set a password.

10) After setting a password for root MySQL user, php admin application won’t be able to access MySQL database.
Edit the config file(Default : C:\wamp\apps\phpmyadmin3.1.3\
Change the line from,
$cfg[‘Servers’][$i][‘password’] = ”;
$cfg[‘Servers’][$i][‘password’] = ‘password’;
Save the file and restart all servers from the windows system tray. Click on the WAMP icon and select “Restart All Services”.
WAMP - Restart services

11) Now its time to install Jinzora. Download the latest Jinzora installation from here. Open the zip file and copy the contents of the zip to apache web directory. (Default C:\wamp\www). After copying the contents the folder should look as follows.

Apache - Web Folder
12) Open a browser window and go to the URL (http://localhost/jinzora2/).
You will be greeted with the Jinzora welcome screen. Click “Proceed to Requirements” to move to the next screen.

13) Jinzora will check for the requirements and will show the results. If nothing major is found missing click on “Proceed to License”.

14) In the license screen, select “I Agree to the license terms” and click on “Proceed to Install Type”.

15) In the installation type screen, select “Standalone” as the installation type. In the Jukebox mode, select “Streaming Only” as the mode.
Click on the “Proceed to Main Settings”.
Streaming Mode : Music will be streamed to the remote client and the music is played at the client side.
Jukebox Mode: Music will be played at the server side.

15) In the main settings screen, enter user, password and theme details for the Jinzora webpages. Click on “Proceed to Backend Setup”.

16) In the backend settings screen, enter the password details for the MySQL root user. Select “True” for the option “Create Database”. Click on “Continue with Backend Install”

17) In the backend creation summary screen, the setup summary will be displayed. Click on “Proceed to Import Media”.

18) In the import media screen, enter the path of the music collection and click “Import Media”. After the import is done, click on “Proceed to Save Config”.

19) In the save config screen, config change results will be displayed. Click on “Proceed to Launch Jinzora”.

20) Jinzora frontend opens in the web browser. Jinzora can also be opened using the URL(http://localhost/jinzora2/index.php) from a web browser.

21) When the web page is opened, a login prompt will be displayed. Before proceeding with the login delete the install directory under the Jinzora web directory.
(Default : C:\wamp\www\jinzora2\install).

22) Now in the browser window enter login id and password (admin/xxxx) to login to Jinzora.

23) Now that you have Jinzora up and running, next step is to configure access to Jinzora from anywhere on internet. Unlike Tonido Jukebox, Jinzora doesn’t support Dynamic DNS (DDNS) automatically. DDNS for Jinzora can be setup following the instructions here.

Tonido Workspace: Alternative to Microsoft Groove

Tonido Workspace Main Screen

Tonido Workspace is a powerful application that is part of the Tonido Platform. It is a personal information manager and a P2P group collaboration application. Nearest competitor to Tonido Workspace is Microsoft’s Groove application. To those who don’t know, from Wikipedia,

“Microsoft Groove’s core concept is the shared workspace [3], which consists of a set of files to be shared, plus some aids for group collaboration. Groove users can create workspaces, add documents, and invite other Groove members to a workspace. A user that responds to an invitation is made an active member of that workspace. Each member has privately editable copy of the workspace. Users interact and collaborate in the common workspace which is a private virtual location. All changes are tracked by Groove, sent to all members and all copies of the workspace are synchronized via the network in a peer-to-peer manner.”

This exactly describes Tonido Workspace as well. Tonido Workspace allows you to setup a shared workspace that is shared among a set of group members. Each group member needs to have Tonido installed and the Tonido Workspace application enabled. A group member can invite another group member to be part of the workspace. Once they accept, they will get a privately editable copy of the workspace. Users interact and collaborate via the workspace. These changes are tracked by Tonido workspace, sent to all members of the group via the Tonido P2P network.

So in this post, we will describe some of the features of Tonido Workspace and how it compares with Microsoft Groove.

Before we do that, let us look at the base set of features that Microsoft Groove has and compare that with Tonido Workspace. Instead of using the usual set of hundreds of features most sales materials use, let’s look at a list of general features as listed on a slashdot posting.

1. It’s a rich client in a Web 2.0 world – which means you will see people running it on an airplane (also, incidentally, where you don’t see any Web apps running)

Tonido Workspace is a rich client in a Web 2.0 world. It works online or offline, whether you are at work, at a customer site or on a plane.

2. It runs a distributed directory, so people can collaborate across organizational boundaries without requiring IT to modify directory systems (a challenge that has been vexing the industry for at least 15 years now)

Tonido Workspace uses a fully distributed identity management of Tonido Network. People can fully collaborate across organizations. And if your enterprise requires it, you can run your own custom Tonido Domain Server (TDS), with fully custom IDs (

3. It navigates across firewalls to create a “live” peer-based connection between Groove users – features are presence, awareness, instant messaging, and a whole raft of collaborative tools like file sharing, calendars, discussion threads, and customizable forms.

Tonido Workspace runs on top of the Tonido P2P network. Tonido P2P network establishes fully direct p2p connection between Tonido Group users. Tonido Workspace shows whether a peer is online or offline, chat and a bunch of collaboration tools like a shared calendar, discussions, tasks, contacts and files.

4. Security is built-in from the ground up – every user is authenticated, which has proven to effectively limit spam, viruses and other malware, and all work is protected with FIPS-approved 192bit AES encryption on disk and over the network.

Tonido Workspace runs on top of the Tonido P2P network. Every user is authenticated, all network transmission is via 256 bit AES encryption. Encryption support for Workspace data on disk is coming soon.

5. Trust. Only the people designated to read information you choose to share will have the keys to unlock it. That means that an errant sys admin cannot view Groove workspaces or intercept data intended for another recipient.

Workspace data is transmitted directly between peers. It is never transmitted to third-parties, never relayed through the Tonido DS. The data transmitted across the wire can only be unencrypted by the other party; since the shared key for the session is setup using Diffie-Helman key exchange.

6. Synchronization. This actually should have been first, since at the core, Groove is a great big XML message switch. Here’s where you’ll find the patents. Groove has a very robust synchronization engine that ensures that all documents, files, messages, changes to a workspace, etc. are synchronized with all members, whether they are online or offline. This is a hugely complicated endeavor that the Groove team has been working on since the Lotus Notes days – and they KNOW how to do it right.

This is subjective, but Tonido Workspace also has a full-fledged robust data sync framework with can work with any type of data. The sync feature in Workspace allows all objects to get synchronized whether the group member was online or offline; allows you to resolve conflicts on objects, in case two members edited the same object before synchronization.

Advantages of Tonido Workspace

So far you can see that Workspace matches Groove in most of the main features and functions. Now we will see where Workspace is better.

1. Browser based

Tonido Workspace UI is via the browser. This offers a huge advantage over a normal rich UI. Say for example you have Workspace installed in one machine, you don’t need to install Workspace in 3 other machines just to access your workspace. You can simply access it from another machine. Even better, you can even access it from your mobile phone browser in a pinch.

2. Cross-platform

Tonido runs on all OS variants unlike Microsoft Groove. It hardly matters which OS you wish to use.

3. Hierarchical Organization of Data

In Groove, objects are all straight jacketed to a single type. In the discussion forum tool, you can only add comments or topics. In Tonido Workspace, however, any object can be children to any other type. In a discussion forum, you can add child comments, attach files, attach a note, even attach tasks to be completed. Groove requires you to work within their boundaries while Tonido Workspace is flexible enough not to impose those boundaries. Want to add a reminder for an object, just add a child calendar event and it will appear in your calendar.

4. Cost

It is unknown what Groove really costs an enterprise, but it is probably hundreds of dollars, and thousands more if you want to run the Groove server internally. Tonido Workspace will be a fraction of the cost for small business and enterprises.

Missing Features/Cons in Tonido Workspace compared to Groove

1. More variety of Tools

Groove offers a variety of tools that can be integrated into a workspace. Tonido Workspace offers less. But we believe less is more especially if the less is better integrated with each other and offers a better user experience.

2. Relay Capability

Groove has relay capability so that if peers cannot directly connect to each other, it relays information between them. Tonido, however does not relay information at all. All connections are peer-to-peer. However, there are two mitigating factors.

1. Tonido Workspace can synchronize group information through any set of connected peers. If there are 3 peers (A, B, C), and A connects to B and C, but B and C cannot directly connect to each other. Information added by B and C will still propagate to each other through A.

2. CodeLathe hosted Relays. CodeLathe will host relays that will be always online, and which can be added to your groups as regular members for a nominal monthly costs. Since these relays will be always be on and it will always have internet access, you can depend on syncing information to the group irrespective of whether or when anyone is online.

Screenshots of Key Features in Groove and Comparable Feature in Workspace

Online Status



Online Contact Options


















Contacts (Only in Workspace)


Learn more about Tonido Workspace and how you can use it to work seamlessly, securely, privately with distributed teams.

Search is for Big Players – Why size matters?

Most of the search algorithms learn and improve as more people do more searches. As algorithm improves, it produces better results and attracts more users to use the engine. On the flip side, if an engine doesn’t have enough volume of people doing searches, it cannot learn and improve its algorithms, thus wouldn’t be attracting users. This is a vicious cycle – you need more people to attract more people a.k.a “Network Effect”.

A leader like Google, who has head start and share in the game, is already in an advantaged position. With its 70% market share, Google continues to improve its algorithm and extends its lead by improving its search results. This positive reinforcement is evident from the market share growth that Google experiencing for the past 3 years.

Advertisers want to place their ads only in engines which can maximize their spend by showing their ads to a variety of searchers. Unless an engine has enough scale, advertisers will not be ready to spend money and time for small share of consumer eyeballs. Even if they spend, they wouldn’t pay as much as they are ready to pay in Google platform. Moreover, ad platforms are auction based hence if a search engine wants higher price per click, it should attract more advertisers to bid on keywords. Since Google has large enough users to attract advertisers to compete for keywords, Google will get 2-3X price for same keyword than any other search engine. With its scale, not only Google continually improves its algorithm, it gets higher price for its inventory hence higher revenue per user.

Search is high investment business where table stakes are high. Company like Google has millions worth of server farms and data centers that are continuously indexing web content and serving query results in blazing speed. Whether an engine serve 1 million users or 200m users, it has to invest in servers which is a fixed cost. Marginal cost of serving an additional query is very less and almost entire price through ad is profit. Hence profitability also improves as scale increases.

Given higher price for click and higher profitability, Google can share more profit with content providers. This attracts more content providers to choose Google Ad platform over other search engines. In turn, Google gets content for its tailend queries and helps it to give results that are deep. This reinforces its lead in term of better results and more users.

Given the above reasons size is important. For a small player, it is extremely difficult to improve algorithm, attract advertisers, maximize investment and attract content network.

For a startup it poses huge entry barrier to cross and compete against Google or Yahoo. Most of the startup in this space know they can’t compete directly against big players and these startups hope that one of big search engines will acquire them. E.g Powerset was acquired by Microsoft. As a small startup competing against Goliaths, we at Codelathe understand the tough path ahead these startups, and we wish them good luck.

Internet User Involvement Trends

Traffic for a website is driven by number of users, and visits/user. In addition to user visits, time spent in the website or in an internet activity is a key metric to understand trends among web consumers. Visits/user and time spent by a user collectively define user involvement. Here are the some trends in users and user involvement in various internet activities – search, portal and social networking.

  • Nearly 90% of all US Internet users visit a search engine in a month. An average user makes close to 24 visits in the month and spends average 2 minutes each time a user visits a search engine. (Source: Comscore January 2009)
  • Number of Internet users who have a search engine for their home page has grown significantly. 21% of Internet users said that their home page is a search page such as Google — more than double the response in 2005. On the other hand, % of users, who set an Internet portal (Yahoo, America Online, or MSN) as their home page, is continuously declining. (Source: Daily Internet Activities (May 08, US, Pew/Internet)
  • Apart from decline in portals as homepages, overall pageviews for portal websites usage is declining. Though the usage is declining, portals still get almost twice as many visits as a search engine gets. Not all portals are performing poorly. Yahoo’s portal usage and pageviews are growing while others are declining. Yahoo has consistently shown growth through building a very strong user community that uses multiple Yahoo Services. 
  • % of users who participate in social networking and consume blogs grown to 65M which is close to 1/3 of total internet users. In terms of user involvement, an average user visits 20 times a month to a social networking website and spends close to 14 minutes per visit in social networking. Social network’s share of user time has grown to catch with time spent by a user on email and has surpassed the time spent by a user on a portal. This is why Facebook is getting crazy valuations. (Source: Comscore January 2009)

Tonido Beta Launches!


CodeLathe is proud to announce the beta release of our new software product, Tonido (pronounced Tone-ee-doh).

Tonido is an open personal web application platform that offers an array of useful applications. This product is perfect for you if you dislike the idea of your personal data residing on public servers, yet still want to access your applications/data from anywhere without sacrificing privacy.

Currently Available Tonido Apps
* Tonido Jukebox – Organize and play your music via a browser.
* Tonido Photos – Privately share photos without uploading via the Tonido P2P network
* Tonido Workspace – Personal Information Manager and Private P2P Group collaboration
* Tonido Webshare – Share large files from your desktop directly to the web.
* Tonido Thots – Your personal journal and note keeping application

and more are on the way…

If you are interested in getting Tonido, sign up to get an invitation.

Software Release Management System Requirements

We have gone through a requirement process  to identify the key requirements  for Tonido‘s release management. I thought this requirements would be useful for other developers too.  So here are the key requirements that we have identified.

  1. Continuous Check-In – Team members should use SCM (In our case subversion) for any code or artifacts that they create and it should be checked ASAP. This will help us to have only one repository for all our artifacts and code needs.
  2. RMS (Release Management System) should build the application in all the OS’s we intend to support daily or triggered by a change or update in subversion.
  3. RMS should have a web front end that will allow the team members to see the results of a particular build from a browser. Further, it should provide an interface to start a build through web interface.
  4. Every build should have a build number. In our case, we are using the subversion revision number.
  5. Every build should have a build version. Build version format is Major Version: Minor Version: Patch: Build Number
  6. RMS should provide unit test results for all the builds.
  7. RMS should archive the unit test results for important builds (QA builds and Production builds)
  8. RMS should provide the mechanism to deploy or install the applications in the target OS and do at least minimal amount of end to end testing . In our case we are using custom Perl scripts to test our software.
  9. RMS should archive end-to-end test results for important builds (QA builds and Production builds)
  10. End to End testing results should be updated in the RMS .
  11. RMS should provide an automated mechanism to promote a daily build to QA build and if the results are satisfactory then RMS should be  able to promote the QA build to Production build.
  12. RMS should have defined criteria for promoting the builds like QA results or successful unit test results.
  13. RMS should have an automated mechanism to update the production server after a build is promoted to a production build.
  14. RMS should archive all the production builds.
  15. RMS should archive debug symbols for all the production builds.
  16. RMS web interface should have proper access security policies (Password or key Pair).
  17. RMS should maintain the history of all the important builds.

We have evaluated Hudson and Cruise control to fulfill the above mentioned requirements. Finally we chose Hudson.  We felt cruise control is  Java focused and little complex for our purpose.   So far, we are happy with our decision to choose Hudson . It is light weight, extensible and supports distributed build feature, which we are using to build Tonido in 3 major OS’es (Windows, Mac and Linux). In case if you want to know more about Tonido, please check out Tonido’s  website. We promise you won’t be disappointed.