Thursday, December 18, 2008

Flight Cancelled

To save money I booked a bizarre flight path to India:

Seattle -> Vancouver -> Hong Kong -> Chennai

This means I had to take a bus from Vancouver to Seattle in order to fly back to Vancouver. In addition, the flight leaves in the morning so I had to stay in a hotel overnight. I couldn't just cancel the flight because that would cancel the connecting flights as well.

The flight from Seattle to Vancouver was cancelled this morning due to mechanical problems. There were no other flights to Vancouver in time for my connecting flight, and taking a taxi/bus probably wouldn't have made it in time either (especially with the snow). The only option was book a completely different flight path which leaves tomorrow:

Seattle -> Paris -> Chennai

Monday, December 15, 2008


Now that exams are finished and I have submitted most of my grad school applications, I should finally have time to work on some projects I have been planning:
  • Vectorization using stochastic local search: I read a cool blog entry about evolving a picture of the Mona Lisa using only 50 polygons. Inspired by the results, I think it would be cool to use stochastic local search to convert an arbitrary image to vector graphics. I will add a parameter to choose the number of polygons. I will try to animate it to show the progress of the algorithm as it optimizes the image representation in real-time.

  • A new version of Arlisy: A generic neural network framework which can be applied to a variety of problems. It will have the ability to detect temporal patterns. I also plan on implementing an attention control mechanism which allows the framework to focus on a subset of its input, similar to the role that attention plays in biological perception by concentrating the use of mental resources on a particular aspect of the environment.

  • Netflix prize: I haven't made much progress since last summer. I am going to try implementing singular value decomposition to combine with my neural network approach.

  • A better version of Swarm: I know the algorithm I used for finding nearest neighbors in the old version can be made much more efficient. This will allow larger swarms to be simulated in real-time. I'll try adding some more advanced behavior rules as well.

  • I am considering competing in the Robotics & Algorithm category of Imagine Cup 2009.

Tuesday, December 02, 2008


Once again it is exam period, so if you are in need of some distraction here are two neat flash games I've found:

Auditorium: awesome concept for a puzzle game. Its a shame there are so few levels in the demo.

99 Bricks: my record is slightly over 700.

I have two exams tomorrow. I should really be studying right now.

Monday, November 24, 2008

Sunday, November 16, 2008

2008 ACM-ICPC Pacific Northwest Contest

Yesterday I competed in the regional ACM programming contest. There were 85 teams competing in our region. Here is the final ranking for the top five places:

1) Stanford
2) Stanford
3) University of California, Berkeley
4) UBC ^
5) UBC *

This was really frustrating because only two teams advance from a region to the world final (which is in Sweden this year). Since only one team can advance per university, UBC was only one spot away from advancing. There is actually still a chance that UBC might get to advance however, since there is a wildcard slot. I was on the UBC * team. We were ridiculously close to solving another problem in the last few minutes. If we had solved it, we would have jumped to 2nd place. We made a submission with about two minutes left which failed because it took too long to execute. However, with a minor modification to the code (just one or two lines) our solution probably would have run under the time limit. Both of my teammates were doing really well during the contest and did the majority of the work. They will both be at UBC next year, so I'm sure that their team will do really well at the next regional. Here were the results from last year's regional:

1) UBC ^
2) UBC *
3) Stanford
4) Simon Fraser University
5) University of California, Berkeley

Friday, November 14, 2008

Grad School Applications

I have finally decided on a list of schools I will be applying to:

University of California, Berkeley
Carnegie Mellon University
University of Washington
University of Illinois at Urbana-Champaign
University of Waterloo
McGill University
University of Alberta
University of British Columbia
University of Toronto

Most of the applications are due mid-December. I have a ridiculous amount of work due in the next two weeks, followed by final exams (which are all within 7 days). Hopefully I'll manage to submit the applications without having to sacrifice studying time. I will be so happy once finals are finished, instantly switching between having an overwhelming amount of work to having absolutely no work at all. Over Christmas vacation I will be traveling around southern India.

Wednesday, November 05, 2008


A few hours ago I was automatically "upgraded" to a new version of Hotmail. I am not picky about what additional features an email client has or how stylish the interface is as long as I can conveniently read/send emails. I have had my Hotmail account for about five years. When Gmail came out I decided not to switch since I didn't want to go through the hassle of changing my contact information. With the newest version of Hotmail I am finally considering making the switch.

