Monday, December 15, 2014

SOAPUI 5.0.0 hangs after upgrading OS X to Yosemite

After upgrading to the company's Mac OS X to Yosemite, SOAPUI 5.0.0 refuse to load properly. It will start, and the UI will come up, but it just hang with the spinning wheel right away.

I was able to resolve this issue by uncommenting the line #53 in $SOAP_HOME/bin/

#   JAVA_OPTS="$JAVA_OPTS -Dsoapui.browser.disabled=true"

I hope this help someone else out there who has the same problem, and also for myself to reference again if face with the same problem in the future.

Sunday, April 6, 2014

Getting edx devstack to run on Windows

1) Fix issue

2) Change Vagrant ansible-play command to

ansible-playbook -i localhost, -c local vagrant-devstack.yml --tags=deploy -e configuration_version=master -e edx_ansible_source_repo= -e edx_platform_repo= -e edx_platform_version=master -vvv

3) Fix symbolic link issue
 # You need to run this from cygwin, not the Windows command-line (see above)
 git rm --cached -r . && git reset --hard
 git config --global alias.add-symlink '!__git_add_symlink(){ dst=$(echo "$2")/../$(echo "$1"); if [ -e "$dst" ]; then hash=$(echo "$1" | git hash-object -w --stdin); git update-index --add --cacheinfo 120000 "$hash" "$2"; git checkout -- "$2"; else echo "ERROR: Target $dst does not exist!"; echo "       Not creating invalid symlink."; fi; }; __git_add_symlink "$1" "$2"'
 git config --global alias.rm-symlink '!__git_rm_symlink(){ git checkout -- "$1"; link=$(echo "$1"); POS=$'\''/'\''; DOS=$'\''\\\\'\''; doslink=${link//$POS/$DOS}; dest=$(dirname "$link")/$(cat "$link"); dosdest=${dest//$POS/$DOS}; if [ -f "$dest" ]; then rm -f "$link"; cmd //C mklink //H "$doslink" "$dosdest"; elif [ -d "$dest" ]; then rm -f "$link"; cmd //C mklink //J "$doslink" "$dosdest"; else echo "ERROR: Something went wrong when processing $1 . . ."; echo "       $dest may not actually exist as a valid target."; fi; }; __git_rm_symlink "$1"'
 git config --global alias.rm-symlinks '!__git_rm_symlinks(){ for symlink in `git ls-files -s | grep -E "^120000" | cut -f2`; do git rm-symlink "$symlink"; git update-index --assume-unchanged "$symlink"; done; }; __git_rm_symlinks'
 git config --global alias.checkout-symlinks '!__git_checkout_symlinks(){ POS=$'\''/'\''; DOS=$'\''\\\\'\''; for symlink in `git ls-files -s | grep -E "^120000" | cut -f2`; do git update-index --no-assume-unchanged "$symlink"; if [ -d "$symlink" ]; then dossymlink=${symlink//$POS/$DOS}; cmd //C rmdir //S //Q "$dossymlink"; fi; git  checkout -- "$symlink"; echo "Restored git symlink $symlink <<===>> `cat $symlink`"; done; }; __git_checkout_symlinks'
 git rm-symlinks
4) Before running `vagrant provision`, comment out the checkout and clean resets (if left in playbook, it will resets the above fix)


Monday, January 20, 2014

Co-working spaces in Hong Kong - - (no longer in operation)
Cocoon -
the Hive -
The Good Lab -
Fill in the blank -
PaperClip -
80/80 Space -
The Loft -

Play Framework 2.2.x + Twitter Bootstrap 3 + Less

There are a variety sources of How-Tos on the internet which shows how to integrate Less version of the Twitter Bootstrap into Play Framework which involves prefixing the Bootstrap files with "_". However, this is not necessary by specifying the lessEntryPoints key.
  1. Put source of bootstrap/less under app/asset/stylesheet/bootstrap
  2. Create app/asset/stylesheet/main.less with the following entry: import bootstrap/bootstrap.less
  3. Add lessEntryPoints key to build.sbt: play.Keys.lessEntryPoints <<= baseDirectory(_ / "app" / "assets" / "stylesheets" ** "main.less")
Reference: Configuration Section in

To find out whether you have configured it properly type play-less-entry-points in the Play! console and you should only see one entry.

Thursday, September 12, 2013

Immersing myself in data and database

With the buzz of Big Data, is it coincidence or deliberate measure on my part to learn more about database?

This week I finally complete the 7 week online course - M102: MongoDB for DBAs. A great course offered by MongoDB Inc. (formerly known as 10gen).

Not only do I get to learn about MongoDB, it also help me brush up on basic DBA stuff as well as infrastructure architecture for data storage.

As part of my job, I got to attend a the "DB2 10 for Linux, Unix and Windows Fundamentals" offered by IBM here locally in Hong Kong. I wasn't too excited on the first day about typical DBA administrative task, but the second day got more interested. From the course, I get to learn more about the theory behind column-based database and some basics around how DB2 implemented with their fancy name BLU Acceleration. 

Another interesting topic is Temporal Table feature in DB2. After some Googling, Temporal Table has been standardized into the ISO/IEC 9075:2011 or SQL 2011! It is already yesterday news. Even opensource database such as PostgreSQL supports Temporal Tables. I still recall those days manually doing it in the application layer, then later using Hibernate Envrs or EclipseLink History Policy and thought I was cool. Now this stuff is natively supported in standard SQL.

Sunday, July 21, 2013

Got my M101J: MongoDB for Java Developers Certificate

M101J: MongoDB for Java Developers is a 7 week course. The courses was well taught. I am now officially NoSQL certified!

Sunday, April 14, 2013

Exploring Cloud Foundry with Spring Stack + Vaadin

Update 2013/07/21:
Since Cloud Foundry deprecated its free-tier on 2013/07/01, the sample application went offline. As of today, I have successfully migrated the application to Redhat's OpenShift.

I have been reading about Cloud Foundry for a while and finally got around to trying it out.

Cloud Foundry provide an interesting cloud play which isn't quite the same as PaaS pure play such as Google App Engine and, while provide way more tools and support then a IaaS such as Amazon EC2.

The Test Application

To test out cloud foundry, I decide to build an application that has a Web UI component and also a periodic schedule background job component.

About a year ago, I read about the Hong Kong Government Data.One project, a similar project to other initiative around the global where Governments make public data more accessible to the people. Although Hong Kong Government is quite a bit behind in this area, I am very happy to see actual progress are being made and more dataset are being added.

With this resource, I decide to build a application that pull changes from the Restaurant License data set from  the Food and Environmental Hygiene Department every day and import in into a database and track the changes.

Basic Components and Technology Overview

The application is deployed on Cloud Foundry - (Unfortunately cloudfoundry ended its beta/free-tier, and as a result the application is no longer available).

The UI is quite primitive right now, but it is setup to import data daily and the changes are tracked using EclipseLink History Policy feature. After collected some more data, it might be interesting to see what are the latest restaurants in Hong Kong daily, and create some interesting visualization base on this the historic data.

Impression of Cloud Foundry

While Cloud Foundry is still in beta, so some problems was expected. When I first it out, I did encounter some problems trying to build a standalone app to do period import from an external data source. I did manage to get over the problem, by re-installing Ruby and VMC, but what happened exactly is still a mystery.

As far as I know, we can only deploy standalone application using the VMC tool. The VMC tool is build on top of Ruby. I am no expert in Ruby, but I believe Windows isn't a first class platform for Ruby. For example the very useful RVM, tool to deploy and manage multiple version of ruby, isn't available on windows. I know there is pik, but there are some oddities with it and it feels unpolished, even for a command-line tool. Besides, it appear abandon with no significant update to the project for 2 years, 45 outstanding issues and some outstanding issues date back 3 years.

Having said the above with the VMC tool, deploying Web Application is a breeze due to its amazing integration with Springsource Tool Suite (STS)! Re-Deploying the Web application is as simple as a click!

In conclusion, I think the technologies behind Cloud Foundry is an interesting one. Because the technologies are open source and widely adopted, such as PostgreSQL or MySQL vs GAE's proprietary datastore, this provides a very enticing no-lock-in ecosystem which Enterprise customer may found very attractive. The no-lock-in is fundamental to the promise of Cloud Foundry due to the opensource technology stack supported by its cloud and its opensource tool set design to interact with it. Few companies has sprung up based on Cloud Foundry such as AppFog, Tier 3 and AppClound by Uhuru Software, Inc. As they are based on the Cloud Foundry, the migration from one provider to another should be relatively straightforward.

I am familiar with Google App Engine and Amazon EC2. I am not that interested in due to it proprietary language. Here are some interesting cloud I would like to try and learn more about:

  1. OpenShift
  2. Azure
  3. OpenStack
  4. CloudBee
For Openshift and Openstack, I am not even sure whether it is a PaaS or IaaS play, so there are lots to learn. Do you know of another PaaS or IaaS provider that I should take a look?