Wednesday, December 16, 2015

Appengine jar files problem (appengine, java, eclipse)

After importing an appengine project into eclipse from git, you may run into some appengine jar problem.  some appengine jar files may not be included yet.

disable and re-enable "Use Google App Engine" (in project->properties).
This should re-add the jar files.

Friday, December 4, 2015

where to download objectify jar

Download it from maven central repository.

You may also need to include its dependency libraries, guava.

Obviously, we can directly include it by adding it to maven pom, but some projects may not run maven.  so we still need the jar file.

Objectify jar used to be available from google code (, but google code has closed.

Tuesday, November 10, 2015

Put google appengine eclipse project on git

There are some sample .gitignore for eclipse project out there.  However, if you are doing a google appengine eclipse project, don't use those .gitignore.  The easiest thing is to include .classpath, .settings/, and .project in git for the appengine eclipse.   That way, when you import project, it will still work.  

However, your version of appengine jars may be different.  So you may want to change the jar files in war/WEB-INF/lib/

Wednesday, May 8, 2013

Bitcoin Mechanics

Here are a little bit of info about Bitcoin's inner workings.  

Note I am still a newbie in bitcoin.  I appreciate your help in correcting and editing it if you find any issue.

All transactions in bitcoins are public.  This is how bitcoin system prevent someone from double-spending a coin as all transactions are public and viewable by everyone.  

One place to view the info of each these transaction is

When you sends a bitcoin, you will sign the transaction with your private key.  Your public key is known to others, so others are able to verify that you are the sender using your public key.  Along with the transaction, you will also sign the transaction whereby you receive the bitcoin.  That way, your previous ownership of the coin can be verified so we know that you had the ownership of those coin you sent.

Proof of work

Proof-of-work is a task/work that require certain computation efforts, but is rather easy (computationally small effort) to check that the effort is made.  

Proof-of-work was proposed for stopping spam by requiring the sender to do a proof of work.  To most sender, the additional computational effort is not detrimental.  But to spammers who need to send millions or billions of email, the computational effort in every proof-of-work adds up quickly.  It becomes a deterrent to them.  

A proof-of-work may be taking a string, and finding an appending string that can be hashed into a hash with a certain number of proceeding 0s.  

Bitcoin uses proof-of-work in bitcoin mining.  The following explanation comes from Wikipedia.
"The mining process or proof-of-work process involves scanning for a value that when hashed with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required, but can always be verified by executing a single hash" (


The new transactions has to be incorporated into bitcoin blockchains.  The mining node will take the transaction records, and find a "proof" (a string of numbers) that combined with the transaction records, will generate a hash with a certain number of proceeding 0s.  This will require a lot of tries and guesses to find that proof.  Once that is found, the miner can add a reward to it, where by they get reward for doing this work.  This is called bitcoin mining.

Friday, October 14, 2011

Maven Install on Mac

On Mac OS X 10.6, you will likely find maven already installed.

To check:
> mvn --version

> whereis mvn

> ls -l /usr/bin/mvn
lrwxr-xr-x  1 root  wheel  24 Feb 26  2010 /usr/bin/mvn -> /usr/share/maven/bin/mvn

Most likely, your mvn is linked to /usr/share/maven/bin/mvn

> ls -l /usr/share/maven
lrwxr-xr-x  1 root  wheel  23 Oct 13 18:14 /usr/share/maven -> java/apache-maven-2.2.1

However, you may want to install a particular version of maven rather than the version 

Simply download maven at
uncompress the file to get apache-maven-2.2.1 folder.  place that folder inside /usr/share/java/ folder.  

Remove the original /usr/share/maven link and link it to the new maven version. 
> sudo rm /usr/share/maven
> sudo ln -s /usr/share/java/apache-maven-2.2.1 /usr/share/maven

To check that things are done correctly:
> ls -l /usr/share/maven
> mvn --version

Thursday, July 21, 2011

Javafx 2.0

Javafx 2.0 beta is released.  GA is scheduled in Q3 2011.

The big change is they finally get rid of javafx script.  Javafx will now uses Java as its language.
This is a welcoming change.  Quoting Javafx PM in oracle: "most java developers want to use the same language to develop their UI".
Potentially, this enables developers to build web applications where frontend and backend use the same language. 

Monday, April 25, 2011

Android Tablets Prediction - Android Tablets to surpass iPad

Earlier last year, I predicted that Android will surpass iPhone in sales volume.  The prediction was proven correct.  

Now, I want to put forward another prediction.  Android tablets will surpass iPad sales just like Android phones surpassed iphone sales.  It may take a year or two, but it will eventually happen.

The reason is simple.  The combined innovation of multiple players will eventually overtake one single company.  As long as Apple's iOS remains a closed system, the result will be inevitable.  The history will likely repeat itself.

When I gave the prediction last year about Android will surpass iPhone, I did not think it was a difficult prediction to make.  But many many people were very skeptical about that prediction.  With the Android's success, I have a higher confidence level about my prediction this time and I certainly think there will be less skepticism about my prediction this time around.  

Let's see how things play out.