When logging into Hotmail I am greeted with this page:
It tells me to upgrade my browser despite the fact that I am using Firefox version 3.0.3, the latest version for Linux. After logging in it takes me two clicks to reach my inbox (which is two clicks too many in my opinion).

This is what happens when I try to compose an email:
Notice that the text formatting buttons are grayed out. I tried clicking on the whitespace below that panel to find that there is no text box. That's right, there is absolutely no way for me to send emails because I don't have any way to enter text. I am probably not the only person with this problem. With the most critical functionality of Hotmail broken, I have no choice but to switch providers.

Wednesday, October 29, 2008


Well the exchange rate has continued rising, making me really regret trading when I did.

The next month is going to be extremely busy/stressful for me:
  • I will have a series of midterms over the next few weeks.
  • I have to send out grad school applications. This includes finalizing my list of schools, filling out applications, and writing numerous essays.
  • I am part of a team for the ACM programming competition. UBC has three teams (UBC^, UBC*, and UBC+). I am part of UBC* (UBC^ is the best team). There is a regional competition hosted by UBC on November 15th. We will have up to 10 hours of practice every week until the regionals. The world finals will be in Sweden in 2009.
  • I have two big papers due in Psychology and Philosophy.
  • All of my exams are packed in between December 3rd through 10th.
  • I have other commitments like my part time job as a TA, assignments, meetings, etc...

Saturday, October 18, 2008



Since my last post about the exchange rate, the US to Canadian dollar rate has been skyrocketing upward. I exchanged money at exactly the wrong time. I won't feel too bad about it though since I had no choice but to exchange in order to pay for tuition. Luckily I only exchanged enough to pay for tuition and left the rest in US dollars. A few days ago I converted the rest of my money:
Hopefully this time the exchange rate won't significantly increase immediately after my trade. Predicting exchange rate fluctuations is frustratingly difficult.

In other news, there have been two separate incidents happen to my bike since it was almost stolen. A few weeks ago the bike was knocked over and the disc brake was severely bent (I had to replace the unit). Since the disc is a fairly solid piece of metal, it must have been deliberately stepped on in order to bend it. This morning I found that the mudguard had been stolen and the seat was also adjusted to a lower position (I am not quite sure why the thief would feel compelled to adjust the level of the seat).

Friday, October 10, 2008

Anathem and GEB

Earlier this week I ordered two books online. I received the books today in a surprisingly quick display of international delivery. Behold:
Neal Stephenson's Anathem and Douglas Hofstadter's Gödel, Escher, Bach: an Eternal Golden Braid. I have very high expectations for both books. I just flipped a coin (really!) and it looks like I will be reading Anathem first. Given the length/density of the books, it should take me quite a while to get through them.

Thursday, October 09, 2008

Smiley Value Decomposition

For an assignment in my machine learning course I performed principal components analysis (PCA) using singular value decomposition (SVD) on some smiley faces:
Reducing the dimensionality of a data matrix of smiley vectors allows us to visualize smiley face features in two dimensions. Yay!

Saturday, October 04, 2008

Exchange Rate

This is a graph of the U.S. dollar to Canadian dollar exchange rate for the last three months:
The red "X" is when I exchanged a lot of money. D'oh!

Friday, September 05, 2008

Somebody tried to steal my bike!

I found my bike tipped over this morning and there was a big cut made into my bike lock. I am glad I invested in a decent quality lock! Bike theft is a pretty big problem at UBC. The cut made it entirely through the outer plastic layer of the lock and partially through the metal interior. I think I will buy another (even more secure) lock since another theft attempt at the weakened part of the lock might make it all the through. There was never a theft attempt on my old bike during my last four years at UBC. This was probably due to the fact that I bought that bike for $20 (significantly cheaper than my current bike). However, some of the accessories were stolen from my old bike (cyclocomputer and portable bike pump). Some of my friends have had pieces of their bikes stolen (a wheel, a seat, etc) and at least four people I know had their entire bike stolen.

Saturday, August 30, 2008


I took the GRE this morning. It started with two writing sections. My essays weren't spectacular, but the topics were interesting so at least I had something to write about. The next section was the math section. I did really well on this and finished just barely on time. I switched the answer for my last question with less than 5 seconds to spare! Next was a verbal section which went about as well as could be expected (English is not one of my strong points). I thought that would be the end of the exam but was surprised when another math section started. My practice tests only had one math section so I was annoyed that the test wasn't finished. This second math section went terrible since by then I was getting tired. I was working way too slow and still had 7 questions remaining with only one minute left. I had to randomly guess for the last few questions. I was surprised to see in the end that my scores were 800 in math and 600 in English. I am really lucky that the second math section must not have been scored. Apparently they put in an extra unmarked experimental section. I will have to wait for the scores to be sent to me before I get the marks for the essays.

