Call Graph Version 1.1.1.5

New In This Version

Inbuilt Player: The player has been replace with a new version. It now displays visualizations as well as the amplitude information. Here’s a screenshot.

Wav Files: Wav files now can be uploaded to your Call Graph account and played back using the inbuilt player. This was not possible in earlier versions. A copy of the wav file is converted into mp3 and played back or uploaded. If you are using Call Graph for podcasting, you can now user our web service to archive your podcasts!

CPU Stats: CPU stats has been added to the stats and notes page now as well. You can check the CPU loading during the recording if you open the stats/notes window. Only available in the browser UI mode.

Bug Fixes

Volume Drop Issue: The volume drop which used to occur when recording was started is now gone.

Potential Stack Overflow Issue: If you are experiencing intermittent crashes during the recording, then please update. The encoding thread had a potential stack overflow issue which was fixed in this release.

Please update now! And dont forget to authorize Call Graph to use the Skype API after the update. Thanks.

Major Release: version 1.1.1.0

This is a release which took some time to roll out, but its finally done now. The biggest change is that the Browser UI is completely gone. It has been replaced with the XUL based UI. Now the recordings and configuration pages will open in their own window instead of the default browser. The old minimal interface is still there.

The other things that went into this release are as follows.

The automatic update process has been changed and its now completely silent. No intervention required.

A crash when a recording is started before the last call was finished recording. This should work now.

A big red warning when CG is not connected to Skype and recording is started. A much requested feature.

Rearrangement of the items in popup menu. The feedback option is gone now.

A bug was fixed in Pause recording.

Skype version is now checked at initialization time. If its lower than 3.2, CG gives a warning and exits.

Another bug fixed in stop recording where the temporary file was being copied instead of being renamed.

Lastly, the toolbar has been revamped. It should now look and act better than before. 🙂

Please update now.

Client Version 1.1.0.5

Call Graph client version 1.1.0.5 is out. The following changes went into it.

Bug Fixes:

Recording cancellation now works! 😀 Fixed a bug introduced in the last version. Thanks to Monica for pointing it out.

Conference call recording has been fixed. Recording is stopped when the last person drops out and not the first.

Fixed a rare crash which used to happen in between the call recording.

Fixed an issue where Call Graph used to hang on startup sometimes.

Association of Call Graph client with the account on CRIMS now works in minimal UI mode. Thanks to Gary for pointing this bug out.

Recording Stats:

Recording statistics has introduced in this release. It displays live stats whenever recording is in progress. Useful if you are recording a podcast or an important call and want to keep a tab on recording status. Its available only in the browser UI mode.

UI Changes:

The recording’s UI has been further cleaned up. The actions have been grouped into a single drop down menu. Check it out.

What’s Next:

Filters, rules etc. Stay tuned.

Please update your installtion now. Thanks!

Call Graph version 1.1.0.3

Call Graph version 1.1.0.3 is out. We have built upon our previous update and made more modifications to the recording and encoding algorithm. Several new features have been added as well as couple of bug fixes. Here’s a list of all the changes.

Echo Cancellation:

The echo cancellation module has been completely revamped in this release. We are now using the DirectSound built in API’s for it. It should perform much better now and should cancel out most of the echo while using inbuilt mic and speakers.

Delays:

We had received several reports on delays while using Call Graph. This update fixes the delay issue. Thanks to John and Mike for helping us out with it.

Voice Recorder:

Call Graph can be now used as a standalone voice recorder. The recording starts as soon as the start recording command is issued from the UI and if a Skype call happens in between, and if auto recording is turned on, it records the Skype call as well. So now the recording can be started before making the Skype call too.

Recording In Between:

Now you can launch Call Graph in between a call and start recording it. Useful if you’ve forgotten to start Call Graph before the call had started. Thanks to David for suggesting this feature.

Browser Based UI Changes:

The layout has been changed to 2 column. A new interactive demo page also has been introduced which walks you through a Skype Test Call recording session. From this version you can also bookmark the recordings/configuration pages.

Minimal UI:

