June 17, 2009

GroupLens, The Most Awesome CS Lab

Readers of this blog have probably seen me write a lot about Cyclopath and my research. The Cyclopath project is really cool and one which I am proud to be a part of. But the fact is that Cyclopath is just one of the many cool projects that go on in my research lab, GroupLens. We have a great team and excellent advisors. The group does a lot of research on online communities, such as Wikipedia, and recommender systems, such as MovieLens. If you ever want to know more about out research, check out

June 4, 2009

Submitting a Paper for the First Time

This week I submitted my first paper to a conference. Well, technically it was a note, which means it is only four pages long. And I was second author. But it is still the first paper to go out there with my name on it.

The process was pretty tiring, but it was worth it. We went from general outline to outline at the paragraph level to outline at the sentence level to draft and finally to finished paper. And the introduction was written at least four different times. It was really hard to nail down.

I am really eager to talk about what we wrote, but it will have to wait until the paper actually goes through the review process and gets accepted. Hopefully that should happen sometime in July. I will blog about it as soon as I get notified!

May 27, 2009

Research Note

I apologize for the recent lack of posting. I'm in the middle of writing a research note for a conference deadline this Monday. Meanwhile, head on to the Fail Blog for some entertainment.

May 3, 2009

Cyclopath Tags Are Live!

One of the features I have been working on for some time in my lab was just released this past week. Cyclopath, the geowiki for bicyclists, now supports tagging. It is just too cool. Here are two short videos that one of my teammates prepared explaining how tags are used in the system.

April 28, 2009

First Talk at a Conference?

Last Sunday I gave my first unofficial talk at a conference. The APA (American Planning Association) was holding a conference in Minneapolis and they invited the Cyclopath team to give a presentation about our system. The Cyclopath advisor and project leader were both unavailable, so it was up to me and two other members to handle the presentation.

We were not able to rehearse much, but overall I think it went well. It was a different audience from usual, as they were more interested in the applications of a system like ours to planning. Because of this we got many interesting questions, some for which we weren't completely prepared, but all of them good ones.

One good outcome was meeting a planner from Portland, Oregon (probably the top biking city in the US). He was very interested in having a similar application in Portland. He told us of a guy who works with them who got on his bike and rode every road possible in order to provide the data they needed. That is the advantage of a system like ours, where our users do all the work!

I must now focus on my own research so that I can hopefully give a more official talk at a conference next time.

April 23, 2009

The Power of Procrastination

This was the title of a talk I went to today. Excellent title, isn't it?

It was a talk by PhD Comics author Jorge Cham. And it was great. He did an excellent job of entertaining the audience (98% grad students by the way), relating to them, and motivating them to hold on. (I'll be waiting to see if he decides to write a strip about his visit to Minnesota.)

His message was basically that procrastination is okay. And when you are a grad student, making close to minimum wage, having to take work with you home, and not being able to see the end of your studies, this is exactly the kind of message you need to hear.

How do you think procrastination can be helpful?

April 7, 2009

Silverlight Project: Success!

I apologize for the lack of posting during the past week. One of the reasons for this has been that I had been working hard on my cool Silverlight class project. I went to sleep at 10am after a whole night of coding and presented the project in class at 4pm. Almost everyone was impressed! I think we really nailed the layout and look and feel of the application.
Silverlight feels a lot like Adobe's Flex, which I use daily for my research project, Cyclopath. Before this project, I just thought that Silverlight was Microsoft's clone of Adobe's Flash. But after using both, I realize that they are quite different to work with. My main complaint about Silverlight is how hard it is to do dynamic styling and theming. It can be powerful, but it is also overly complicated without the assistance of a theme editor or the like. What I liked best was Microsoft's powerful debugging capabilities. It is a joy to be able to explore almost any value or function at any time during debugging.
At the end of the semester I will post screenshots of all our class projects. Meanwhile, I believe I have an appointment with my bed. Good night and thanks for reading!

March 5, 2009

Playing Around with GWT

I just finished working on my second group project for the Developing the Interactive Web course I am taking. This second project had to be done using the Google Web Toolkit (GWT).

GWT is very different from the first toolkit I used (YUI). YUI was just a collection of code written in Javascript (the programming language used in most web sites to make them interactive on the client side). It can be quite a hassle to work with Javascript, especially because of the difference in how browsers handle it (older Internet Explorers being the biggest pains). That is the reason for creating tools such as YUI to aid the programmer.

Now GWT is not a collection of Javascript. It actually tries to keep the programmer from touching the Javascript. GWT is all Java (a very rich and powerful programming language) and it handles creating the annoying Javascript for you and the communication between the server and the client, which is very useful.

GWT was fun to program in, although it had many inconveniences that I will not get into right now, including complicated setup and Java code that does not translate into Javascript.

As for the project we created, I think I will try to set it up within the next few days so you guys can try it out for yourselves!

February 12, 2009

Essential Stupidity

My wife shared an article with me today which I greatly enjoyed. The importance of stupidity in scientific research is a convincing argument by Martin A. Schwartz on why feeling stupid can be a good sign, especially when you are trying to work on a PhD. We are often trained so much to try to feel smart, that we forget that relative to all possible knowledge in this world, we will always be stupid. Enjoy the article!

January 31, 2009

Trying Out the YUI Toolkit

My first class project for Programming the Interactive Internet involves the use of the Yahoo! User Interface Library. I can't say too much about it yet as I am still just dipping my feet, but it seems to be a very useful library. We are basically working on a movie-oriented mashup that will bring in data from Flickr, Twitter, Technorati, and more. I'm currently in charge in my project team of getting that data and parsing it. I will use the YUI toolkit to access this information using Javascript and without having to refresh the page or redirect the user to a new page. That means that all this data will be fetched dinamically as the user interacts with the page. It is just awesome to be in a class that requires you to make a mashup!

January 21, 2009

Two Very Interesting Courses

I am happy to say that the two courses I'm taking this semester are nothing like the two courses I took last semester, which I disliked. This time, both courses are ones which I know I will enjoy thoroughly. I will be taking classes with all three professors from the research lab that I work at. And all three of them are excellent professors.

The first class I am taking is Collaborative and Social Computing. This one is closely related to my research project, which is a type of online social community and collaborative tool. There will be a lot of reading and some projects, but I'm sure they will all be very interesting.

The second class is called Developing the Interactive Web. This will be an awesome class. And I will be able to put a lot of stuff in my resume thanks to it too! We will be working with some of the most popular frameworks and tools for developing on the web, such as Yahoo! UI Toolkit, Google Web Toolkit, Microsoft Silverlight, and Facebook Apps. That really sounds exciting.

I know both of my classes will require a lot of work, but unlike the last semester, this time it will be work I enjoy. I will probably write later on about some of the interesting things I learn and do in these classes, which I am sure will be many.

December 16, 2008

One More Semester Finished

Today I took my last final exam. That means I unofficially finished the semester (only some TA stuff to do). The final exam for the Machine Learning class was just like the rest of the class: hard to understand and almost impossible to do. I'm just glad I'm done with that class forever. The Computer Security class was a lot more doable. This class wasn't in my area of interest, but I still learned a lot and feel that it was an important class to take. Being a TA for the User Interface Design class was a great experience. It was a lot of work (11 weekly meeting with project groups), but it was great to see and help guide these projects from beginning to end.

Now that I'm done, it's back to research. I'm really excited about the stuff I'm working on there. I'll say more about that after I publish a paper (hopefully next year!). For now, I'm just glad to not have any classes. Although I must say, I am looking forward to next semester's classes: Programming the Interactive Internet and Collaborative and Social Computing. These are way deep in my areas of interest! Next semester is already starting to look more enjoyable than this one. (And having classes only two days a week doesn't hurt either).

For all of you who are taking finals, good luck! To everyone, thanks for reading!

November 24, 2008

Oh, the Irony!

