Welcome | 欢迎/歡迎 | Willkommen

I am a PhD candidate in Computer Science, with minor in Electrical Engineering. I am now looking for a faculty position (tenure track or non-tenure rack) in Computer Science and/or Electrical Engineering, or similar or related fields. My main research experience is on artificial intelligence and medical image and signal processing. I can start as early as fall 2012. Please do drop me a line if you know such positions at

selected peer-reviewed full papers Curriculum Vitae (at Google Docs) Full publication list (at Google Scholar)

Choice rule not choosing

The two answer set programming (ASP) programs below are different.

Program 1

1{a(D):b(D)}1.

b(x).
b(y). 

Program 2

1{a(D)}1 :- b(D).


b(x).
b(y). 

To understand their differences, see their answer sets respectively.

Answer set(s) for program 1

Answer: 1
b(x) b(y) a(y) 
Answer: 2
b(x) b(y) a(x) 

Answer set(s) for program 2

Answer: 1
b(x) b(y) a(y) a(x) 

Now I think you have figured out. The condition in choice rule plays a role.

Why knowledge representation matters

Knowledge representation (KR) is a branch of AI, but not at hot/popular/attractive to young AI researchers as other fields, such as machine learning (ML).

However, it matters. (I will explain later in this post why it is not as popular as machine learning.)

Allow me to use one example. I am writing an email to Dr. H. I usually write to Dr. H while CC'ing to Dr. X on issues about research topic A. But today, I do not CC to Dr. X but Dr. Z because today's email is about research topic B.

Gmail, maybe using some statistic strategy, thinks I put Dr. Z by mistake and suggests me to put Dr. X in the CC field.

SSH log-in without password

by Forrest Sheng Bao http://fsbao.net

SSH has a cool feature that you can use your security key to authenticate rather than your password. In this way, you don't have to enter password all the time. Here is how you can do that.

  1. Run
    ssh-keygen

    command on your Shell/Terminal. Follow the instructions. It will generate your public key and private key pair. 

  2. Run
    ssh-copy-id user@host

    to send your public key to the host. 

  3. Now try to connect to the server and you should not be asked for password again. 

References:

  1. http://pkeck.myweb.uga.edu/ssh/
  2. http://linuxproblem.org/art_9.html

    Trimming suffix or perfix of a string in Shell

    by Forrest Sheng Bao http://fsbao.net

    How to trim/truncate a string in Linux? Especially when it is a path or file name?

    See this demo below.

    test="~/bin/test_label"
    
    echo ${test%_label} # the percentage sign means from the end
    
    echo ${test#?/*/} # the pound sign means from the start 

    Save it as a Shell script (e.g., test.sh) and test it on your Shell:

    $ sh test.sh 
    ~/bin/test
    test_label
    

    Got the idea?

    This is very simple string matching, where question mark and asterisk have their normal meanings in UNIX regular expression.

    Adding two SCALARS in POINTDATA for one vtkPolyData object in VTK

    by Forrest Sheng Bao http://fsbao.net

    In VTK (either the file format or the library), we sometimes associate more than one scalars to points. I just figured out how to do this in VTK (in C++, similarly in its Python, Tcl or Java wrapper).

    Suppose I have a vtkPolyData pointer

    vtkPolyData* mesh;
    

    and two vtkDoubleArray (you can consider a vtkDoubleArray as a list of scalars) pointers

    vtkDoubleArray* depth; 
     vtkDoubleArray* curv; 
    

    This is how I do it:

    depth->SetName("Depth");
    mesh->GetPointData()->SetScalars(depth);
    curv->SetName("Curvature");
    mesh->GetPointData()->AddArray(curv);
    

    You may test this by writing mesh into a VTK-format file:

    vtkPolyDataWriter* writer=vtkPolyDataWriter::New();
    

    Fixing Firefox plug-in container problem by forcing it to crash

    by Forrest Sheng Bao http://fsbao.net

    I use two important plug-ins in Firefox, Adobe PDF reader and Flash player. But they sometimes do not work after having been used in Firefox for a while. The embedded PDF reader gives you a black blank after you open several tabs of PDF files. The embedded Flash player just doesn't play movies after a while. Restarting Firefox doesn't always work.

    I just found out a solution - killing the Firefox plug-in container to force it to reload. First (optional, for advanced users), find out the plug-in container.

    $ ps -A | grep plugin
    29981 ?        00:00:07 plugin-containe
    30024 ?        00:00:00 plugin-containe

    The RIGHT code to enable MathJax on your website

    by Forrest Sheng Bao http://fsbao.net

    I started using MathJax to display math on my blog (Drupal and Google Blogger) recently. OMG, my life is much easier. LaTeX is easier to type math than MathML and MathJax does not render math into pictures but vector symbols.

    But I noticed two problems.

    1. Firefox for Linux has a little problem with the Javascript code on MathJax official instruction. The fonts are odd - no such problem on Chrome for Linux.
    2. MathJax's official instruction does not work for Blogger's HTML template.

    Then I found out this instruction that fixed both of my problems:

    Happening sequence for plans with both simple and durative actions in PDDL2.1

    by Forrest Sheng Bao http://fsbao.net

    I have been struggling with a definition in an important paper about temporal planning in past few weeks. And today i finally understand it with the help of one of the authors. In his words, this definition is sorta counter-intuitive. So I am now writing this blog and hope it will help others struggling with this as well.

    Accessing matrix elements of different indexes in different rows in Octave or MATLAB

    Here is a tricky programming problem in Octave or MATLAB. Given a matrix A, and another array Y, how to build a new array Z such that

    Z(i)=A(i, Y(i))

    Syndicate content