We have re-introduced the Dialog based interface we had earlier and have added a configuration item to control it. Its available from the Advanced tab. If you wish you can completely turn off the browser based UI and use only the dialog based interface. Do note that some advanced functionalities will be available only from the browser based UI.

Others:

The ‘History’ menu item has been renamed to ‘Recordings’. The installer and uninstaller has been cleaned up; now you can uninstall directly from Add/Remove programs. A nasty crash which used to happen sometimes during the end of the recording has also been fixed.

What’s Next:

Integration with our web service, rules for recordings, option to use Wave I/O instead of Direct Sound etc.

Please do keep your sending in your feedback and suggestions. Wishing you a very happy festive season (if you are in India) and Halloween (if you are not!).

Browser Based UI vs Minimal UI

Call Graph supports two User Interface’s, an browser based UI and a minimal UI. The browser based UI launches the default browser and displays all the data there using scripts pulled from our website. The mimal UI consits only of a windows dialog for configuration and a toolbar. A detailed feature by feature comparison follows.

Feature Browser Based UI Minimal UI
Recording history Yes Yes
Metadata Yes No
Playback Inbuilt Flash based player System default player
Renaming of Files Yes Yes
Editing of Tags Yes No
Search/Sort/Filter Yes No
Web service Integration Yes No

The interface can be switched anytime from the Advanced configuration tab.

Call Graph v1.1.0.2

The bi weekly update of Call Graph client is out. The recording module has been revamped, sharing, transcribing is inbuilt to the UI, uploading limits are gone and several bug fixes. Here’s a detailed description of the changes.

Recording/Encoding:

Several changes were made to the core recording and encoding module. There will be marked improvement in the quality of the recordings with this version. The encoding is faster, finishes as soon as the call ends. The delay/out of sync issues with SkyepIn and SkypeOut should also be gone. The Echo Cancellation has been improved too. All this as a result of moving from Wave I/O to DirectSound!

Uploading:

The process of uploading the call records to your account in at Call Graph has been changed. Now you do not need to approve the machine after adding it. That step is gone. Also you can upload records of any size now: the 100 MB limit is also gone.

Record Listing:

You can specify the number of records to be show now, either 10 (default), 50 or 100. This option is available on the header, just above the record listing. The Select All/None options have been moved above the checkboxes to the left. The Expand All/None is to the right now.

Sharing:

Sharing has been built into the client UI now. With this option, you can send the record to an email address directly. The record will be uploaded to our web service and a mail will be sent to your contact with details on how to access it. You will need to be registered with our web service for this.

Transcribe:

The transcribe link submits the record for screening. Once the screeing process is done, you can order transcripts of it from your account on Call Graph. Registration with our web serivce is require for this too.

Local Folder:

A new button has been introduced in the sidebar which opens the local folder where the call records are stored. You can directly access your files from there.

Whats Next:

More accurate echo cancellation, ability to record notes, more configuration options. Stay tuned.

Apart for the above, there are several bug fixes in this release as well. Please update now.

The Hybrid Desktop/Web Application

Our goal always has been to provide a very simple easy to use Call Recording application. To that end we employed a very simple and sparse UI. It used to look like this.

A simple html window where all the records were listed with the options. Unfortunately this interface was also very restricted. We were looking for an easy and seamless way to integrate the desktop client with our web service.

So in the 1.1.0.0 update we completely removed this in built UI and instead embedded a small web server in our application. This enabled us to present the UI in a browser. And the result was this.

As you can see, this interface is far better than the previous one. Better listing, embedded flash player, search/sort/filter options and more responsive. We firmly believe that its a big step towards making our application and service better for our users.

What enables this UI is Javascript. We have used JS heavily. Whenever the history or configuration menu item is clicked, it launches the default browser pointing to a page on our web server. This page serves JS content which then does a cross-site query using JSONP to the local web server embedded in our client. The embedded web server then interfaces to the Sqlite backend and sends data back to the browser. The JS formats this data as html and the browser renders it.

The end effect is that you seem to be browsing a page on our web server but magically your local data turns up in the browser! Sounds scary right. How did my data end up being on your server? Did we steal it?