It has to be while I am working on my Computer Security project that my computer decides to get infected with countless numbers of adware, spyware, trojans, and viruses. I have no idea where they came from, as they began their attack while I visited the set of web sites that I look at regularly. But the irony is just too much for me to bear. I will refrain from taking any Cancer Biology or Criminal Justice classes from fear of what irony could do to me.

November 20, 2008

Geocoding Woes

One important part of Cyclopath is geocoding. If you have never heard of geocoding (I hadn't before this project), it means translating an address to latitude and longitude coordinates. Whenever someone uses the route finder, we have to translate those addresses into coordinates, find the nearest intersections, and then have our route finder look for the shortest path between those two points.

Well, as you can imagine, geocoding is not an easy task. That is why we don't implement this part ourselves. There are some great geocoders out there too. We had experimented with Yahoo's geocoder and then moved to Microsoft's MapPoint geocoder. Aside from a few sporadic issues, Microsoft's geocoder worked pretty well. That is, until a few weeks ago. For no obvious reason, addresses that used to work now completely failed. My own home address now dropped me at a location miles away from where I live. This was a problem. And users were starting to complain.

A few email exchanges with some people from Microsoft (which were very prompt by the way) didn't help in finding out what had changed with the geocoder. There was no way to get around it. So we started looking for other options. Google has an excellent geocoder which it uses for Google Maps. Unfortunately, its Terms of Service state that to use it your application must be using Google's maps. We create our own maps (needed to make it as editable and interactive as we need), so we had to scratch Google's geocoder off the list.

We found another geocoder that focuses on the Twin Cities metro area, which is where Cyclopath focuses too. So I was delegated the task of changing the code in order to use this new geocoder. After I finally started making some progress, while testing some code, I decided to try an address on the old geocoder that I knew would fail. To my surprise, it gave the correct location. Perplexed, I tried all other addresses that had been problematic in the past few weeks and to my surprise all of them worked. All of the sudden Microsoft's geocoder was working correctly. After all that brainstorming, sending emails, and looking for alternatives we were back to where we were before.

Well, not exactly. We have decided (although with a little less urgency) to finish implementing the new geocoder and leave it as a backup. That way, if Microsoft ever decides to confuse our users again, we'll be ready. Bring it on!

November 10, 2008

Cyclopath Tutorial Recap

For those of you who missed it, here are the five Cyclopath Tutorials I posted:

Tutorial 1: Getting Around
Tutorial 2: Rating and Finding Routes
Tutorial 3: Editing the Map
Tutorial 4: Revisions
Tutorial 5: Watch Regions

Be sure to give Cyclopath a try and share this with any cyclist friends you have!

November 8, 2008

Applying for an NSF Fellowship

This week I turned in my application for an NSF Graduate Research Fellowship. If I am granted this fellowship, I will be funded by it for my next three years. I had to write three essays for the application. The toughest one, the research proposal, was reviewed by at least five different people (including my wife). I really wanted to make sure I got it right.

In the proposal I talk about some cool new stuff I will be researching on Cyclopath of which I am very excited about. Hopefully, this might lead to a thesis someday. It's all sort of confidential for now, so I can't say much more!

One thing I learned from feedback about my essays was that I use phrases like "I think that" and "I hope I can" too much. I learned to eliminate such phrases and be more assertive. I'm sure I'll keep learning writing tips like this as I continue my graduate studies. I'll try to... I mean, I WILL put what I learn into practice in this blog!

November 1, 2008

Cyclopath Tutorial Part 5: Watch Regions

Once you know how to edit the map in Cyclopath and look at recent changes, you’ll probably want a simple way to keep track of changes in areas you are interested in. That’s where watch regions come in. Watch regions let you select an area in the map so that you can keep track of changes there. By default, you will be notified by email of any changes. Let’s take a look at how to create a watch region. First of all, you have to go to the My Watch Regions panel on the left side.


This is the list of watch regions, which is initially empty. To add a new watch region, click on the “New Watch Region? button. A new watch region appears in your map.


You can change your watch region’s name and color on the left panel.


Chances are you probably don’t want your watch region to be a boring square. Well, you’re in luck. You can drag vertices around to alter your region’s shape.


And if four vertices aren’t enough, you can use the “Add Vertex? tool on the upper right to make your watch region even more complex.


Now your watch regions list displays the new watch region.


You can click on “look at? to center the map on the watch region and on “x? to delete the watch region. When you’re done, just save changes and your new watch region is ready. You will be notified by email of any changes in your region. If you don’t want to receive emails, just uncheck the “Enable email? checkbox (while ignoring the two e’s). You can still use watch regions to filter the changes shown in “Recent changes?, which is useful for looking at changes that only affect your area of interest.

You now have all the basic knowledge needed to use Cyclopath. I may throw in one more Tutorial post, but this should be enough to get started. There is a lot more information in the Geowiki Help page if you’re interested. Have fun editing and cycling!

October 30, 2008

Cyclopath Tutorial Part 4: Revisions

In the last post, I talked about how you can edit the map in Cyclopath. Now, how do you see what changes other users have made? And what can you do if another user makes an edit that you know is not correct? This is where revisions come in.

Revisions are used in many applications such as Wikipedia and Google Docs to keep track of changes made to documents. Each revision is a change or save made by a user. Whenever you make changes to the map in Cyclopath and hit Save, you are asked to summarize your changes. These changes are grouped together into a revision, accompanied by your summary. Now, let’s look at how you can view and interact with other users’ revisions.

We will be concentrating on the Recent Changes panel of the interface.


This panel shows a list of all recent changes (revisions). You can view all revisions or filter them by visible area (only show revisions that affect the area of the map that you are currently looking at) or by watch regions (we’ll talk more about this in the next post). The list of revisions shows for each revision the revision number, the user who made the change (if anonymous, then the IP address is shown), the date and time of the revision and the user’s summary about the revision.

Now, what happens if you click on a revision?


You’ll notice that a section of the map just got highlighted. This is where the change occurred. Sometimes, this change might not be in the visible area of the map. To move to where the change is, click on “Look at?. The map will then center on the location of the change and zoom in as much as possible.


Now comes the fun part. Diff mode. This is where you can see the changes that actually occurred during the selected revision(s). There are two types of changes in Cyclopath: geographical edits and non-geographical edits. Let’s take a look at non-geographical edits first. With the revision we selected above still selected, we now click on the “Changes? radio button in the “Map shows:? section. This tells Cyclopath that you want to view changes made in the selected revision (not just where they occurred). Click on “Update? and the map will change to Historic Mode.


The map now highlights the changes made. The blocks highlighted had some of their information changed. We can click on them to view what changed.



Same thing can be done with points. Here’s an example.


By the way, to exit Historic mode and go back to what the map is like currently, just click on the “Exit historic mode? button on the bottom of the map.

Now, let’s take a look at geographical edits. Revision 4941 is a good candidate. When we click on “Update? after selecting “changes? we get the following screen:


Looks quite different, right? Here, the edits actually moved vertices and points around, added new blocks and removed blocks. We call them geographical edits because they change how the objects look on the map. Take a look at the Comparison Key if you ever get confused about what the colors mean!


To make looking at geographical edits easier, at the bottom at the map there is a “Before? and an “After? button. With these buttons you can view what the map looked like before and after the change.





To go back to viewing the difference together, just click on the “Both? button at the bottom of the map.

Now, what if you see a revision that you think is incorrect? How do you undo it? In the world of wikis, this is called reverting a revision. Reverting a revision in Cyclopath is simple. Just click on the revision you wish to undo and click on the “Revert Revisions? button above it. Write a short summary of your reason for undoing that revision and you’re done.

Another neat feature about revisions in Cyclopath is writing feedback. If you want to comment to someone about a change they made, just select the revision you want to give feedback about and click on the “Write feedback? button. You will then be given a change to write your feedback, which will be sent to that user and to the Cyclopath mailing list.

You should now know the basics of viewing changes in Cyclopath. Go ahead and give it a try. Have fun!

October 27, 2008

Cyclopath Tutorial Part 3: Editing the Map

One of the coolest features of Cyclopath is that you can edit the map as you wish. You can add points of interest, add roads, remove paths, etc. Today, I will be going through some of the basics of map editing in Cyclopath. Let’s start with the easiest: editing points of interest.

Editing a Point

Editing an existing point is very easy. To edit a point’s information, it’s as simple as clicking on a point on the map and editing the fields that appear on the left pane in “Point Details?.


You can move a point by dragging it on the map. And to remove it, just click on “Delete Point? in the Details panel.

Finally, for adding a point, you’ll need to use one of the tools on the upper right corner of the map.


When you click on the second tool, the “Add a Point? tool, your cursor will change to let you know that you’re using that tool (that’s what is happening in the image above). Once in this mode, simply click on the map and you will be prompted to enter a point name. After you enter the name, a point is created in the location that you clicked.

Editing Blocks

Editing blocks (or road segments) is a bit trickier. The simple part is editing a block’s information. As with points, just click on a block and edit the fields in the Details panel. One difference though is that you can add multiple notes to a block (and add those notes to other blocks). Furthermore, you can edit multiple blocks a time by holding either CTRL or SHIFT to select blocks (CTRL allows you to select individual blocks, while SHIFT allows you to select a path of blocks).


The harder part is editing blocks geographically, that is, on the map. To create a block, click on the “Create new block? tool on the upper right.


After selecting the right tool, you can click anywhere on the map to create a new block.


You will notice that the new block has two endpoints. You can drag these endpoints to connect your new block to other block endpoints. The endpoint will snap to other endpoints when nearby.


If you have the connectivity checkbox checked, you will notice that the new block is now connected to other nearby blocks. Now, suppose we don’t want the block to be a boring straight line. We can shape it even further by adding vertices. For this we select the “Add vertex? tool (it will only be enabled when you select a block).


This time, the cursor will not change. But when you click on your block, a new vertex will be created!


You can now drag this vertex around to give your block a better shape. Keep in mind that you can’t snap vertices to other endpoints though! Only endpoints can be connected to other block endpoints.


Now suppose you want to connect your new block to the middle of another block. You can't just drag it over because there are no endpoints, so it won’t snap. What you’re trying to do is create an intersection where there isn’t any. To do this, first we have to split the block we want to connect to. For this, select the “Split Block? tool on the upper right. Once again, you have to have the block selected for the tool to be enabled and the cursor won’t change after you select the tool.


Next, click on the block wherever you want to create the new intersection.


Now the block has been split in two, basically creating an intersection between the two blocks. These two blocks are connected together through endpoints where we just clicked. Now we can connect to these endpoints!


Now, what if you want to remove a block? Simple. Click on the block and go to the “Advanced? tab in the Details panel.


There is a button called “Delete Block(s)?. Click it to remove the block.


Now we have another problem. Remember the block that we split before? We want to stick it back together, merge it back into only one block. To do this, first select the two blocks (you can use CTRL to select multiple blocks). In the Details panel, right next to the “Delete Block(s)? button, there is a button called “Merge Blocks?. Just click on it to merge the two blocks back together!


And that’s it! You now know how to edit the map. Just three more tips before I end this post. There is a checkbox called “Aerial Photos?. This is incredibly useful when editing the map geographically. It displays satellite photos, allowing you to do more precise editing (be careful with it though, since the photos may be a few years old). The second feature that you should use extensively when doing geographic editing is the connectivity checkbox. This is the best way to know if you are connecting blocks correctly. The third thing to keep in mind is the usefulness of the Undo, Redo and Discard Changes buttons. Use them as much as needed! And use them to experiment and try out map editing. As long as you don’t hit Save, your changes won’t affect the system.

So go ahead, give map editing a try. It’s the coolest thing around.

October 24, 2008

Cyclopath Tutorial Part 2: Rating and Finding Routes

The fastest way to start using Cyclopath and getting some benefit out of it is using its route finder feature. It’s also one of the features that most users are already accustomed to thanks to other popular route finders. Let’s take a look at how to use the route finder.

On the left side of the interface, you will find the “Routes? panel:


At first, until we ask it to find a route, it will be empty. By clicking on the “Find New Route? button, you will be presented with the following popup:


Inputting addresses to search for here is pretty straightforward. But there are three more things to be aware of. First, besides addresses, you can also search for points. Points are those locations of interests that can be found throughout the map. For example, in the following screenshot, Mariucci Arena, Williams Arena, and TCF Bank Stadium are all points. This means that you can find routes to them by writing their names instead of street addresses.


The second thing to be aware of is the sliders at the bottom. One says Bikeability and the other says Distance. Cyclopath has a few ways of measuring bikeability, which we will talk about a little more later in this post. You can ask the route finder to find a route that is more bikeable or a route that is shorter.

The third thing to be aware of is that this interface may change somewhat in the near feature. As we are still in Beta development, some really cool features are currently in development. So stay on the lookout for these cool changes!

After you write in your source and destination addresses, click on the “Find? button to get your route. (click on the image to view a larger version)


You will get the route displayed on the map and the directions (included distance of each step) on the left. You can get a nice, printable version of the directions by clicking on the “Printer Friendly? button.

Now, let’s get back to bikeability. How is bikeability computed? The base case is based on a formula that takes into account aspects of the blocks such as usable shoulder space. Now comes the fun part. You can affect this computation by rating blocks. That’s right. How you rate blocks will change how the route finder computes bikeability. If you rate a block as excellent, the route finder will give that block preference. If you rate a block as poor, it will be penalized by the route finder. You can even rate a block as impassable to have the route finder avoid it altogether. By the way, for blocks you haven’t rated, if a reasonable amount of other users have rated it, their averaged rating will be given priority over the base formula. Cool, isn’t it? Now, let me show you where to apply the ratings:


When you click on a block, the Item Details panel will open. Here, you will be able to see the estimated rating of the block and the option for giving it your own ratings. Keep in mind that you have to be logged in to use this feature, so be sure to register! Once you have rated a block, all you have to do is save changes and your ratings are ready to be used the next time you search for a route.


By the way, blocks you have rated will be colored differently depending on the rating you give them. Check the Map Key at the bottom of the map to see which colors correspond to which ratings.


Now you should know how to rate blocks and find routes. Have fun rating!

October 21, 2008

Cyclopath Tutorial: Part 1

I am really enjoying the project I am working on, Cyclopath. It’s an awesome geowiki for cyclists in the Twin Cities. But for the first time user, it may be a lot to take in. It has a lot of neat features that most people don’t expect to see together (e.g. map editing and route finding). So I decided to dedicate my next few posts to explaining the basics of Cyclopath. I won’t cover all there is to say about it (that’s what the user manual is for), but I’ll try to focus on the most important aspects. Also, Cyclopath is still in Beta, so new features and changes occur frequently. Anyway, this should still prove to be useful. Enjoy!

Part 1: Getting Around Cyclopath

Cyclopath is at its core simply a map. That is why the most obvious thing you will notice when you visit it will be a map of the Twin Cities. Everything revolves around this map. After you have located the map (shouldn’t take you more than a few milliseconds) you can then start focusing on all the other awesome stuff lying around. Here’s an overview of some of the stuff you’ll find (labeled on the picture below for your convenience):

A) Help Button – If you get stuck, this is the place to go! This opens a new window with help information.
Log in/ Register Button – You can use Cyclopath even if you’re not registered, but that’s no fun. Please register!
B) Item Details Panel – This panel displays information about blocks (as in road segments) and points (as in locations of interest). It remains empty until you select a block or point.
C) I’ll talk about these other panels in later tutorials. For now, just take my word that they’re very useful!
D) The map, just in case you couldn’t find it.
E) Navigation – You can move around the map by either dragging it or using the navigation buttons here on the upper left. The plus and minus buttons are for zooming in and out, respectively.
F) Editing tools – Since this is a geowiki, it means that you can edit the map. That’s right. You can change information, points, and even the road segments themselves as you see necessary (try not to vandalize though). The set of tools on the upper right are used for editing, but we’ll delay the explanation of these tools for another tutorial. For now, all we need is the select tool.
G) More Tools – These are a few settings and tools. You can save any of your changes here. The four checkboxes toggle connectivity (which shows you which blocks are connected to which blocks), Watch Regions (we’ll talk about this later), Aerial Photos (so you can see what the map really looks like), and Sticky Intersections (we’ll talk about this later too).
H) Map Key – If you forget what some of the colors and shapes mean, just click on the map key for a refresher.


