Repair Artifact Captions when downgrading a Visual Paradigm Project

Lately I was forced to downgrade a Visual Paradigm Project [1] from version 10.1 to version 9.

As stated in the Visual Paradigm Know-How Area ([2]) this could easily be done by exporting the project to XML (note: not XMI) and re-import it in the older program version. But after doing so all of my artifact’s captions were stick to the upper left corner of the diagrams. There was no chance to move the captions to the correct positions but only to replace the artifacts with new ones. But this is a very time consuming (and annoying) task.

Then I found a more automated solution:

  1. Open the exported xml-file with a text editor (like Notepad++ [3]).
  2. Find and remove all caption-tags.
    In Notepad++ this can be done using the function „search & replace“ in combination with the regular expression „“. Replace with an empty string.
  3. Import the modified xml-file in the older Visual Paradigm installation. Now there are no captions shown at all.
  4. Select all elements in your diagram (STRG+A) and simply move the selection a bit. As a result all captions appear at their original positions (inside the artifacts).

Please note: this does the the job for me. But I really cannot guarantee for success on bigger or more complex Visual Paradigm Projects. Just give it a try—if you have to downgrade, there’s nothing to loose :-).

Instance Selection Algorithm: spymemcached vs. memcached-session-manager

I recently evaluated whether to use memcached-session-manager [1] for one of our webapps. Although memcached-session-manager bases on spymemcached [2] for communicating with memcached, I was surprised that it uses a significant different algorithm for selecting a memcached instance (out of a pool of given memcached instances) than the native implementation of spymemcached.


Spymemcached selects the instance by calculating a hash of the element’s key and using that hash to determine the instance. Simplified this could be done by compute:

server = serverlist[hash(key)%serverlist.length]

To distribute the elements uniformly on all nodes often Consistent Hashing [3], e.g. KETAMA, is used as hash function. See [4] for details.


In contrast to that, memcached-session-manager doesn’t use hashing at all – it simply “selects the memcached node randomly” [5] (excluding failover nodes). After that the node id is encoded in the session id like 72d9ffcb00d836b3248d8bd95ce2e641-n1.tomcat1 (“n1”). All further accesses are selected by this value.