The short answer is no. The long answer is that we used XSS. XSS is a technique which which is widely used for phishing and other website related attacks. But has seen growing acceptability in the recent times. Several popular web API’s use it (eg. Twitter, Flickr, Google AdSense). When used for legitimate purposes it can be a very powerful tool.

But as Saul in his comment points out, it can also be used by hackers to inject malicious JS into our application and steal the local data from the computer. The point is valid and its good that someone raised it.

Yes. That is a possibility. And anticipating that we have taken several steps to prevent it from occurring. For starters, the http port of the client is dynamically generated. At each startup this port number changes. The web server also has inbuilt checks on the types of requests it responds to. It processes requests only from the localhost. The query string has strict checks. It does not open up the whole computer and does not serve any files. It is in fact a very limited implementation of a web server. The actual content of the call record, the mp3 content, is not fetched via XSS. The embedded flash player directly downloads it to its its cache. Going forward we also plan to put in SSL and encryption into it.

We have put in all the safeguards that we could think of to prevent such an attack. You are most welcome to have a look at the JS code. Its not minified at this point of time, so you can just browse through it. Please do have a look and let us know if we can improve on something.

On the question of us stealing your data, it should suffice to say that we are a legitimate business entity running a service for which we have paid users. We are fully committed to protecting your data and ensuring that nobody can gain unauthorized access to it.

Embedding a web server in a desktop application is not entirely a new concept. Google’s Desktop Search does that, although it uses static html pages. In the embedded systems programming world its fairly common technique. Using XSS along with it might be new. To be honest we don’t really know if there is a precedent. I am sure others have thought about it. But if we are the first to actually try it out, then allow us to take the credit for it. We think this is a very effective way of protecting the users data, while still delivering services from which add value to our customers. Our service is a hybrid between a desktop application and a web application. We want to provide our users with a seamless experience between the two. And this method allows us to do exactly that.

We hope this post clarifies any questions regarding our update. Feel free to post comments and discuss it here.

Client Version 1.1.0.0

This is a major update of the client. The UI has been completely revamped and moved to the browser. Clicking on the history menu item or the configuration menu item now opens the default browser window. It adds quite a lot of options on searching/sorting/filtering of the call records. Here are few screenshots of it.

The recordings page shows all the records found on the local machine in the main area. Upto 10 records can be listed at a time and pages are shown for navigation. Clicking on the play button launches an inbuilt flash player which plays back the file. Clicking on the show details link reveals all the metadata of the call records (eg. date recorded, size, duration etc.). The rename and edit tags link can be used to edit the details. The upload link queues the files for upload (only if your client is associated). The delete link removes the record from your machine.

The sidebar shows the options for batch file operations, searching, sorting and filtering. Now multiple records can be selected at a time and either deleted or queued for upload. The records can also be sorted in ascending/descending order of time, size and duration. The default is newest. The search dialog can be used to locate a record by name or tags. The filter can be used to narrow down the listing by a specific criteria (the possible ones are duration, size, uploaded, date and recorded by).

The cool thing is that search, filter and sorting and be applied one after the other, in any order. So you can locate a call record by name ‘echo’ recorded on a ‘Sunday’ and ordered by ‘increasing duration’. 🙂

The configuration page is an exact replica of the the configuration dialog. It has five tabs, for general options, update settings, recording params, association and advanced. Each of these tabs show a subset of the settings in that particular group.

This is our first step in integrating the desktop client with our web application. Going forward it will be a seamless experience. All the services offered by our web application (sharing, transcribing etc.) will now be delivered through this particular interface.

Apart from the UI change, several bug fixes also went into this release. One of the major bug fix was the issue of connection getting lost between the client and Skype because of which the calls would not get recorded automatically. Now we have added a keep alive mechanism to keep the connection going.

Another major bug fix was the long startup time it used to take if you had a large number of call records stored. That used to happen because of the flat xml file database we used earlier. Now we have moved to sqlite database. So once all your files are migrated, the next startup will be very fast.

Please update now. And please send us your feedback on the UI changes.

Update: Here’s a detailed post on the technology behind the browser based UI. Have a look if you have questions regarding it.