If any of you got the Unexpected element: OPEN_TAG  error with SoapUI version 5.x.x when adding a new project or importing a wsdl, you are not the only one. I tried everywhere to find a solution for it and changing the proxy settings was all I could find. I tried setting the proxy manually instead of automatic or disabling it completely, neither of that worked.

One thing that worked was uninstalling version 5.x.x and installing version 4.5.x. Drop a note if you were able to make it working with 5.x.x.

koken.me

I accidentally stumbled upon Koken.me when I was looking for custom gallery solutions for my website. Koken looks promising and is built with photographers in mind. Koken requires PHP 5.2 or higher, MySQL 5 or higher and ImageMagick or GD on the server. The instructions given on Koken’s site is pretty explanatory for installing it on your server.

Once Koken is installed on your server, photos & videos can be imported into your Koken library from your local machine or from other sources such as Instagram, Vimeo or by using a direct url to the media file. The most attractive feature is the Export Plugin for Adobe Photoshop Lightroom. I installed the plugin in Lightroom 4 and it worked flawlessly importing the title, description, tags and EXIF information to my Koken site. The plugin can be downloaded here or by visiting Store->Lightroom in your Koken site.

The Library component of a Koken site is similar to the Library section of Adobe Photoshop Lightroom and it’s pretty easy to use. It allows you to categorize your imported photos into albums. All albums you create are public by default, there is just one Private category where you can drag and drop your photos to mark them private. Koken at the moment doesn’t allow password protected folders; there are a few hacks online, but haven’t tested them yet.

Koken Library

Koken Library Component

The Text component allows you create Essays as Koken calls it or in other words to create Blog Posts, Pages or Stories about a photo shoot or a video shoot or share more information about a specific photo or video.

Koken Text

Koken Text Component

The Site component allows you to change themes, add links and customize the style of your theme further using custom CSS.

Koken Site

Koken Site Component

The Settings component is to fine tune to your configuration and edit the settings on your plugins.

Koken Settings

Koken Settings Component

Finally Store component lets you download/buy plugins and themes. The paid themes were pretty expensive in my opinion and there weren’t many plugins either.

Koken Store

Koken Store Component

I liked the free themes, but wanted to try my hand in creating a new theme for Koken. Koken themes are built with Lens templates and I created a language package on GitHub for Atom editor that supports Koken Lens templates (Lens files are just an extension of basic HTML files).  The theme is currently in progress and I would update you all once it’s ready.

With all that said, give Koken a try and shout out below on your experience. Also please visit and bookmark my Photo Gallery hosted with Koken.

Last week, I made my first contribution to an open source package on GitHub called youtube-dl. youtube-dl is a multi-platform command line program written in Python that lets you download videos from YouTube and other sites. The complete list of supported sites is listed here.

I followed the instructions given in the package and this post for my development, they both describe in detail on how to add a new extractor to youtube-dl. The code is just 60 lines, but it feels like I have accomplished something great.

I primarily use this program in conjunction with Omxplayer on my Raspberry Pi to play videos from various sites. I would write on how to achieve that in a future post.

This is my umpteenth attempt at getting my blog started. As with every attempt, I tried to change the theme, font and colors, but this time (after fiddling with it for 1.5 days) I realized that I would never be satisfied with the layout. So I decided to leave them as it is and customize once the viewer count goes to double digits.

I aim to post coding tips, home automation projects and share some of the photographs I shot.

Just for fun, here is the Wikipedia article on how to write a “Hello World” program in almost every programming language known to mankind.

My first compilation was on Ubuntu 7.04 installed on VMware as guest and i was testing it with Win XP Pro as the host. libjingle worked great for me.

I followed the links given below to compile libjingle on Ubuntu 7.04 (Feisty Fawn)

http://groups.google.com/group/google-talk-open/browse_thread/thread/bf92d054c144f167