Viewing Item Details

When you are zoomed close enough, you can click on points and blocks to view their details. The screenshot below shows what that looks like.
A) A selected block – When you select a block, it is highlighted with blue and all its vertices are shown. Its information is then shown on the left.
B) Points are in the shape of circles. They too can be selected to display their information.
C) Name - The name of the block or point, which usually shows on the map.
D) Type – For blocks, you can select the road type.
E) Flags – Some more options to set for blocks.
F) Ratings – We’ll talk about this more in the next part of the tutorial, but basically this is where you rate blocks.
G) All blocks and points can have notes associated with them. This is where you can see and edit these notes. Blocks that have notes appear on the map highlighted with purple.


If you’re a new user, then you probably aren’t interested or confident enough to start editing right away. Take some time to explore the map, clicking on different byways and points to see their information.
I hope this brief introduction helps. Let me know in the comments section if you have any questions!

October 11, 2008

WPE Victory!

I'm taking a short break from a dreaded Machine Learning homework to let all of you know the great news. I passed the WPE (Written Preliminary Exam)!! I took this 3-part exam in September and had been waiting for the results since then. Thankfully, I passed all three parts of the exam. This marks an important milestone in my PhD progress. The next steps are now finishing the required classes (I should be done by Fall of next year) and the Oral Examination (which I hope to do in Spring '10). If all goes well, I'm on track to finishing by 2012. The date seems far away, but passing the WPE just made it feel much closer.

