Posts Tagged ‘software’

BigML: a machine learning “sandbox”

Today I just found an interesting website BigML, and it seems to offer a playground for people, especially ML researchers, to experiment standard machine learning techniques on your data set or even on your business.

The main website is here:

You can try the BigML for free in development mode, but I think 1 MB for training data set is pretty restrictive though.


How to Install Eclipse and Android SDK on Ubuntu 10.04 LTS

January 17, 2012 1 comment

Before walking you through the installation process in details, it’s good to know a big picture:

  1. Since Android development needs Java, so we are going to need Java installed on Ubuntu
    • If you are using 64-bit Linux machine (e.g. 64-bit Ubuntu), you may need to install ia32-libs.
  2. You will also need Java Development Tools (JDK), and Eclipse is recommended
  3. The last thing is to install Android Development Tools (ADT) on Eclipse

All the information regarding the installation can be found at the Android developer website

Here is the installation in details:

  1. Install Java
    1. If you are using 64-bit Ubuntu, you will need to install ia32-libs package:
      sudo apt-get ia32-libs
    2. Next, install Javasudo apt-get install sun-java6-jdk

      A tricky part is that when the Java installation almost done, you will need to click <Ok>, which can be done by click in the terminal and press Tab until the <Ok> is highlighted.

  2. Next, you will need to install Java Development Tools (JDK). Eclipse is recommended because there is an Android Development Tools (ADT) plugin available.
    1. Go to
    2. I download Eclipse IDE for Java Developers (both 32- and 64-bit are available)
    3. Extract the downloaded file eclipse-java-indigo-SR1-linux-gtk-x86_64.tar.gz, and you will get the folder called eclipse, containing all necessary files
    4. Since Eclipse is built to be portable, you can move the extracted eclipse folder to any location you want. It is recommended to move the file to your home directory /home/yourusername/
    5. You might want to add the launch icon on the menu, please follow the process here.
  3. Launch Eclipse, we will now install the ADT plugin
    1. go to Help>Install New Software..
    2. According to the ADT plugin page, we will put the URL
      and click Add
    3. Tick the newly added plugin, and click Next until done
  4. Next, we will install Android software development kit (Android SDK)
    1. Download the Android SDK from
      For (both 32- and 64-bit) Ubuntu, you will download android-sdk_r16-linux.tgz
    2. Extract android-sdk_r16-linux.tgz in the home folder (/home/yourusername/)
    3. The extracted folder is android-sdk-linux
    4. Now go back to Windows>Preferences
    5. On the left panel, click Android
    6. In the SDK Location, select your extracted SDK location, which is
    7. Click Apply and OK, wait a few minutes for the program to update
  5. Retrieve all necessary files for SDK
    1. Go to Window>Android SDK Manager
    2. Tick all the Android versions that apply, and click Install packages
  6. Done, So now you may proceed to build a new project!!!

Additional reading can be found from

Plot 3D ellipsoid

August 4, 2011 1 comment

Plot 3D Gaussian distribution? The harder part is to plot the 3D ellipsoid which can be done by calculating the axes (radii) of the ellipsoid from its eigenvalues. Simultaneously, We will get its corresponding eigenvectors which tells how to rotate the ellipsoid. The function ellipsoid(.) can plot canonical ellipsoid, and hence we need to rotate the canonical ellipsoid using the eigenvectors. That is it. Here are some codes adapted from Rajiv Singh’s version.

% plot 3D ellipsoid
% developed from the original demo by Rajiv Singh
% 5 Dec, 2002 13:44:34
% Example data (Cov=covariance,mu=mean) is included.

Cov = [1 0.5 0.3
       0.5 2 0
       0.3 0 3];
mu = [1 2 3]';

[U,L] = eig(Cov);
% L: eigenvalue diagonal matrix
% U: eigen vector matrix, each column is an eigenvector

% For N standard deviations spread of data, the radii of the eliipsoid will
% be given by N*SQRT(eigenvalues).

N = 1; % choose your own N
radii = N*sqrt(diag(L));

% generate data for "unrotated" ellipsoid
[xc,yc,zc] = ellipsoid(0,0,0,radii(1),radii(2),radii(3));

% rotate data with orientation matrix U and center mu
a = kron(U(:,1),xc); 
b = kron(U(:,2),yc); 
c = kron(U(:,3),zc);

data = a+b+c; n = size(data,2);

x = data(1:n,:)+mu(1); 
y = data(n+1:2*n,:)+mu(2); 
z = data(2*n+1:end,:)+mu(3);

% now plot the rotated ellipse
% sc = surf(x,y,z); shading interp; colormap copper
h = surfl(x, y, z); colormap copper
title('actual ellipsoid represented by mu and Cov')
axis equal

Using recursion in MATLAB

July 25, 2011 Leave a comment