http://www.francisrobichaud.com/index.php/2007/05/22/guide-to-compiling-libjingle-040/

  1. First install all the build tools.

    sudo apt-get install build-essential

  2. Install all the dependencies.

    sudo apt-get install libexpat1 libexpat1-dev libspeex1 libspeex-dev libssl-dev openssl
    sudo apt-get install libasound2-dev

    This step is important, otherwise libjingle make would give an error when you want to compile with speex.

  3. Download and install the following packages

Now download the libjingle from Google Code

libjingle-0.4.0

tar zxf libjingle-0.4.0.tar.gz
sudo mkdir /opt/libjingle
cd libjingle-0.4.0
./configure –prefix=/opt/libjingle

The output you get would be like this:

libjingle 0.4.0

Supported Examples: call pcp
Supported Codecs:
Speex: yes
iLBC: yes
MULAW: yes

Continuing with instructions

make

You wud get errors when compiling with gcc other that version 4.0.x. Feisty has version 4.1.2 installed by default and Gutsy would have a higher version i believe. You dont have to install gcc-4.0.0 or gcc-4.0.4 to make libjingle work. You just need to tweak the source code a bit.

  1. Change line 272 in talk/base/stringutils.h

    inline static const char* Traits::empty_str() { return “”; }

    to

    inline static const char* empty_str() { return “”; }

  2. Change lines 26 & 27 in talk/base/base64.h

    static const std::string Base64::Base64Table;
    static const std::string::size_type Base64::DecodeTable[];

    to

    static const std::string Base64Table;
    static const std::string::size_type DecodeTable[];
  3. Change line 141 in talk/xmpp/xmppclient.h

    std::string XmppClient::GetStateName(int state) const {

    to

    std::string GetStateName(int state) const {
  4. Change line 159 in talk/p2p/base/sessionmanager.h

    buzz::XmlElement* SessionManager::CreateErrorMessage(

    to

    buzz::XmlElement* CreateErrorMessage(
  5. The corrections suggested above would allow you to compile libjingle, but file transfer application will not work without the correction specified next.

    The pcp example will not correctly run giving the error (on the file ‘receiver’):

    File transfer started.
    Get temp failed

    File transfer failed
    session.cc(377): state_ == STATE_RECEIVEDINITIATE @ ChooseTransport
    Aborted (core dumped)

    Change the following function in talk/base/unixfilesystem.cc

    bool UnixFilesystem::GetTemporaryFolderI(Pathname &pathname, bool create,
    const std::string *append) {
    pathname.SetPathname(“/tmp”);
    if (append) {
    pathname.AppendFolder(*append);
    if (create)
    CreateFolder(pathname);
    }
    }

    to

    bool UnixFilesystem::GetTemporaryFolderI(Pathname &pathname, bool create,
    const std::string *append) {
    pathname.SetPathname(“/tmp”);
    if (append) {
    pathname.AppendFolder(*append);
    if (create)
    CreateFolder(pathname);
    }
    return true;
    }

Now all the corrections are done. Its time to compile.

make && make check
sudo make install

Testing libjingle

  1. Testing File Sharing Application

    To start the receiver
    /opt/libjingle/pcp -d

    Enter your login details

    JID: “gmail address”
    Password: “gmail password”

    The received files are saved in the directory where you start the program pcp from. Once all the files have been transfered the program quits.

    To start the sender

    /opt/libjingle/pcp -d “files” “receiver_id”

    JID: “gmail address”
    Password: “gmail password”

    Once all the files have been sent, the program quits.

    To test both on the same computer start the sender and receiver from 2 separate directories. You can ignore option -d to avoid messages on terminal.

  2. Testing call application

    /opt/libjingle/call

    Enter your login details

    JID: “gmail address”
    Password:
    “gmail password”

    Type the command roster to get the list of friends on google talk.

    roster

    Roster contains 1 callable
    abcd123@gmail.com “status”

    To make a call to the person who is on roster use the command

    call abcd123@gmail.com

    quit

* The quotes should not be added while entering file names, email addresses or passwords. The double quotes are shown just to highlight those items.