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.


Transactions
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 http://blockchain.info.

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" (http://en.wikipedia.org/wiki/Bitcoin)


Blockchain

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
/usr/bin/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 http://maven.apache.org/download.html
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.  
(http://nextgenapp.blogspot.com/2010/08/wow-android-prediction-update-my.html, http://nextgenapp.blogspot.com/2010/06/android-prediction.html)

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.

Sunday, March 6, 2011

Installing AIR Runtime on Android emulator

You can find the Air Runtime.apk in Flex sdk, Flash Builder, or Flash CS5.
Then use Android's command line adb tool to install Runtime.apk.  Apk files are Android package files.

On Flash Builder Burrito, the emulator Runtime.apk is at:
/sdks/4.5.0/runtimes/air/android/Emulator/Runtime.apk

On a terminal, go to android sdk platform-tools folder
> cd /platform-tools
> ./adb -e install -r

eg.
> cd /Applications/android-sdk-mac_x86/platform-tools
> ./adb -e install -r "/Applications/Adobe Flash Builder Burrito/sdks/4.5.0/runtimes/air/android/Emulator/Runtime.apk"

After installation, you can go to emulator's settings-> applications -> android applications, you should see "Adobe AIR" as one of the application.

Done.

Saturday, December 11, 2010

Require Flash Builder 4 for Egit and MecurialEclipse yet?

I just tried install Egit and MecurialEclipse on Flex Builder 3, but looks like it is not compatible with Flex Builder 3.  I guess I'll have to upgrade to Flash Builder 4.
I believe Flex Builder 3 is based on Eclipse 3.2.

Wednesday, December 1, 2010