Tuesday, August 26, 2008

Internship Finished

I finished my internship at Microsoft last Friday. It has been a great summer. Almost every weekend there was some Microsoft event taking place. I took part in two puzzle events. One of them was non-stop for 36 hours and really well organized (our team came in third)! A few weeks ago I went cave exploring at Ape Cave Lava Tube near Mount St. Helens. Two days ago (my birthday) I saw Dark Knight at IMAX - incredible movie.

On August 30th I will be taking the GRE. I haven't done much studying for it yet, so I plan on studying for the next few days. Over the next semester I will start applying for grad schools. I have decided where I will be applying for six out of my nine applications:

- Carnegie Mellon
- Stanford
- Waterloo
- University of Toronto
- ?
- ?
- ?

The other three will most likely come from this list. I will be applying to AI programs. I am currently planning to focus on learning about pattern recognition. Since I eventually plan on doing industry research, hopefully I can get research internships over the next few summers.

Saturday, May 31, 2008


I have been working for Microsoft for almost a month now. So far it has been a great experience. The company has a ton of amazing benefits and it has been really interesting learning about their software development practices. I am working on a product called Office Live Workspace. There have been a lot of fun intern events such as a poker night, video games, movies, and a trip to the zoo. I have also attended a few research/tech talks on campus. We get all the free drinks we want here and also occasional free food (if you know where to look).

There are a lot of things to see and do around Seattle. A few weeks ago I went to the Pacific Science Center. I think its better than the one in Vancouver. I saw Speed Racer at IMAX. It was pretty dissapointing, but I wasn't too surprised based on its score at IMDB. Yesterday I went to see a Cirque Du Soleil show called Corteo. It was an excellent production, but I liked the Mystère show I saw in Las Vegas better.

I got a new bike earlier this month. There are supposed to be some really nice bike trails in this area, so I plan on exploring a few of them over the summer.

Here is a photo album I will be uploading pictures to over the summer.

Netflix Prize

One of my summer projects will be working on the Netflix prize. It is a competition to write a program to predict user ratings of movies. We are provided with a huge dataset of actual user ratings from the Netflix database. We are also provided with a test set of <user, movie> tuples for which we need to predict ratings. After submitting the predictions Netflix returns the root mean squared error (RMSE) for a subset of the test set. Netflix already has the actual ratings for the test set, which is how they score the predictions. The three submissions I have made so far have gotten the following RMSE:


Netflix's own algorithm (Cinematch) gets a RMSE of 0.9525. In order to win the competition and get the one million dollar prize a team must have a submission with a RMSE below 0.8572. The best team currently has a score of 0.8643. The three submissions I have made so far just use basic statistics for the predictions. I have three main ideas on how to approach the problem - two of them involve clustering algorithms and one of them uses temporal neural networks.

Sunday, May 11, 2008

Temporal Patterns

I have finished implementing a neural network framework for detecting temporal patterns. I made a small demo of it using a single bit input. In theory the framework should scale well to much larger problems with many inputs. It is capable of detecting both spatial and temporal patterns and making predictions of what the next input will be. The framework can be used for a huge variety of applications and problems. I tried testing it for part-of-speech tagging but the results were disappointing. Due to the huge number of neurons/inputs I had to use, the network was taking several seconds to process each input. Since the network needs to be trained on huge corpora consisting of thousands of words, it would take a really long time before it can make accurate predictions. A good property of neural networks is that they are highly parrellelizable so that all of the neurons can be processing information at the same time. On a single CPU my computer processes information for one neuron at a time. Given the right hardware, neural networks can have a constant upper bound on computational time. This means that an arbitrary number of neurons/inputs could be added to the network without affecting the processing time.

Friday, May 09, 2008

First Publication!

A paper I have been working on about AIspace has been accepted for publication at the AAAI 2008 AI Education Colloquium. I will be headed to Chicago on July 13th!

Knoll, B., Kisyński, J., Carenini, G., Conati, C., Mackworth, A., Poole, D. 2008. AIspace: Interactive Tools for Learning Artificial Intelligence. In Proceedings of the AAAI 2008 AI Education Workshop. BibTeX

Friday, April 25, 2008

RoboCup Simulator

Here is a short video of what the simulator I made for the RoboCup soccer competition looks like:


The low quality video is due to the fact that I recorded my monitor using a digital camera. I tried a variety of screencast software (ffmpeg, vlc, xvidcap, istanbul, and vnc2swf) but none of them could capture at decent quality/framerate. I think its time to upgrade my computer (this one is now four years old).

In the video the red team has been assigned the "offensive" strategy and the blue team has been assigned the "dibs" strategy. I haven't implemented all of the RoboCup rules yet (e.g. the ball always gets reset to the center when it goes out of bounds). You can learn more about the AI by reading a report I wrote for one of my classes.

Thursday, February 28, 2008

Meet Jon Arbuckle

Apparently an unfunny comic strip can be made hilarious with some minor modifications. Above we see Garfield minus Garfield. The comic strips below are referred to as Realfield. Making a strip out of random Garfield panels can also lead to some amusing results.

Friday, February 22, 2008


The universe is chaotic. Within the chaos there are patterns. These patterns are due to emergent properties of relatively simple rules underlying the unimaginably complex interactions of matter. Patterns can be found almost anywhere in nature, from the organization of stars and galaxies to the symmetry of ice crystals in a snowflake. This phenomenon is not unique to nature; incredibly complex patterns can be observed by applying very simple rules such as in the Mandelbrot set or in cellular automata. These emergent properties are also responsible for the origin of life on Earth and the evolution which guides it.

M74 Spiral Galaxy

Life is a striking example of the organization of matter. When suitable chemical and physical conditions arose in early Earth, organic compounds eventually organized themselves into a form allowing self-replication. Natural selection takes advantage of patterns in an organism's environment to gradually optimize its suitability for a particular environment. This process has lead to the huge variety and complexity of life forms seen today. The process of evolution has also created patterns within its creations, such as the fractals seen in Romanesco broccoli. Intelligent biological systems have evolved to actively recognize and exploit the patterns in their environment in order to gain an evolutionary advantage. Learning from the success of biological cognition may help in the pursuit of creating truly intelligent machines.

Aloe Polyphylla

A crucial step in designing an intelligent machine is understanding the fundamental ways in which patterns are organized in nature. The ability to accurately predict and complete patterns allows a system to act intelligently in its environment. In order to make predictions about patterns a machine needs to be capable of learning from past experiences and recognizing both spatial and temporal patterns. Almost all current neural network techniques are only capable of detecting spatial patterns and cannot detect patterns through time. The fact that the human brain is capable of intelligence provides proof that intelligence is possible given limited computational resources, giving hope that computational intelligence may be achieved in the near future.

Wednesday, February 20, 2008


This morning I woke up in an extremely unpleasant way. While I was still blissfully asleep I heard some scratching sounds coming from somewhere close to my head. I groggily opened my eyes to see a squirrel staring down at me from the windowsill directly above my bed. In horror I made some loud noises and quick movements with my arms in the squirrel's direction. This successfully got the squirrel to flee out of the window.

Tuesday, February 19, 2008

Reading Week

Reading week has been amazing so far. Today I went on a bike ride to Stanley Park. I went around the seawall and then rode back to UBC. I was having so much fun that I decided to do some biking around Pacific Spirit Regional Park as well. I regret not bringing my camera since there was some beautiful scenery. I have also been watching lots of anime, reading, working on some programming projects, and playing tons of video games. I accepted an internship position from Microsoft, so I am really looking forward to working there over the summer.

Unfortunately our team didn't make the qualifiers for the RoboCup competition in China. We are going to be working on trying to qualify for a regional competition instead. The AI is progressing well. I made a simulator so we can continue working on the AI without needing physical robots. We have finished most of the lower level behaviors so I am going to start making some different playing strategies. Different strategies can be assigned to competing teams, so simulating matches will show which strategies are superior.

Saturday, February 16, 2008

Video Games

After a pretty bad week (which included four midterms) I am looking forward to reading week. Originally I was planning on going on a road trip to the Rockies with some friends but unfortunately I don't think those plans are going to work out. With the free time I will finally get a chance to enjoy some video games I have been waiting to play:

-The Longest Journey (PC)
-Grim Fandango (PC)
-BioShock (PC)
-Final Fantasy XII (PS2)

I just finished installing Windows XP to replace my Vista partition. After struggling to get The Longest Journey working in Vista, I eventually gave up and decided to reformat the partition. It just doesn't make sense for me to be using Vista when the only reason I have a Windows partition in the first place is to take advantage of its compatibility.