October 7, 2008

Computer Security With Bible Verses?

One of the reading references for the Computer Security class is an online book called Secure Programming for Linux and Unix HOWTO, by David A. Wheeler.

One aspect of his book that caught my attention was the fact that he starts each section with a verse from the Bible. It doesn't matter if you're a Bible fan or not, you have to admit that he was very clever. Here are some of my favorite book sections and corresponding verse:

Security Requirements
"You will know that your tent is secure; you will take stock of your property and find nothing missing."
Job 5:24 (NIV)

Avoid Buffer Overflow
"An enemy will overrun the land; he will pull down your strongholds and plunder your fortresses."
Amos 3:11 (NIV)

Structure Program Internals and Approach
"Like a city whose walls are broken down is a man who lacks self-control."
Proverbs 25:28 (NIV)

Send Information Back Judiciously
"Do not answer a fool according to his folly, or you will be like him yourself."
Proverbs 26:4 (NIV)

"The words of the wise are like goads, their collected sayings like firmly embedded nails--given by one Shepherd. Be warned, my son, of anything in addition to them. Of making many books there is no end, and much study wearies the body."
Ecclesiastes 12:11-12 (NIV)

"As iron sharpens iron, so one man sharpens another."
Proverbs 27:17 (NIV)

October 1, 2008

Hacking for Grades

No, I'm not doing anything illegal. I am taking a class called Introduction to Computer Security. It's not a topic that I enjoy very much or that I'm good at, but I believe it's essential in order to be a good programmer.

As part of my first homework, I had to attack a badly written version control system in order to gain access to a shell (that interface to your computer that is just a command line) as root (which means I get top privileges and can modify the system even if I was not allowed to initially).

The most interesting exploit to do was a buffer overflow. It was also the toughest. Basically, what this type of attack tries to do is store a very long piece of code into a section in memory that has a smaller size than that of the code's length. When the computer tries to store that very long piece of code, since it doesn't fit, it ends up overwriting other sections of memory. The fun part is that with this type of attack you can make the victim code jump to your own code and execute whatever you want. It's tricky, but it's possible.

After I was done with this assignment, I at least realized that I don't have zero security skills. Looks like the class is being worth it!

September 25, 2008

Not All CS Classes Are Enjoyable

I've taken many wonderful classes as a graduate student. Even when they meant a lot of work, I enjoyed them and really got a lot from them. This is not the case with one of my classes this semester. I am taking a nightmare called Machine Learning.

I've seen many of the topics discussed in this class before in classes like Pattern Recognition. But this class manages to make all of that impossible to understand. Take a lot of probability and statistics, add in some complicated linear algebra and make up many weird mathematical symbols and then expect the students to be experts in these areas and you get Machine Learning. The lecture slides are basically equation after equation. A void is created in my heart every time I enter this classroom.

I am currently working on our first punishment (a.k.a homework). And this blog post is the result of my shaken mind. Please forgive my rants.

September 5, 2008

Second Year of Grad School, Here I Come!

I just started my second year of grad school this week. I will be taking two classes: Machine Learning (similar to Data Mining and Patter Recognition classes I've taken before) and Computer Security (bleh, I don't like this topic, but I see it as a necessary evil). That's the boring part.

The fun part will be TAing the User Interface Design class. I can't wait to see all the projects the students will come up with (as long as it's not yet another redesign of the student grade viewing system). The research part will also be very fun. I will be wrapping up my work in the Data Mining lab and dedicating my time more fully to Cyclopath (which just started Beta, by the way) in the GroupLens lab. I am thinking of writing up a tutorial or two for Cyclopath later.

Anyway, good luck to all of my readers who also started classes. What classes, if any, are you taking this semester?

September 2, 2008

Done With the WPE, Maybe

I have reached my first big milestone in my PhD studies. I took the WPE (Written Preliminary Examination). The WPE is made up of three tests, two in class and one take home, on various subjects that I get to choose from a list.

I took the in class exams in Artificial Intelligence and HCI. That was four hours of writing almost nonstop. But at least it was on subjects I enjoyed. The take-home was in Data Mining and thanks to it I spent my last "vacation" days reading research papers and writing.

But finally, I am done with all that trouble. That is, unless I don't pass some of the tests. If I fail any of the tests, I can retake the ones I failed again in January, but hopefully this is the last time I have to worry about the WPE.

After this, the next big step is the preliminary oral exam. And after the oral exam, the thesis! I still have a few years to go, but just getting past this WPE makes me feel like I am so much closer to my goal!

I'll write again about this when I get my results. Let's hope I pass!

August 30, 2008

Cyclopath Now In Beta!

It's live! Cyclopath, the project I joined this last summer has just entered its public beta stage. That means anyone can try it out. So go ahead and visit the website here and take a look. If you're not from the Twin Cities you won't get much out of it, but it's still fun to try.

For those of you who forgot or don't know, Cyclopath is a geowiki. The 'geo' part is because it's a map and the 'wiki' part is because anyone can edit it. It's a map for cyclists near the Twin Cities in Minnesota which anyone can edit. It's like Wikipedia and MapQuest (or Google Maps) put together.

So go take a look!

August 27, 2008

7 Things I Have Learned As a Grad Student: Day 7

What I really like about computers is the people

Sounds strange doesn't it? My research interests have actually changed since I entered grad school. I came in looking to work on artificial intelligence projects. And I'm still interested in Artificial Intelligence, but there is one area of computer science which I am finding that I am much more passionate about.

This area is HCI, Human-Computer Interaction. In the end, computers are really always about people. That's what they were designed for. To help us. So it's not strange to have an area of computer science devoted entirely to finding out how humans interact with computers.

This includes a multitude of areas, some of which are user interface design (we have to know how users to think to design easy-to-use interfaces) and online communities (users interacting socially, but across the internet). When I come to think of it, what I liked about Artificial Intelligence was also the human side (how to make computers think like humans).

Thanks to this PhD experience, I have found an area within computer science which I am really passionate about and really enjoy. And hopefully, I'll be able to share more of what I learn with all of you in the future. This is all I have for this week, but there are many more things I have learned and will keep learning. Feel free to ask any other questions you might have about my experience as a graduate student. Thanks for reading!

