Project Overview
Final Paper

Week 1: May 29 - June 3

I spent most of this week doing the orientation with UNCC's REU students and orienting myself with the application (called SoundPainter) that I'll be working on over the next month. I also met with my advisor and talked about the the changes I'll need to make to SoundPainter to prepare it for the user study. My first task will be to alter the application so that it reacts to touch events. Right now, SoundPainter only interacts with mouse events, and the windows touchscreen doesn't interpret touching the screen as a mouse event. There is a program called Touch2Tuio that was created by some grad students at the University of Bremen. Their website says it's a work in progress -- it can only be executed from the command line, and it needs the name of the window as a parameter. This will be interesting. Touch2Tuio will send touch events from the Windows API to a TUIO (Tangible User Interface Object) client. The TUIO client API provides a protocol for handling touch events.

Week 2: June 4 - June 10

This week I continued to work on getting the touch events working. The user can now draw by touching within the SoundPainter window. However, if the user touches in one area, their interaction will be displayed in another area, instead of in the area directly beneath their finger. It's quite strange. It must have something to do with the coordinates being sent from the TUIO cursor to the application. I'm relying on the documentation on the tuio.org website to explain to be how coordinates are generated, but unfortunately it hasn't been all that helpful so far. I will keep trying!

Week 3: June 11 - June 17

One of the grad students, Erin, has to write a fair amount of code in order to get SoundPainter's applications on different computer to display evidence of each other's interactions. She spent a lot of time reorganizing the SoundPainter code, which was piled inside of a processing editor thus far, into eclipse. Now, instead of two classes, there are around ten classes! It has changed a lot. It's taken me awhile to get used to the way the code is organized now, but I think I will appreciate the change in the long run. It is a lot easier to find the functions I need to work on. Based on how she reorganized the SoundPainter project, I was able to transfer the server code into eclipse.

I also figured out why the TUIO coordinates seemed off. I had made the size of the application smaller to make it easier to test, but the application was still designed to be viewed in full screen. So when I touched the far side of the SoundPainter window, the application would still draw closer to the center of the window than is correct. But once I made the application full screen again, it began to work.

Week 4: June 18 - June 24

I spent this week working on the ClockDrawing class. This is the class that will display the screenshots from the previous 12 hours. Professor Latulipe came up with the idea of making the screenshots display around a clock. The location of the screenshots will depend on the current hour. If it is 2:15 pm, for example, the most recent screenshot will be displayed in the 2 pm slot. I found an example of how to program a clock on the processing website, but a lot of the numbers were hard-coded and it was difficult to understand. Erin eventually found a clock programed in Java that was way more understandable, so I'm using that. Now I still need to work on enlarging the screenshots using the algorithm that Celine helped me with. I'd never heard the word interpolation before. I think it will look pretty cool when I'm done.

Week 5: June 25 - July 2

I spent this week preparing SoundPainter to be sent off for a user study, since Professor Latulipe left at the end of the week and it was supposed to be done before then. I spent awhile inserting code that will log the user's activities. That logging information is sent to a php database that another grad student, Vikash, created. Professor Latulipe animated the sequence that swaps the client and server buffers on Wednesday, but for some reason the code that I worked on in a separate class no longer works properly now. I spent Thursday trying to figure out why.

I attended a dance.draw meeting on Wednesday afternoon. The HCI Lab has collaborated with the dance department since 2008. They've created various applications that project designs on a large screen behind the dancers. The designs are based on the dancers movements, which are tracked by cameras overhead.

On Friday I spent half the day talking about the HCI Lab to visiting middle school students. Two ph.d grad students, Andrew and Erin, also presented. They seemed interested in what we were doing, and all of them enjoyed interacting with SoundPainter.

Week 6: July 3 - 9

I spent this week trying to fix a few last bugs in SoundPainter. One of them turned out not to be a bug after all! I had been struggling for two days to figure out why the history screenshots around SoundPainter's clock weren't enlarging properly. A screenshot of the server is taken each hour so that the user can see the level of activity going on up to 12 hours previous. The screenshots are stored in an arraylist. A new arraylist of 12 screenshots is copied from the old arraylist every hour. To test the screenshots, I had reduced the interval from 1 hour to 3 seconds so that I could quickly have an arrayList of 12 screenshots. However, when the image is enlarged (by touch or by covering it with the mouse cursor), the image is set to expand over 1.5 seconds and then stay expanded until the mouse moves or the user touches somewhere outside that screenshot. When I was testing it, the screenshots would expand, stay enlarged for a short period, and then re-expand when they should stayed expanded. I went through my code again and again to try to understand what was happening. I even went through the algorithm once more and then re-wrote the code from scratch and got the same results. I finally asked one of the grad students, Berto, for help, and he eventually realized what had happened. When I increased the interval to an hour, it worked perfectly! Since the screenshots were being put into a new arraylist every 3 seconds, the already enlarged screenshots were going through the process of expanding every 3 seconds because each screenshot was being replaced by a new screenshot every 3 seconds. It wasn't obvious because during testing, all the screenshots looked the same. It felt really good to finally understand what was going on. I had spent my time focusing on the code that expanded and enlarged the images, that I had neglected to think about what was going on in the big picture. I definitely learned a lesson from that mistake!

Week 7: July 10 - July 16

The coding for SoundPainter is now complete, so this week I worked on a few small projects.

I updated the Dance.Draw website. Dance.Draw is a collaboration project between the HCI Lab and the dance department at UNCC in which dancers interact with software the HCI lab creates. It was designed using iWeb, so I've been using that tool. The features seem pretty intuitive. I've done a lot of cut and pasting. iWeb makes it easy to design a professional-looking layout.

I've also been assigned to create a script using Applescript that reduces the uploading of videos from the Flip Camera to The Choreographers Notebook from a complex process to a minimal-step process. This will involve setting up the FlipShare preferences so that the videos are saved automatically, using a free program to convert the video to a web optimal format, and writing the script so that the converted video appears on the Desktop. I'm kind of nervous about this, because I've never written a script before and I have no idea how to do it.

Week 8: July 17 - July 23

I spent most of the week working on the script I described in my last entry. I was happy that Erin, a ph.d student, showed me a version of the script she had worked on a long time ago. Since I had never used Applescript before, I spent a fair amount of time looking over tutorials. I also spent two hours trying to figure out why one of my terminal commands wasn't working (it turns out that "~/Flipshare Data/Videos" doesn't work, but ~/"Flipshare Data/Videos" does work!). I've figured out most everything now, and it seems to be working well. I've starting reading papers relevant to the SoundPainter aging-in-place project. Those should help me prepare my presentation and final paper.

Week 9: July 24 - July 30

I spent this week preparing, practicing, and then giving my presentation. I presented on Thursday with the REU students from UNCC's program. Their program ends this Friday, so that's why I had to present this week instead of next week. Two of my roommates, Cecilia and Valerie, just left the university. I'm going to miss them!

Anyway, I always get nervous about presentations. I tend to stumble over my words, but I'm trying to improve. This time I wrote out a script for myself and practiced it over a couple of days. That helped a lot.

Week 10: July 31 - August 6

I spent this week reading papers and writing up my final paper. Seeing as this is the last week I'll be in North Carolina, I've been reflecting a lot about all the things I've experienced over the last ten weeks -- this has been a truly amazing summer! I've met so many nice people and learned so much. All the time I spent programming in the lab was helpful because it upped my confidence. I also learned so much from interacting with the ph.d students and my mentor. Anyway, now it's back to California to rest for a couple of weeks and then start my last semester of classes. Goodbye North Carolina, I'm sure I'll be back to visit someday.