Here is a list I compiled of some of my favorite games:

-Legend of Zelda: Ocarina of Time (N64) and Legend of Zelda: Majora's Mask (N64)
-Beneath a Steel Sky (PC)
-Day of the Tentacle (PC), Full Throttle (PC), and The Dig (PC)
-Monkey Island series (PC)
-Myst series (PC)

-Baldur's Gate II: Shadows of Amn (PC)
-Star Wars: Knights of the Old Republic (PC)
-Final Fantasy VI (SNES), VII (PSX), VIII (PSX), IX (PSX), and X (PS2).
-Elder Scrolls IV: Oblivion (PC)
-Chrono Trigger (SNES) and Chrono Cross (PSX)
-Guild Wars (PC)

-The Orange Box (PC)
-Quake (PC) and Quake III Arena (PC)
-Crysis (PC)
-Deus Ex (PC)
-Unreal Tournament series (PC)

-God of War (PS2) and God of War II (PS2)
-Prince of Persia: The Sands of Time (PS2)
-Shadow of the Colossus (PS2)
-Super Mario 64 (N64)
-Another World (PC)

-Advance Wars (GBA)
-Total Annihilation (PC)
-Rise of Nations (PC)
-Sacrifice (PC)
-Black & White (PC)

And for the sake of completeness, here is a list of all the consoles my family has owned:
-Atari 2600 (1977)
-Nintendo Entertainment System (1983)
-Sega Mega Drive (1988)
-Game Boy (1989)
-Game Gear (1990)
-Sega Mega-CD (1991)
-Virtual Boy (1995)
-Nintendo 64 (1996)
-PlayStation 2 (2000)
-Game Boy Advanced (2001)
-PlayStation Portable (2004)

Monday, January 28, 2008


Last Sunday I went out with some friends to see a new ferry that BC Ferries is introducing into the fleet. We got a complete tour of the ferry (including the engine room and the bridge). We also got a free cookie, a drink, and a balloon! One of my friends was interviewed and appeared on the local news.

I had two job interviews last week. The first one was a phone interview with IBM on Monday. I am applying for the Extreme Blue program. The second was an on-campus interview with Google on Friday. I think the Google interview went better than the IBM one. I really don't like phone interviews. They actually made me write code and dictate it over the phone. As I was reading it aloud I noticed mistakes in my code and started trying to correct things. I even started doing crazy stuff like changing variable names and adding features to the code as I was dictating. Of course, this turned out to be a terrible idea since I immediately lost track of what I was trying to do and got confused -_-. I have another phone interview with them in a week, so this time I will try to act a little less flustered.

On Thursday Google invited all the interviewees to a dinner. I thought this was a great event - a good opportunity to learn more about Google, eat free food, and get a Google umbrella. The problems in the Google interview were similar to a typical programming competition. There were three problems which I had to solve and provide time and space complexity. After solving the initial problem, two of the problems had additional twists to make them a bit more interesting.

Today I attended a talk by David Suzuki. I really enjoyed the talk. He is an excellent speaker and covered a wide variety of topics. He started with some background information about his early life and academic career. The main focus of his talk was the potentially negative impact academic research can have on society. He also discussed topics such as Canadian politics, racism, genetics, and ecology. I found it amusing that he voiced a few direct criticisms about UBC. One of these criticisms was the fact that the high tuition fees for international students is not justified and discourages diversity. Another criticism was that UBC Forestry has biased views about logging in British Columbia due to the fact that logging companies are sponsoring and providing financial support to the faculty. After the Suzuki talk I went directly to a presentation by Business Objects. I don't think this is the type of company I would like to work at (I will not be applying for an internship there this summer) but at least there was free pizza.

Wednesday, January 23, 2008

AIspace Release

We have redesigned the CIspace website and changed its name to AIspace. The new website URL is The old CIspace website will continue to exist until March 1st, after which all CIspace URLs will be automatically forwarded to AIspace. Here are some of the technologies I used to redesign the site:

- Server Side Includes: using SHTML, common sections of the website were placed into a single file instead of duplicating the code for each webpage. This allows site wide changes (such as adding a new tab) by editing just one file instead of having to edit each page on the website.

- Cascading Style Sheets: used to define colors, fonts, and the overall layout of the website.

- HTML validation: all of the webpages have been validated to ensure cross-browser compatibility. A button has been added to the bottom-right of each webpage to check its validation using the W3C validation service.

- The website and applet logos were redesigned using vector graphics in Inkscape.