August 26, 2008

7 Things I Have Learned As a Grad Student: Day 6

Multiculturalism Rocks!

One of the downsides of studying in Puerto Rico was that 95% of the students were Puerto Rican. There isn't really a big international presence in Puerto Rico (except maybe for Chinese, by the looks of the amount of Chinese restaurants that exist).

Here in grad school in Minnesota, I get to interact with people from all over the world. I have made friends from China, India, Argentina, Japan, Mexico, and more. I even got to host a student from Japan.

The experiences you can gather and the amount of things you can learn while working with people from different cultures and backgrounds are just immense. It really makes life, and my PhD, more colorful and enjoyable.

August 25, 2008

7 Things I Have Learned As a Grad Student: Day 5

It is possible to be a married graduate student

It is not only possible, it's great. Especially if your wife is also a graduate student.

Although financially it can be a bit tight, when both are students you can have someone who can relate to your woes and troubles. And even if your spouse is not a student, it is just nice to have some company, since being a grad student can get lonely at times.

In other words, I've learned that my life as a grad student (and my life in general) has been more enjoyable thanks to my wife.

August 24, 2008

7 Things I Have Learned As a Grad Student: Day 4

Reading Research Papers

One thing I have done more in this year alone than ever before is reading research papers. I have read dozens of research papers on topics such as data mining, human-computer interaction, and even some on psychology. I have learned how to analyze, understand, and even criticize papers.

I have learned that there are actually many bad papers out there. Lots of poorly done research exists. The hard task is finding the good papers. If you do find them, they can really be worth the read. This is where much of the really innovative stuff is at. Most new technologies that you see appearing in the market today probably appeared in research papers that are 10 years old.

In an effort to get some of you interested in research papers, I had a week devoted entirely to HCI research papers (together with comic strips about the topics). Hopefully, I can continue to understand the world of research papers. This is an area where I have learned a lot, but still have a long way to go. Someday, I will even have to write a few myself. So this is one learning experience that I will definitely value.

7 Things I Have Learned As a Grad Student: Day 3

Grad students really have to love what they do

Many of my undergraduate classmates went straight to full-time jobs. And I think most of them are probably earning two to three times what I earn as a graduate student. Knowing that, I realize that I have to be really passionate about my PhD area to be crazy enough to pursue it.

Of course, there is some reputation that comes along with completing a PhD degree, but the sacrifices are many. Low income, endless research, and exams, to mention just a few. But when you really love what you do, it's all worth it. I may not earn as much as my contemporaries, but the experience is an invaluable one.

August 22, 2008

7 Things I Have Learned As a Grad Student: Day 2

Yesterday I talked about how I learned during this last year how much I don't know yet. Today's topic is:

Being on the teaching side

This year I learned what it feels like to teach. I graded, held office hours, was in charge of a lab, and even gave three lectures. It's definitely a different feeling than being a student. It makes you appreciate more what professors and teaching assistants do.

Grading can be especially tiresome. And trying to keep everyone's attention while giving the lecture is a physical impossibility. But when one student writes in the class evaluation that the TA was probably the best he/she ever had, it makes it all worth it.

I may not become a professor after I graduate, but I don't rule out teaching completely. And the group management and oratory skills acquired during this experience (and during the TA I will be doing this next year) will definitely help me in the future. So, being a TA has been one of the best new learning experiences I've had this last year.

August 21, 2008

7 Things I Have Learned As a Grad Student: Day 1

This day, exactly one year ago, my wife and I arrived at Minnesota. Our lives as residents of this cold state and as graduates students began. Today I look back at myself one year ago and boy have things changed. I have had many enriching experiences throughout my first year as a PhD student. And I would like to share some of them with you. So let's get right to it:

I learned how little I really know

I thought I learned a lot as an undergrad. After all, I worked on many class projects and even did a few internships with IBM. Surely I was ready to survive in the real world. And yes, I know that I could have survived. But oh how much I would have missed.

I have learned so much in this past year that I feel like going straight to the workplace would have left me doing something I didn't really like. The first reason is because I actually discovered that there was another area in computers that I was more passionate about (but I'll talk more about that in another post). My research and classes have also taught me a lot: how to design usable interfaces, what HCI is all about, how to work with lots of data (data mining), a few extra programming languages (Javascript, Adobe Flex, LISP - yuck, python, etc.), and more.

While working on Cyclopath, I have also come to realize how inefficient my programming skills really are. I have always thought of myself as a good programmer, capable of adapting to many programming languages and solving complex problems. But I have realized that my coding style really needs a lot of work. I have an excellent project leader who gives me a lot of feedback after every piece of code I submit. The first time, it took me a while to swallow. But now I see it as opportunities to perfect my programming skills.

One of my goals after finsihing my PhD is to start my own project or even company. For that, I believe that efficient coding skills and solid knowledge of computer science is essential. That is why I know this PhD is not a waste of time. This first year alone has taught me how little I really know and how much is left.

July 25, 2008

Cyclopath: A Geowiki for Bikes


Last month I started working on a very interesting project as part of my transition to a new lab. This project, led by graduate student Reid Priedhorsky, is basically a geowiki for bikes called Cyclopath. What does it mean by geowiki? Well, think Wikipedia. Any user can edit wikipedia. That's what wikis are all about. Now, a geowiki is the same concept, but in a geographical setting. In our case, we have a map of the Twin Cities (MN) focused on bikes. And any user can edit it. That means users can change routes, comment on them, view older revisions, and much more. Furthermore, users of our geowiki can rate streets and search for routes based on distance or bikeability. It is a really cool project, which will be going into beta in August. If you want to sign up to be an alpha tester or just want to be notified when the site goes live, go to Also be sure to check out these two articles that appeared in local press last Saturday:
Star Tribune Cyclopath Article
Pioneer Press Cyclopath Article

July 13, 2008

Paper Week Recap

This last week I presented seven research papers from the HCI field and also threw in some new comic strips. I hope you have enjoyed it and hopefully learned something from the paper summaries. If you liked the format, I think I'll try to every now and then post another research paper summary together with new comic strips. Let me know what you think in the comments!

Here are some quick links back to each of the posts. Which one was your favorite paper? favorite comic strip?
Conflict in Wikipedia
Social Psychology Applied to Online Communities
Designing for Micro-credit Groups in India
Website Credibility
Direct Video Manipulation
Alone Together in World of Warcraft
Usability Evaluation Harmful?

Paper Week: Usability Evaluation Harmful?

Today is the last day of this week of research papers and comic strips. The paper I chose for today is very different from all the others we read in class. It was described by the authors during the conference it was presented at as the most controversial paper of such conference (CHI 2008). Just to give you a quick background, usability evaluations are a very useful type of experiment used extensively in HCI where interfaces and devices are tested with users to find out how “usable? they are. On to the paper then!

Paper: Usability Evaluation Considered Harmful (Some of the Time) (reference at the bottom of this post)

What in the world did they do?

Usability evaluation has become so important in the HCI field that lately it is very hard to publish any research if you don’t do a usability experiment. The authors of this paper argue that although usability evaluation is very useful, it “can be ineffective and even harmful if naively done ‘by rule’ rather than ‘by thought’?. According to the authors, sometimes usability just isn’t what you need.

What’s so cool about that?

This paper is basically a critique. It was called “controversial? because it is going against the currently accepted notions that good HCI research has to have usability experiments.

Did anything worthwhile come out of it?

They came up with various cases where usability evaluation can be harmful. One of these is when prototyping a really innovative idea. Sometimes, new ideas just aren’t ready for users at first. It takes many iterations to arrive at the final, polished version that really does make a difference in users’ lives. If usability testing is done on these early prototypes, a good idea could be quashed before it has a chance to mature. It’s up to the rest of the research community now to decide if they want to do a better assessment of whether this technique is helpful for their experiments or if they just want to keep going at it with usability evaluations, regardless of its usefulness.

