Thursday, October 7, 2010

Updates & Senior Project

I'm currently working on finding time to get my webpage updated. I'm also working on learning PHP and MySQL, because I have a new job as a student programmer. Check my Resume in the menu on the right to learn more. Also notice I added two writing samples, and all the poster I've authored and co-authored if you're interested in hiring me! You can also check out my personal blog! All the links are in the menu to the right.

This year I am a senior. That means a fourth year or last year student (whichever comes first?). As a requirement for my graduation (which happens next May, brr!), I am supposed to spend the entire year (both semesters) doing research on a project, make some discoveries (or write a cool program etc.) and  publish them. By publish I don't mean in a real publication necessarily, although that would be great, but for the school. In any case, right now I have two ideas, and I'm inclined to pick the first one as being more feasible and publishable (and more "academic"), although the second one has its merits too (it's cool and a lot of people who have no experience in the field would probably be more excited about it than about the other one).

  • My first idea is Image Near-Duplicate Detection: on a collection of images, given a new image, determine whether it's a modified copy of other images in the collection. The work to be done on this idea is basically improving on already existing methodologies, or finding a similarity measure that hasn't been used before and proving its superiority to already established means (or using it in conjunction with them). It is an interesting project, has good chances of actually being published (in a dedicated publication) and can be done entirely in Matlab (that is I know exactly what to do it in).

  • The other idea is 2D Freeform to 3D Model Conversion: a way to create 3D models by drawing in 2D and/or using 2D strokes. The beautiful part about this project is that anyone can understand it-- use a computer algorithm to transform 2D drawings, maybe in connection to some predefined strokes, into 3D models that can be imported into 3D graphics software such as Maya, Blender or 3D Studio Max for further editing. It would be especially cool since at my small liberal arts college, there are a lot of artists that could appreciate such a project. There has been significant work on this idea also, but what is fun about it is that it gives me an opportunity to be really creative -- the way the transformation is done can be anything! The  problem is that if it is anything, then it might not be publishable in a serious publication. Also, I have no idea what to write the program in, and the project might require me to buy at least a tablet for it.

In fact, I believe the main difference between the two ideas is that one is more likely a research idea,
whereas the other one is more of an implementation idea. Neither one is necessarily better suited for a senior project since a senior project can be either a research application or an implementation application. I am still in doubt, and I have to decide pretty fast.

I also have to write about what I've been doing last summer, but maybe in a new post. You can look at the Clemson poster to get an idea before that.

Wednesday, May 12, 2010

WordPress with LAMP (Ubuntu, tested in 9.04 and 9.10)--incomplete

I have started my internship at Human Rights First (HRF), with the task of revamping their website and moving it to a WordPress platform. The only problem being that I've never worked in WordPress before (d'oh, my blog is on Blogger!), so I had to start learning. And the first step was setting up WordPress on a local Linux machine.
This thing took way too much, because for some reason Ubuntu versions 8.10 and 9.10 doesn't recognize my wireless card, or when it does it just wouldn't allow me to click on "enable wireless"... Really frustrating, especially since I had decided to change my current (WORKING!) installation to 9.10, the most recent one. And it took me a looong time to realize that the working installation was 9.04, not 8.10, because I was beginning to think I destroyed something... Anyway, after using a virtual remote Ubuntu 9.10 server at www.linode.com (HRF bought some space there) and using putty and winscp to install LAMP and eventually WordPress there (which proved to be more complicated than necessary since I only had a command line and most online instructions use GUIs), I managed to become an expert in this (from the command line) and got the chance to prove that to myself last night after I managed to reinstall Ubuntu 9.04. It only took 15 minutes, including the download time!!!

Linux
I will assume you have a working version of Ubuntu. If you want to be able to uninstall ubuntu at any time without destroying your Windows boot, I suggest you use Wubi: http://wubi-installer.org/.

First off, let me show you something neat: http://repogen.simplylinux.ch/. This cool little website lets you choose where your Ubuntu package gets its updates.  Choose country and distro. I suggest you select everything up to 3rd Parties Repos, but except for Proposed and Backports in Ubuntu Updates (we don't want to destroy our linux installation!). You can decide what's interesting in 3rd Parties Repos. Click generate. Copy the text. 
Since nano is the easiest way to edit text in the terminal and you need administrator priviledges that can only be achieved with sudo in order to edit this file (I don't know why but my distro just says I cannot save the file because I'm not admin instead of asking me for the password, and all other versions did the same), I will use nano to edit my setup files. But feel free to use whatever you'd like. Open the terminal and write:
$ sudo nano /etc/apt/sources.list
Press enter. Input your password and press enter. You will have to delete the contents of this file (fastest way to do this in nano is Ctrl+K as it erases each row, but be careful cause I think it cuts, so you'll have to copy the repos again). Paste the generated repos. Close the file (Ctrl+X), you will be prompted to save, say yes (y), you will be asked about the name of the file, press enter without modifying anything.
Now, in terminal, do a:
$ sudo apt-get update
Press enter.
Now, we are ready to install LAMP. I'm basically using this tutorial: http://www.supriyadisw.net/2006/12/lamp-installation-on-ubuntu, with a hint of

Apache
In terminal, write and press enter:
$ sudo apt-get install apache2

PHP
Install PHP:
$ sudo apt-get install php5 libapache
Restart Apache:
$ sudo /etc/init.d/apache2 restart
MySQL
Install MySQL Server:
$ sudo apt-get install mysql-server
During the installation, if prompted, select a password for user.
Remove connection to localhost restriction:
$ sudo nano /etc/mysql/my.cnf
Find the line bind-address = 127.0.0.1 and comment it out (remove the ; ) then save the file.