This week I wind up with coding sum-product algorithm in MATLAB. All went well, and there were some interestingly simple but powerful techniques I would like to share. We all know that programming function with recursion can save a lot of time, and is a classic technique in C++. I just realized that we can do so in MATLAB too, and the way to do it is very similar to that in C++.

Example1: “Calculate the summation at each node in a binary tree”

I have a 3-level binary tree whose nodes are connected as follows: node1 is the parent of node 2 and 3, node 2 is the parent of node 4 and 5, node 3 is the parent of node 6 and 7. Let’s assume that nodes 4 – 7 are instantiated with number 4, 5, 6 and 7 respectively. We want to calculate for a node n the summation of its corresponding children in the leaf level. Let’s name the function fn_recurs_sum_tree(tree, n) where the variable “tree” is the binary tree structure with node 4-7 instantiated as above, and n denotes the node of interest. More specifically, tree is a cell array of the size 7 x 1, where tree{n} returns the value stored in the node n of the tree. Here is the example of the code

function sum = fn_recurs_sum_tree(tree,n) if ~isempty(tree{n,1})     sum = tree{n,1}; else     sum = fn_recurs_sum_tree(tree,2*n) + fn_recurs_sum_tree(tree,2*n+1); end 

Example2: “Calculate the summation at every node in a binary tree”

What if we want to find the summation at every node in the network? Of course, we would not call the function fn_sum_bin_tree(tree, n) for n=1, 2 and 3 as that would not be efficient when the number of node is large. One technique is to call the function at the root node (i.e., n = 1) so that all the summation is accumulated from bottom to the top. The price to pay is to deal with how to pass the cell array tree into such a function. Here is the example.

function [sum, tree] = fn_recurs_sum_tree2(tree,n) if ~isempty(tree{n,1})     sum = tree{n,1}; else     [sum1, tree] = fn_recurs_sum_tree2(tree,2*n);     [sum2, tree] = fn_recurs_sum_tree2(tree,2*n+1);     sum = sum1 + sum2;     tree{n,1} = sum; end 

Here are some test codes:

% #### example code ######
% initial the tree
tree = cell(7,1);
for n = 4:7
    tree{n,1} = n;

% Calculate the sum for a single node 2
sum = fn_recurs_sum_tree(tree,2)

% Calculate the sum for the whole network
[sum, tree] = fn_recurs_sum_tree2(tree,1)

This technique is very useful when you have to deal with tree. So, hope this helps! Sample codes are made available here:


Just copy all the codes, put them in the same folder, then run example1.

Gmail’s status: POP is enabled for all mail that has arrived since 8/26/06

April 21, 2011 1 comment

This is pretty funny. I don’t know how it happened nor why this can solve it. All I know is this will work out somehow.

Brief descriptions: POP did not download e-mails from Gmail account before a specific date.

Symptoms: I set up POP in Thunderbird and download e-mails from Gmail account. All went well except that e-mails arrived before  8/26/06 were not downloaded to my computer. No matter what I did the emails wouldn’t get downloaded. So I revisited the setting in the Gmail account >mail setting>Forwarding and POP/IMAP>POP Download and I found that it showed “POP is enabled for all mail that has arrived since 8/26/06” which corresponding exactly with the not-downloaded emails in the gmail account. However, I don’t know how to change the date. I ticked at “Enable POP for all mail (even mail that’s already been downloaded)” and saved the changes, but that did not help.

Here is the trickery…I don’t know how or why though. I ticked on “Enable POP for mail that arrives from now on” then save the changes. After that I ticked “Enable POP for all mail (even mail that’s already been downloaded)” then save the changes. Now it works!

Here they discussed the same problems too

Categories: Uncategorized Tags: , , ,

Problems with Gmail and Thunderbird

April 21, 2011 Leave a comment

If your Gmail is full and you think you need to store all your old e-mails to your computer, you may consider using Thunderbird. But you might encounter some problems when using it. Here I collected some links regarding the problems and solutions.

Gmail: Move all emails in trash to inbox

How to Uninstall Thunderbird Completely and Then Reinstall It

“Thunderbird is already running, but is not responding. To open a new window, you must first close the existing Thunderbird process, or restart your system.”

Categories: Uncategorized Tags: , ,

Setting Remote Desktop to Ubuntu from Windows

February 24, 2011 Leave a comment

To set the remote desktop to Ubuntu from Windows machine, there are 2 parts;

1) Setting the remote desktop on Ubuntu machine; the details can be found here. After setting that, you will get IP address of the Ubuntu machine.

2) Setting VNC on Windows machine. I use realVNC 4.1.3 [link] which is free, and I just use the default parameters. Using the IP obtained from 1) to connect to the Ubuntu machine.

That’s it.

Categories: Tutorials Tags: ,