Why should I care?

Although many readers of this blog probably won’t be doing usability evaluations in the near future, this affects all of us. The better HCI researchers do their stuff, the better and faster new technology reaches the rest of us.

We can even take this a bit further. How many times do we follow patterns and methods mindlessly just because they have worked before? Or because we are lazy? Or because it’s what others expect us to do? Take some time to assess why it is that you do things the way you do.

Now, on to today’s comic strip. (Click on the image to enlarge it)


Reference: Greenberg, S., Buxton, B., Usability Evaluation Considered Harmful (Some of the Time), Proceedings of the SIGCHI conference on Human Factors in computing systems, April 5-10, 2008, Florence, Italy

July 12, 2008

Paper Week: Alone Together in World of Warcraft

One cool thing about the HCI field is that we can justify playing games as research. It’s all for the noble goal of understanding how humans interact with computers after all. Today’s paper is about such type of research. Don’t forget the comic strip at the end of this post.

Paper: “Alone Together?? Exploring the Social Dynamics of Massively Multiplayer Online Games (reference at the bottom of this post)

What in the world did they do?

The authors of this paper basically played a lot of World of Warcraft. In their spare time, they studied the social interactions between players, relying more on empirical data than on subjective data.

What’s so cool about that?

Getting research done while playing video games is awesome. It’s also interesting to see how people interact with each other in a virtual world.

Did anything worthwhile come out of it?

They found out some interesting stuff while play… while researching World of Warcraft. Games such as World of Warcraft attract players because of their social aspects. But what these researchers found out was that most players play outside of groups for most of their stay in the game. Still, there were some social aspects that attracted players to the game. The authors of the paper described them as the following:

- Interacting with an audience – Reputation plays a big role in this game. Many players just enjoy the fact that they can show off or have an audience during their play. The authors compare this to playing pinball in a crowded arcade, where spectators gather around the machine to observe the best players.
- Being surrounded by others – People simply enjoy the sense of social presence. It’s sort of like hanging out at a café reading a book, where you barely interact with anybody, but you still enjoy being surrounded by people.
- Laughing at and with others – This is the “spectacle? factor. Other people are simply a constant source of entertainment.

So in the end, what the authors concluded was that players of World of Warcraft like to play “alone together?, by themselves but surrounded by others.

Why should I care?

As online communities become more common, it’s helpful for designers of these communities to understand why it is that people want to be surrounded by others. Sometimes it’s for the socializing, but other times, such as with World of Warcraft, the motivations are different. If designers can understand these differences, they can better understand the needs of the users and can design communities that are a better fit to their members.


I just wanted to show one paragraph of their paper that shows just how much effort they put into playing the game:

“We began our study of WoW by observing the game from the inside and started playing right after its launch in November 2004. All authors created a main character and several “alts? (secondary characters on different servers). We picked different character classes to get as broad an overview of the game as possible. We joined guilds, and participated in the community’s regular activities (quests – alone or in groups, guild raids, player-versus-player combat, etc.). This provided us with a rich qualitative background to frame our analyses.?

Without further ado, the comic strip for today. (Click on the image to enlarge it)


Reference: Nicolas Ducheneaut , Nicholas Yee , Eric Nickell , Robert J. Moore, "Alone together?": exploring the social dynamics of massively multiplayer online games, Proceedings of the SIGCHI conference on Human Factors in computing systems, April 22-27, 2006, Montréal, Québec, Canada

July 11, 2008

Paper Week: Direct Video Manipulation

Today’s paper is one of those papers where you just have to say “awesome?. So I hope you enjoy it together with the new comic strip.

Paper: Video Browsing by Direct Manipulation (reference at the bottom of this post)

What in the world did they do?

These guys wrote an application that allows for direct video manipulation. This is a video browser that lets you navigate through the video not only using the traditional timeline, but also by dragging objects along their course of movement throughout the video.

What’s so cool about that?


Did anything worthwhile come out of it?

Their video browser, called DimP (Direct Manipulation Player).

Why should I care?

As online videos become more and more popular, we start encountering more often situations where a video browser like this one might be useful. Maybe we just want to skip to a specific part of a scene (I’ve seen a few launch videos where I just want to get to the part where the rocket/airplane blasts off). Or maybe we just want to study some complicated motions (like dance moves or a pool shot). Either way, simply having an alternative way of browsing a video is definitely useful.

Now, comic strip time! (click on the image to enlarge it)


Reference: Dragicevic, P., Ramos, G., Bibliowicz, J., Nowrouzezahrai, D., Balakrishnan, R., Singh, K. Video Browsing by Direct Manipulation, Proceedings of the SIGCHI conference on Human factors in computing systems, April 05-April 10, 2008, Florence, Italy

July 9, 2008

Paper Week: Website Credibility

How would you feel if this blog had more ads than content, opened every link as a popup, and had grammatical errors roaming like wild beasts freely in my posts? I wouldn’t seem credible to you, would I? Today’s paper deals with just that: credibility. Don’t forget the comic strip at the end of this post. Also, if you’re interested, I’m listing references to all the papers at the end of the posts (below the comic strips). Feel free to look them up (Google Scholar is a good place to start).

Paper: What Makes Web Sites Credible? A Report on a Large Quantitative Study (reference at the bottom of this post)

What in the world did they do?

The authors surveyed hundreds of people to find out what they thought made a website more credible or less credible.

What’s so cool about that?

These guys came up with dozens of items relating to website credibility for users to rate. It was cool to see which items people perceived as making a site more or less credible.

Did anything worthwhile come out of it?

The authors gave some guidelines at the end of the paper on how to design credible websites. They were:

- Design websites to convey the “real world? aspect of the organization (let people know you actually exist).
- Make websites easy to use (unless you’re a government office).
- Include markers of expertise (people may actually believe you).
- Include markers of trustworthiness (linking to and getting linked by other credible websites seems to be helpful).
- Tailor the user experience (makes people feel that the experience is more personal).
- Avoid overly commercial elements on a website (awh… I was thinking that 10 more ads would have made this blog livelier).
- Avoid the pitfalls of amateurism (OMG UR NOT SERIOUZ, ARE U?).

Why should I care?

There are a lot of shady websites out there. And sometimes it’s just sad to see some perfectly legitimate websites being avoided because their design does not make them look credible. If you’re a designer, make sure to remember these guidelines. If you’re just a web surfer, be on your guard when you visit websites that stray far from these guidelines.

Now on to the comic strip! (click on the image to enlarge it)


Reference: B. J. Fogg , Jonathan Marshall , Othman Laraki , Alex Osipovich , Chris Varma , Nicholas Fang , Jyoti Paul , Akshay Rangnekar , John Shon , Preeti Swani , Marissa Treinen, What makes Web sites credible?: a report on a large quantitative study, Proceedings of the SIGCHI conference on Human factors in computing systems, p.61-68, March 2001, Seattle, Washington, United States

Paper Week: Designing for Micro-credit Groups in India

This is the third post on papers that I got to read during my HCI class last semester. Each post is accompanied by a new comic strip at the bottom. I chose today’s paper because the style was very different from most of the other papers we read in class. Enjoy!

Paper: Design Studies for a Financial Management System for Micro-credit Groups in Rural India (reference at the bottom of this post)

What in the world did they do?

These guys wanted to create a system to help micro-credit groups in rural India manage their financial aspects. They did a lot of user interviews, prototyping, and user tests to get their design right.

What’s so cool about that?

There are two cool things about this paper. First, they had one big challenge. Many of the potential users for this system were uneducated, hadn’t used or seen a computer before, and some were even illiterate. So their system had to be easy to use for these people.

Second, the way the paper is written is almost like a story. They went through all the steps of their design process. It reminded me of a User Interface Design class I took, where we had to go through user interviews, paper prototypes and usability testing. It was cool to be able to follow these steps in their paper.

Did anything worthwhile come out of it?

