Sunday, March 29, 2009

Online text-to-speech utilities

Text-to-speech (TTS) utilities are useful utilities that are a fun to try. Moreover, they increase the accessibility of the products and web sites.


Site Pal TTS (Text to Speech)
More languages, more voices, and more effects, with a realistic image representing the voice. Try this text-to-speech tool for a list of languages including English, Chinese, German, Hindi, and many more.


A similar text-to-speech (TTS) tool for Kannada and Tamil Languages can be found here.

Saturday, March 28, 2009

SVN Commit in windows [Could not use external editor to fetch log message]



Trying to commit to the repository:
E:\INDUSTRIAL TRAINING\LEAD\event-notifier>svn commit
svn: Commit failed (details follow):
svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and
no 'editor-cmd' run-time configuration option was found


Let me read the error message:

Oh.. yes,
It just needs the log message, and as no external editor is set to fetch the log message, I should use the -m option to specify the log message for the commit.

E:\INDUSTRIAL TRAINING\LEAD\event-notifier>svn commit -m "Moved the pom and build.xml inside the event-notifier folder"
Deleting build.xml
Adding eventNotifier\build.xml
Adding eventNotifier\pom.xml
Deleting pom.xml

Committed revision 179.
[Also it seems 179 will be the final version for our svn branch, most probably!]

Success!

Friday, March 27, 2009

Unicode support for Windows 9x

Unicode support for windows is not a new topic to discuss at all, since Windows NT. When it comes to internationalization (i18n) Unicode plays a major role. Hence the usage of Unicode is obvious and not a strange topic to discuss at all. But when it comes to the older Windows 95/98/ME Systems, we have to consider more factors. Most software have stopped supporting these legacy windows operating systems at all. In that case, they have no need to worry at all. If an application wants the Unicode support, yet running on these obsolete versions of windows, which do not have the native Unicode support, the problem arises.

To solve this issue, Microsoft Layer for Unicode on Windows 95/98/ME Systems [MSLU] has been introduced. This component allows us to write a single Unicode application which can run on all the platforms, by providing a layer over the Win32 API on those earlier versions of Windows. MSLU contains two parts - Unicows.dll and Unicows.lib. MSLU is easy to use. Just compiling the application as a Unicode component and adding the Unicows.lib with the other libraries is enough. Similarly hence Unicows.dll doesn't load MSLU at all when using Windows NT or later, introducing this layer, doesn't cause a performance cost.

However it should also be noted that, MSLU not essentially will give the obsolete windows 9x versions, the same multilingual support that the later versions of windows provide. The application does get a Unicode face from MSLU, but still has to deal with a non Unicode operating system internally.

Thursday, March 26, 2009

Whistles!

Having all the unnecessary functionalities to a software is not a good idea at all. For a professional user what is needed should be there and no more. Though the memory and hard disk are cheap now, that should not be considered a license for you to create a bulky application that will consume more memory and disk space unnecessarily. Still the small and handy applications that are effective and efficient are top on the list pushing all the other business giants down the list.

Having an application that satisfies the users' needs, still free and open source, is easy to maintain and upgrade in performance scale. That's why we always prefer and recommend some open source projects over the other. This is a nice topic to talk and I have decided to discuss deeply some such applications specifically, on a later post.

Tuesday, March 24, 2009

Event Notifier Service for LEAD System

EventNotifierServce is a notification system developed for LEAD [Linked Environments for Atmospheric Discovery] System developed at the extreme labs of Indiana University.
When a scientist runs a workflow, he can provide his interested events to the EventNotifierService with a notificationAddress. The service will listen to the workflows invoked by the scientists and notify them when an interested event occurs. Hence the Scientist can leave the system as he adds a request to listen to a particular workflow in the LEAD System, and hence his time will be saved.


Requirements
The program is tested to be run in Windows XP and Linux environments.


Setting up the event Notifier Service [More updated information can be found here.]

1. Download the Event Notifier Service from the SVN Tree:
https://svn.wso2.com/projects/lead/repo/event-notifier/
You will need the authentication password to access this SVN tree.
Alternately, you can download the files as archives from here.
This includes the messagebox code as well.

2. Download and set up the WS-MESSENGER, a messenger service built at Extreme! Labs using XSUL.

3. Configure the parameters included:
You will need to configure these files, which are inside the resources folder.
db.config : This config files contains the details needed to connect to the relevant database
epr.config : This config file mentions the end point reference
MailSender.properties : This properties file mentions the properties of the mail server. Currently the properties file has gmail as the mail server. When chosing the other mail servers or when you create your own mail server, you have to replace this properties file with that specific to your server.

4. Include puretls.jar and notification-types.jar included inside the lib directory into the axis2/lib.

5. Create a database 'EventNotify' and create tables using the db-creation.sql file included inside the resources folder.

6. Manually install the jars included inside the lib directory, and build using mvn. Alternatively you may prefer to use ant to build the project.
wsmg-1.76.1_a5.jar can also be downloaded from the original location:
notification-types.jar is an XMLBeans generated jar file for the given events schema.


You also need to manually download and install three jar files from the sun java web site due to the licensing requirements.


7. Deploy the generated zip file into the axis2 server.



Running Event Notifier Service
1. Starting the Messenger Service
Start Tomcat
Start Messenger

2. Starting the EventNotifierService
Start Simple Axis2 Server

Now the EventNotifierService is ready to be used.


Architecture

EventGenerator
This program includes a simple LEAD simulator which generates LEAD event notifications by reading the log file, leadevents.log included inside the resources directory.
In case of unavailability of the real LEAD system, you may use this program to simulate the system.

For this you have to run the EventGenerator.java included inside the edu.indiana.extreme.www.xgws.eventGenerator package.


Client
Client program included inside the syncClient package can be used to test the service. It will get the WorkflowID, eventsInterested, notificationMedium, and notificationAddress as String input. Here you may give multiple addresses and the eventsInterested as a String with the elements separated by a comma.


Limitation
The default notification medium is assumed to be email, and in case of email, the notifications will be sent as the events are received. In case of the other media, the events will be saved into an events table. If the notification medium is set to email, our program will handle the notification part, that is, it will notify the users as well. But as we haven't implemented the code for the other media, like SMS and IM, the program will save the relevant notification to the events table, and the notification part should be handled separately.

It should also be noted, in case of unavailability of the database the program will run in inMemory mode, where concurrentHashmaps are used to represent the tables, clients, events, and interests.

Tuesday, March 17, 2009

tryLEAD

EventNotifierServce is a notification system developed for LEAD [Linked Environments for Atmospheric Discovery] System developed at the extreme labs of Indiana University. During the stay at WSO2 we (Supun and I) have got a chance to work with the LEAD System, and the project is mostly known as tryLEAD or LEAD Services. During the training process, we first developed a messagebox program using axis2. This Messagebox program was earlier developed using a SOAP toolkit, named XSUL (Web and XML Services Utility Library), at the extreme labs, and our task was really to convert the messagebox service using Apache Axis2. It should be noted, XSUL was also developed by the extreme labs.

Our next task was developing the EventNotifierService.
When a scientist runs a workflow, he can provide his interested events to the EventNotifierService with a notificationAddress. The service will listen to the workflows invoked by the scientists and notify them when an interested event occurs. Hence the Scientist can leave the system as he adds a request to listen to a particular workflow in the LEAD System, and hence his time will be saved.