Well, they came up with an interesting design that seemed usable. The only problem was that most of these organizations couldn’t afford the computers anyway. I believe the authors went on to try using mobile devices in future research.

Why should I care?

Okay, there are probably not many reasons why you should care about this paper. I’ll give it a try anyway. Even if the resources are not always there yet, I think it is a noble effort to try and bring technology to where it is needed most. Also, I think this paper is probably an interesting read for those of you who wonder what the design process is like for a user interface.

That’s it for today’s paper. On to the comic strip!


Reference: Tapan Parikh , Kaushik Ghosh , Apala Chavan, Design studies for a financial management system for micro-credit groups in rural india, Proceedings of the 2003 conference on Universal usability, November 10-11, 2003, Vancouver, British Columbia, Canada

July 7, 2008

Paper Week: Social Psychology Applied to Online Communities

Today is the second day in a week of HCI-related research papers, together with new comic strips. Today’s paper proved to be a popular one in the HCI class I took last semester. Give it a search on Google Scholar when you have a chance!

Paper: Using Social Psychology to Motivate Contributions to Online Communities (reference at the bottom of this post)

What in the world did they do?

The authors of this paper tried to apply some social psychology theories to MovieLens, an online community where users rate movies. The goal was to see if they could motivate users to rate more movies by:

- letting them know their contribution was unique
- letting them know their contribution was beneficial (to others and to themselves)
- giving them specific goals (rate X number of movies)

What’s so cool about that?

These guys took a bunch of theories from one field and brought them over to HCI. It was cool how some of them stood their ground and others just didn’t cut it. It’s also pretty cool to find out what makes us contribute more or less online.

Did anything worthwhile come out of it?

They confirmed that when you let users know that their contributions are unique (not redundant with other users’ contributions) they contributed more. They also confirmed that giving users specific goals (not just “do your best!?), they also contributed more.

Interestingly, not telling users that their contributions were beneficial to others or to themselves made them contribute more than telling them. Also, users contributed more when assigned to groups than when working individually. This was not expected according to social psychology theories.

Why should I care?

Online communities are everywhere. From Wikipedia to Flickr to YouTube. We all like to use them, but we don’t always contribute. Yet these communities only work because of the people who contribute to them, not because of the people who just use them. Community designers must therefore look for ways to get more of us to do something of value for sites like these. In the end, we all benefit. The more people contributing, the better content we all get.

Now, to today’s comic strip. Enjoy!


Reference: Gerard Beenen , Kimberly Ling , Xiaoqing Wang , Klarissa Chang , Dan Frankowski , Paul Resnick , Robert E. Kraut, Using social psychology to motivate contributions to online communities, Proceedings of the 2004 ACM conference on Computer supported cooperative work, November 06-10, 2004, Chicago, Illinois, USA

July 6, 2008

Paper Week: Conflict in Wikipedia

Today starts a week of research papers! Sounds boring, doesn’t it? I know it probably does, especially for people outside the field of HCI (Human-Computer Interaction). That is why I’ll try to make this as fun and easy to read as possible. As part of this effort, I’ll end each post this week with an original comic strip. So let’s just get right to it.

Paper: He Says, She Says: Conflict and Coordination in Wikipedia (reference at the bottom of this post)

What in the world did they do?

You’ve most probably heard of Wikipedia, the encyclopedia that can be edited by anyone. You can probably guess that people don’t always agree as to what should go in each article. Well, these researchers studied how conflict and coordination occur in this environment.

What’s so cool about that?

Wikipedia by itself is awesome. But as for this research, it’s cool that these guys tried to understand when and how often people argue on Wikipedia.

Did anything worthwhile come out of it?

These researchers found out that as time passes, there are less people editing articles and more people discussing what should be in the articles.

They also came up with a simple, but cool algorithm to detect articles which had conflict going on. They used stuff like number of revisions and number of editors to figure this out.

The last thing they did was group together editors of an article. The resulting groups usually had people on the same side of the issue.

Why should I care?

When you’re searching for information on any topic on Wikipedia, you expect the information to be sufficiently accurate. And with so many different opinions floating around, how can you expect to find information that is not too subjective or wrong? Well, if we can understand how conflict and coordination occur in Wikipedia, we can pay more attention to articles in which people are having trouble deciding what should be included in the article and look for ways to work it out. In other words, dealing with conflict in Wikipedia means better articles for you.

Now, as promised, here is today’s comic strip. Enjoy! (Click on the image for a larger version.)

Reference: Kittur, A. et al. He says, she says: Conflict and coordination in Wikipedia. In Proc. CHI. 2007

June 26, 2008

Joining a New Lab

As part of my transition to a new lab, I have finally started working with them on a project. I still officially belong to the Data Mining Lab (at least through the rest of the summer), but it is exciting to start getting involved with the new lab. As a result, I have two desks in two different offices (about a 30-second walk from each other). I work mornings at one desk and afternoons at the other.

The lab I'm joining is called GroupLens. They do excellent research in the areas of recommender systems, online communities and local geographic information systems. They are the owners of MovieLens, a movie recommendation site where a lot of their research on recommender systems goes on. It is an excellent research group with excellent advisors. I will be working with them on a wiki-related project. I will probably talk about that project more in the future (I think I'll be working there for a long while).

I'll be taking a small vacation this weekend to visit Mt Rushmore with my sisters, who are visiting from Puerto Rico, so no more updates until early next week. Some interesting content is coming up some time next week, so stay tuned!

June 20, 2008

TA Assignments Have Arrived!

Today I received the letter informing me of what class I'll be TAing next semester. I am excited and nervous at the same time. I will be TAing for User Interface Design, a class I took last Fall. I really loved that class, so I'm really excited about being a TA for it. It also fits perfectly with my career interests (HCI). But it is a much bigger class than last semester and much more is required from me. I'll do my best!

Just for kicks, here are some posts I wrote about that class while taking it:
Quiz Kong
Quiz Kong Paper Prototype
Vending Machines and User Interfaces
Quiz Kong - Coded Prototype
Quiz Kong - Final Presentation

June 19, 2008

TA Evaluations

My first TA evaluations are in. And it looks like I did not do bad for my first experience as Teaching Assistant. It really was interesting. Giving three of the lectures was definitely a highlight. Grading not so much. Now I have to gear up for the next school year, during which I will be a full-time TA, going up to 20 hrs/week from 10.

Student evaluations varied a lot, but thankfully leaned towards the better side. I think the most negative comment was "help wasn't as helpful as other TA's in previous computer-based classes". But it is evaluations like this next one that really make it all worth it. One student wrote "Very helpful T.A., probably the best I've had so far".

I hope to keep it up next semester. Tomorrow I find out what class I'll be TAing. Oh, the suspense!

April 17, 2008

Programming on the Wii

One of the cool projects I'm working on this semester is the one for an HCI class I'm taking. For my project, I decided to research interactions using Wiimotes. Together with two classmates, we are investigating the differences between using one Wiimote at a time versus using two Wiimotes at a time. This is analogous to using one hand at a time vs. using two hands in our daily lives. There are some obvious advantages to using two hands. But for different types of tasks, we believe this difference is not the same. There are tasks that really benefit from having the two hands, but there are other tasks where having an extra hand may not add much (drawing, for example). That is why we have set to investigate these differences further.

Next week we hope to be having our user tests. Let's see what comes out of this!

April 15, 2008

My First College Lecture

Today was a very interesting day for me. The instructor for the class that I am a T.A. (Teaching Assistant) for is out of town this week and left me in charge of giving the class lectures. I have spoken to large groups of people many times before, but actually giving a college lecture is still quite a different experience.

I had no problem with the material, since it is an area that I know well and really enjoy. The class is called "Introduction to Internet Programming" and today we were discussing basic Javascript, which I am using for my HCI class project. I had no problem with the class size either. Less than 15 students attended. I even did ok with timing too. I managed to produce almost 40 minutes of lecture time (it is a 50-minute class).

In fact, the students may have not even noticed anything wrong with the class. But for me, it just felt weird. The reason for this is because I still don't feel that I belong at the other side of the podium. I still see myself too much as a student. I sometimes even forget that I am already an engineer! (That's the problem with going straight to graduate school.) What I need to do is internalize the fact that I am an engineer, that I am a professional in my field already. Only then will I feel that I am qualified to be on the other side of the podium.

I have two more classes to go, so I hope that by the end of the week my mindset has changed! It wouldn't hurt if the students actually learn something too.

February 25, 2008

Grading for the First Time

As a PhD student, if I don't have a fancy fellowship, I have to work as a research assistant or teaching assistant to sustain myself economically. This semester, I am doing a little bit of both. And the one that seems a newer and a more different experience for me is being a TA (teaching assistant). One particular new aspect about it is the grading. This week, I have been grading my first assignment ever. I'm glad the class has only 20 students, because grading 20 assignments is tiring enough. (I still haven't finished, by the way). The fine balance between being merciful and being strict is just hard to find. This week I have gained a bit more respect for teachers everywhere (those who grade, of course).

January 27, 2008

Papers on HCI

One of the classes I am taking this semester is mainly about reading HCI (Human-Computer Interaction) papers. This is an area that is really starting to get my attention, so I am very excited. Although there is a lot of reading to do, I think it will be worthwhile. Reading papers is one of the best ways to get a sense of the field and what has been done before. The problem is that normally you don't know where to start or how to select papers in order to get a good general idea of the field. I think this class solves this problem for me. I am reading all sorts of interesting papers on HCI, which deal with topics such as social psychology applied to online communities, electronic capabilities on paper, modeling affections, and more. There is only one more hurdle I have to get over: class participation...

January 20, 2008


Minus 10 degrees is tough. I admire all the people that can go on with their daily work and lives even when temperatures drop below zero. I have somehow managed to survive these temperatures using only jeans to cover my legs. But today I discovered the difference that just one more layer of pants can make. I went outside and had to wonder whether it was really below zero, since I felt so warm. I guess the same goes for programming. You can survive with just basic knowledge. But one more layer of extra knowledge can really make a difference! I guess that is probably why I decided to get my PhD...

December 13, 2007

Quiz Kong - Final Presentation

Yesterday, my User Interface Design class team finally presented our final implementation of our quiz-making interface. Although there were many parts left unimplemented, I feel satisfied with our work. The following picture is my team with our poster (I'm the one on the left):


And this is a screenshot of the interface. More specifically, the image library and the quiz builder:


I am amazed with how much I have learned in this class, especially with this project. The whole process was very rewarding, even if tiring at times. Some of the things I learned were:

1. Ideas don't tend to translate into code in exactly the same way as in your mind - The end result of this project was quite different than my first idea. Although the basic idea remained the same, many aspects of it changed during our design and implementation process. Just communicating the idea with my partners was enough for them to interpret the details differently and form their own design opinions. This was clearly evident when our team divided into two subgroups and made two entirely different paper prototypes. Another reason for this idea evolution is users. We had to design with our users in mind and that meant sometimes adding new features and removing others. Finally, implementation complexity played a big role in our design decisions. We had only one semester for this project. Therefore, we had to focus on the parts that were really important and eliminate many nice features for which we simply didn't have the time to implement.

2. Paper prototypes are cool - Our first design was a low fidelity prototype on paper. This was a very interesting experience. The reason for this approach was to allow a larger number of design ideas to be tried out and to avoid unneeded implementation and emotional attachments that come as a result of spending too much time on a design. This way, discarding designs and exploring more ideas became much more simple. Also, when we moved to the actual coding part of the project, we were able to focus more on the functional part of the code, since the design was already specified. The paper prototype served as a great guideline for adding all the different components to the project.

3. Evaluations and user testing are important - If it were up to me, I would've started coding directly from our paper prototype. Yet, there were still a lot of obvious (and not-so-obvious) problems that had to be addressed. To find these problems, we did everything from cognitive walk-throughs to heuristic evaluations. Then we took our first implementation and did user testing. We found lots of problems. I am amazed at how many. Buttons were missing, tasks were tedious, and things we thought were obvious confused our users. Thanks to all the testing we did, we were able to address most of these problems.

4. Rash implementation decisions can lead to coding frustrations - One decision that we made before starting to code led to a lot of troublesome problems later on. Initially, we wanted to store quiz information in a database. Due to timing constraints and the fact that we were using an entirely new programming language, we decided to use simple, temporary XML files to store our quiz data. XML files were very easy to use and handle using this programming language. The problem was that we left the files organized as if they were the actual database, which separated quiz information from questions and question groups. With a database, this would be easy to manage, but with XML files, keeping track of all the dependencies became a pain. If only we had just stored each quiz in a separate XML file...

5. I love procrastination nights - We had one night were, after pretending to code for a little while, we decided to just go play video games. It was my favorite project meeting. And, I believe it helped us work on our teamwork too. Every now and then, it is good to just take some time off and procrastinate.

In conclusion, I think what I learned during this project was: ideas change (especially when mixed with other people), paper is still cool (especially for "interface scrapbooking"), evaluations and testing remind you that your designs are not perfect (who would've thought the program needed to be usable too), hasty decisions produce frustrated programmers (I'm still dreading those XML files), and procrastination is good (well, only sometimes...).

November 20, 2007

Quiz Kong - Coded Prototype

Today my User Interface Design class team presented our first version of our coded prototype. I was going to post an entry in the blog yesterday, but I was very busy coding until very late (I went to bed after I started nodding in front of the computer at around 5am). There are still a lot of features and functionality to implement, but it is looking pretty good. It's actually very similar to our paper prototypes. It has been really fun to implement and Adobe Flex has really facilitated a lot of the work. I also used my tablet and pen to draw some of the images that go on the top bar. This is what they look like:


myquizzes.png takequizzes.png

Another part I really like is the "Quiz Builder". This is where the current quiz you are working on is displayed. It shows an outline similar to those you see in applications like PowerPoint. Right now we are using yellow to give it a "banana" look to go with the "Kong" theme. What do you think? Does yellow fit this application?

quiz_builder1.JPG quiz_builder2.JPG

November 16, 2007

Rotating Tetrominoes

For my A.I. class project, my partner and I decided to tackle the game of Tetris. It has proven to be very interesting. You notice there is much more to a game when you actually try to implement it. Tetris seemed so simple to me before this project. One thing I had never noticed in all the Tetris games I have played is how the rotation isn't always the same. In fact, there are at least five different types of rotation. I didn't realize this until my partner and I found out we were both rotating the tetris blocks (or tetrominoes) in different ways. Here are some pictures of rotation systems:



Can you see the differences? If you crave for more Tetris knowledge, check out the tetris wiki at Tetris Concept.

October 12, 2007

Quiz Kong Paper Prototype

Last week, my User Interface Design class team was temporarily split into two subgroups. Each subgroup had to create a paper prototype for the image quiz maker we intend to create. Then on Monday we would present our two prototypes in class. These paper prototypes are supposed to let us represent the interaction of our program without getting too distracted by superficial design issues. It was a really fun experience. Making an interactive web site on paper requires a lot of creativity. I felt like I was doing interface scrapbooking, cutting all the pieces of paper and putting them together to form the page. In the end, both our groups came up with different ways to solve the problem. Now the challenge is to somehow merge our two prototypes. Here is what our original homepage looked like:


I especially liked the monkey drawing at the top and the buttons on the right. I wonder how it will look after the merger.

September 30, 2007

Quiz Kong

I am taking a very interesting class this semester called User Interface Design. Two thirds of the class grade consist of a semester-long team project. For this project, we get to design or redesign a user interface for an application that we think needs improvement or for a new application. My team is working on a quiz maker that focuses on quizzes that use images. Our goal is to make image quiz making as smooth and easy as possible. We decided to name the application Quiz Kong, as a reference to the popular but heavily spammed quiz-making website Quizilla. This time, we're rooting for the Kong to win.