Journal
[ Weeks:
1
2
3
4
5
6
7
8
9
10
]
Week 1
May 28 - June 3
Monday - Friday:
I flew into Pittsburgh this past weekend to get
settled in before starting work on Monday. The cab ride from the airport
was quite a departure from my California cab experiences; the cab itself was
immaculate and the driver was playing an *opera* CD.
On Monday, Raye, another DMP participant I'll
be working with this summer, and I met our mentor, Professor Mankoff, who showed
us the lab where we will work. We all had lunch at the
Phipps Conservatory. We
discussed the project and made a preliminary plan of action. After lunch,
Raye and I explored the
Dale Chihuly
glasswork art exhibit upstairs at Professor Mankoff's recommendation.
It was pretty awesome. To the right is my favorite piece, mostly because
I think it looks like rock candy (mmm).
Then I started searching for an instant
messenger client to log users' status changes. I found
Pidgin, which is the latest incarnation of
Gaim. It logs activities to a system log but seems to have some odd
behavior. For example, it will sometimes log a statement like "userxyz
changed status from Available to Available." I also found a website called
GetBuddy.info that has a plug-in for the AIM
client that will provides reports of users on your buddy list on its website.
The neat thing about GetBuddy is that it also displays graphs of user's
idle/away/online time, which is relevant to our project.
Raye and I visited the engineering library to
familiarize ourselves with the resources available there. We also got to
work on getting our CMU ID cards. We talked to all of the appropriate
people and filled out the appropriate forms, and took on the appropriate titles
(I am officially a "visiting scholar"), and yet we are still waiting (oh,
bureaucracy). Until our accounts are set up, we are unable to log into the
CMU network. Therefore a lot of the work in the first week we've done from
home, where we can easily get online.
Much of this week has been spent reading
background material on HCI, environmental issues, and behavior change. I
spent the latter part of the week conducting a pilot study where I recorded the
IM status changes of two of my friends (using Pidgin) and then interviewed them
about their behavior. I also downloaded the
AIM SDK, recommended by
Ian Li, and started working on the IM bot to
log behavior. I began experimenting with an example bot in C++, making
adjustments to it. However, since Raye is more comfortable in Java and
we'll probably be collaborating on this, I'm migrating over to Java.
My frustrations with the initial setup of Java
projects are endless. "Jars" that aren't for cookies? What?
Anyway, so I've been refamiliarizing myself with Java. And finally, I have
a sample bot running in Java, so I'll continue working on that. If you are
interested, it's called monitorbot. At this point all it will do is repeat
what you say while tracking status changes behind the scenes.
I also got
certified to work with human subjects this week!
There are a few other characters in this story
I should mention. Professor
Anind Dey is Prof. Mankoff's husband, and he is interested in the behavioral
aspects of the project. He is also a professor at the
HCII. I also met
Aubrey Shick, who is a graduate
student that has been working on the
Footprints project. I went to several meetings on Friday, where I met
some other HCII people and two students who are also here for the DMP. One
of these students, Heather Tomko, is also working on the IM Power project, but
concentrating on feedback mechanisms.
Week 2
June 4 - June 10
Monday:
I got my Carnegie Mellon ID today! And my computer account should be activated
by tomorrow morning. This is great news because it means I can work in the lab
now.
At some point, Raye found a really helpful
tutorial page about making bots (see links page).
Goals for the week:
- decide on format for IM status logs
- get bot to log status to files
- run another pilot study on either Prof. Dey or Prof. Mankoff
- get survey finalized and put up on
surveymonkey
- add the papers I've read to my
citeulike with "impower" tag
- look into recruiting participants from Pomona through mailing lists
Tuesday:
I feel like last night I got a better
understanding of the role of the interview in our studies. I was under the
impression that we were after certain information and once we had a survey to
gather that information, all was well. However, as it turns out we're
looking to get more in-depth information from our participants. So today I
worked with Raye on creating open-ended interview questions and templates for
follow-up questions based on survey responses.
Then later tonight, I crafted an intro script
for the interviews and questions meant specifically for Prof. Mankoff based on
her responses to the survey.
I can see some similarities with the interviews
I'm dealing with here and stuff I did for my software development class.
Today, we also made great progress on the bot.
It now logs info to a file (thanks to a useful link from Prof. Dey) formatted in
CSV form so it will be easy to load into a spreadsheet. We started by
using the Timestamp class, but then found the SimpleDateFormat class which
provides more control over how the time is output. I guess some of this is
simple Java stuff, but as I've said, my experience with Java is limited.
So I still get a little excited when things work.
Tomorrow I'll focus on the bot. For some
reason it's running a method called OnUserChange multiple times for one user
state change, but we only want one of these to show up in the log. So I
need to find out why that's happening. Hopefully I'll figure out that I
just need additional conditionals because of the nature of state changes, but
we'll see. And at some point tomorrow if she's available, I plan on
interviewing Prof. Mankoff with the follow-ups.
So another perk of my ID card is gym access!
I went tonight, and let me just say, wow. TVs in the cardio room?!
The Pomona gym has a radio... yeah.
Wednesday - Friday:
The rest of this week I've been working on
interview questions and on tweaking the bot. I did a practice interview
with Prof. Mankoff over instant messenger. It was nice to get the practice
since I'll be doing a good number of these in the weeks to come.
It seems that the repeating line problem I was
having may be a "feature" of the AIM SDK. Therefore, I went with a
band-aid solution and put in a conditional to prevent the repeats.
Unfortunately the AIM SDK is not completely open source, so that makes probing
deeper difficult. Anyway, but that problem is "solved" for now. I
also edited the output format some more at Prof. Dey's suggestion.
Prof. Dey also asked about whether the bot
could tell when someone returned whether it was from away or idle. I had
worked on this some, but the complications arise when someone is both away and
idle and then become "online." Or, if they are idle then away, and then
just become away. Since each user is only in one state at a time, it
wasn't clear which one will show up as the user's state. At this point, it
seems that whatever the most recent state was is the current state.
Therefore, there doesn't seem to be a straightforward way of having the bot deal
with this. So we'll leave it to post-processing of the log file.
Today I had a meeting with Prof. Mankoff,
Heather, and Raye. We discussed goals for the next week and got a head
start on the week after since both Prof. Mankoff and Prof. Dey will be gone for
a week starting next Thursday.
Prof. Mankoff went over some research
techniques like diary studies and ESM studies. What we're planning on
doing with the bot is kind of like a diary study. At the end of the
observation period, whenever people go idle for a certain amount of time and
then come back, the bot will ask them what they were doing and what their
computer was doing. We are trying to get this ready for the first study,
but it is not clear how to have the bot do something at a certain time.
We also determined some things to accomplish
for next week:
- find one-way hash function to encode usernames for privacy
- get bot running on one of cs servers
- write script that will restart bot if it fails
- change bot to read in last line of existing file to keep line id numbers
accurate
- do more testing with bot to make sure it is working as expected
- get finalized survey on surveymonkey
- make sure survey answer choices are complete (e.g. list of programs computer
is running)
- recruit people for study
- do more interview practice
- get interview screen names
- write up detailed script for how to conduct study
Week 3
June 11 - June 17
Monday:
Today Raye and I split up some of the workload
and decided what questions we needed to ask the professors. We wanted to
clarify exactly how many people we needed to recruit for each part of the study.
We also inquired about the updates to the IRB application.
I drafted the detailed study instructions for a
few hours. I also entered the daily part of the survey on SurveyMonkey but
discovered that the longer survey would require a paid account.
I also worked on getting the bot to run from
the command line. This is no small task for someone so inexperienced in
the nuances of running java programs that use various libraries. I plan on
working on this more tomorrow.
Tuesday:
Well, almost all of my day has been spent
poring over online tutorials trying to figure out how to take this bot that runs
*perfectly* within Eclipse and make it run from the command line or just outside
of Eclipse. No luck so far.
I kept getting "Could not find main class"
errors. Then I found
this tutorial online for exporting a jar directly from Eclipse, but when I
try to run it from the command line, I get a NoClassDefFoundError for
com/aol/acc/AccEvents. I have no idea what the problem is. I asked
Ian for help. We'll see how that goes. I feel kind of bad about
bothering him...
I did make some other progress on the bot,
though. I added in the hash function to create a unique id based on
someone's screen name. This is for maintaining privacy in the study.
I found this great class, java.security.MessageDigest that does the trick!
I also found code that
takes the result of using MessageDigest and creates a nice string.
I also separated out the Conversation class to
its own file instead of being nested in the main class (you know, style thing).
I also added an "already off" status to the bot so when the bot first signs on,
it won't look like everyone has just signed off.
In between java frustrations today, I also
worked some more on the step-by-step plan for the study. I asked some
questions of the profs about this, but I'm still not completely sure what I am
aiming for here. I mean, I've never conducted a study like this, so I am
not sure how these things are supposed to go exactly. But I'm trying.
Tomorrow I'll adjust the step-by-step plan
based on any suggestions. My main goal for tomorrow, though, will be
getting the bot to run outside of the Eclipse environment.
Wednesday:
Success! The bot runs from the command
line. Ian pointed out that I needed to have the .dlls in the same
directory as the jar. It was really nice of Ian to help me out, since he
really has no obligation and I know he's very busy.
Anyway, working on that consumed most of the
day...
However, I also worked some more on the plan
for the study based on comments from Prof. Mankoff and Prof. Dey.
Tomorrow's our last meeting before the profs
leave for a week. Scary stuff. Hopefully we get everything in order
for the study.
Thursday:
I just got back from a meeting with the IM
power group. The profs gave us an update on the status of the IRB
application, which we're waiting for before we can start recruiting.
Hopefully it will be approved by tomorrow. We're going to run a complete
pilot study this weekend on the IM power group for practice. Also, we
decided we'll be paying study participants with Amazon gift certificates, so
we'll have to figure out how that will work.
I'm waiting to hear about getting an account on
a CS server so I can test the bot there. I also need to figure out how to
write a script to restart the bot if it dies. The bot will already try to
restart for a certain amount of time, so what Prof. Mankoff suggested is that we
might just have the bot somehow send us a notification when it goes offline (I'm
thinking a buddy pounce in Pidgin maybe for this). I'm also waiting on
getting the information about a paid account on SurveyMonkey so I can input the
larger survey.
We worked out some other details. For
example, the participants will have to have their IM client on a certain number
of days and must complete the nightly survey a certain number of times in order
to get paid. We decided on sending them IMs to remind them to fill out the
surveys.
Heather and Prof. Dey shared some of their
thoughts on feedback mechanisms that will be explored in phase II of the study.
I'm kind of excited about phase II because it sounds like some interesting
coding will be involved.
Now I'm going to add the question/answer part
to the bot. When one of the researcher's screen names sends the bot a
certain IM, the bot will send previously written questions to specified study
participants and record the responses. It sounds cool, but should be
pretty straightforward to implement. My goal is to get this done by
tonight.
Friday:
I added functionality to the bot today.
The experimenter can send a certain message to the bot specifying which users to
start asking questions. I'm still working on having the bot send out a
message to the experimenter when someone hasn't been online for 12+ hours.
I've also discovered a flaw in the bot--the
method called when a user changes status is *not* fired off when someone becomes
idle if they are already away. So, I'm going to try to figure out a way
around this.
I tried to get the bot running on a server
here, but there seems to be a compatibility issue because the AIM SDK has 32-bit
libraries, and the JVM on the server is 64-bit. I get this "wrong ELF
class" error. In the mean time, I'm testing the bot on a 32-bit server at
Pomona.
Saturday:
The bot has been running fine on the Pomona
server. I knew there was a way to have the process continue running even
if my SSH connection broke, but until today I didn't know what it was called.
I did a search online and came up with the screen command. It's pretty
cool.
Also I'm looking into a better hash for the
usernames; the one I'm using now seems like overkill. Then again,
security/privacy is very important for human studies research (thank you HIPAA
certification). So maybe the really secure hash is just right, even if it
does make the logs clumsier. I'm still experimenting with it.
Tonight I'm going with my housemates (other
DMP/CDC students) down to the Waterfront for shopping and food; I'm in it for
the latter, they for the former. ;)
Sunday:
Today I worked on getting the bot to tell the
difference between returning from away and idle and also fixing the issue of
dealing with not firing off idle. I also talked to Ian about the problem I
was having on the server.
Week 4
June 18 - June 24
Monday:
Good news! I figured out how to get the
bot report idle and unidle even if the user's away. See, another reason
the status change method is called is when someone's idle time changes. So
I accessed the old amount of idle time and the new amount of idle time for the
user. Based on this information, I could determine whether the person's
idle state changed (i.e. if it went from zero to nonzero or vice versa).
I was so glad this worked! But at the
same time, I was wondering if there were a more straightforward way of doing it.
However, my method was confirmed by a response in the AIM developer's forum.
So now, I just need to finish up making the bot
tell when someone has not been online for 12+ hours.
Tuesday:
Welllll, as it turns out there is something
else I need to do with the bot. And that is put in a cron job to make it
automatically restart the bot if it dies. We had discussed this
previously, but we had also discussed having the bot send notification if it was
offline.
So I spent the first half of today learning
what in the world cron is, how to use it, and how to write the script to check
if the process is dead. Luckily, there are a lot of resources online for
this kind of thing. It turns out to be pretty neat. So every minute,
cron will run the script to see if the bot is running. If it's not, it
will run the script to start the bot, and if it is, it will do nothing.
Now I can finally get back to adding the
offline-too-long check to the bot.
Wednesday:
Today we start the pilot study of *everything*
that will be involved in the study. And I'm pretty exhausted from
preparing for it yesterday. I went into the lab for 8 hours yesterday,
then came home to eat, and then got back to work on the pilot stuff at home from
9pm to 5am. I worked on the bot during the day and then I had to do all
the study stuff at night, i.e. fixing the surveys based on suggestions from the
profs, typing up final drafts of all the emails we'll send to the participants,
making the online consent form, and updating the final plan of each step of the
study. At least Raye had input the two surveys.
So why did the bot take so much time yesterday?
Well, I had to figure out how to use the crontab. This involved having to
change the editor I was using for it, then figure out the syntax for crontab
entries, then write a script that executed the bot, then write another script to
restart the bot if and only if it isn't running. On top of the cron stuff,
I had to program the additional requested functionality.
Coding the bot is pretty fun, though. The
study preparation stuff, however--I'm not gonna lie--can get pretty tedious.
Thursday-Sunday:
The
"pilot" did not end up happening as I had expected. Since the profs were
out of town and busy, they couldn't really deal with filling out the surveys and
stuff. But it was a good test of the bot anyway. I monitored the bot
status file and made some adjustments to the code. For example, the bot
was reporting idle times twice in a row in some cases because it would get two
alerts that the user's idle time had changed, so I added in a check for going
from idle time of 0 to idle time of nonzero and only then report the user as
becoming idle.
This weekend, I went out exploring Pittsburgh.
My AAA card came in super handy, allowing access to maps of various kinds to aid
me in my travels. As it turns out, there's not a whole lot going on
here... I went to some art galleries downtown, and that was nice. I
also spent some time at the local Carnegie Art Museum, which was really cool.
They had this video exhibit of people doing karaoke of The Smiths, which was
amusing. I went into the lobby of the Andy Warhol Museum. I was
planning on going in, but the people working there were kind of jerks. In
the lobby, though, they had a plaque on the wall of lyrics to "Personal Jesus,"
a song by my favorite band, Depeche Mode. Pretty unexpected and awesome.
Week 5
June 25 - July 1
Monday - Tuesday:
I updated the consent form and planned
participant communication to omit explicit references to the bot and idle time
(at the profs' request). As co-investigators, Raye and I signed the IRB
application; once they receive our signatures, it will get final approval.
We can't start recruiting until then.
I'm running the pilot on Raye for a couple of
days, since the other pilot didn't really happen. One issue that's already
come up is a problem with the bot not recording the initial message from people
who were just added. It turned out to be a problem with how the code was
ordered in the function called when the bot receives a message. So I fixed
that.
Some things I still need to work out are making
the survey URL in the reminder IM into a clickable link. This shouldn't be
hard, but I need to find out what tags are allowed in the MIME type I'm using in
constructing the message. Also, I need to find instructions for how to
show idle time in all the common AOL-compatible clients.
Wednesday:
Today I had a meeting with profs, Heather, and
Raye about where we're at in the project and where we're going. We cleared
up some last minute business about paying subjects using Amazon gift cards.
And, we got final IRB approval!
Mostly, we concentrated on the next phase of
the study, which is the feedback/behavior change portion. The profs
mentioned a CPU monitor/processes monitor to include as part of the study.
Hopefully there's something available already, as building one would not be a
great use of time at this point. Prof. Mankoff mentioned something called
top. Not sure what that is; I'll need to look that up to avoid looking
like an idiot.
We also got a little crash course on the stages
of behavior change based on Prochaska's model (took me awhile to google up the
right spelling on that--it sounded like "Perchanska's" to me... I was waaaay off
there).
So everyone at the meeting is supposed to
brainstorm 10 feedback ideas by Friday. I worked on mine right after the
meeting; ideas have been floating around my head since we first started talking
about feedback. I think this feedback mechanism part of the research will
be pretty fun. I mean, it seems to have more opportunity for creativity
and, perhaps, graphics! Perhaps. But I'm not sure how far into it
I'll get since I'm already almost halfway done with my time here. It's
really flown by!
I also made some fixes/improvements to the bot
today. Prof. Mankoff suggested some changes for the log format.
Also, for sending out the survey reminder, I thought I was using a nice little
hack that accessed the 60 most frequent buddies (since we'll have 40-50, this
was fine), and it worked during initial tests. However, there doesn't seem
to be an easy way to *remove* people from frequent buddies. So, the bot
would keep reminding anyone it had ever talked to, which is bad. So much
for the hack. :( I'll actually need to work out a better way to do this...
Thursday-Friday:
I worked on a better way to remind people about
the survey. I set up an array that gets updated at various appropriate
times by the bot. Also, I set up an array for people that have been
offline since the last check for who's been offline. This seemed the best
way to tell who's not participating enough to earn their pay.
On the study side of things, I started sending
emails in response to potential recruits for the study. I've really had a
chance to work on my email etiquette replying to these people. I mean,
yes, I had already written out templates, but some people call for specific
responses that of course must be respectful and official-sounding... Also,
Raye and I worked out a labeling system in Gmail for responses (qualified,
consent signed, etc).
I also typed up the final version of the first
round of instructions for participating. Raye sent that out to people
pretty late Friday night, and within a few hours, we already have seven people
who have correctly added the bot. Some people have tried to have a
conversation with the bot. It won't take them long to notice its limited
intelligence... Hey, the bot's not supposed to be a great communicator; its main
purpose is behind-the-scenes work and the occasional automated reminder.
I submitted my brainstorming results too.
I've now read through everyone's ideas. So much to explore--it's
overwhelming but exciting at the same time. Prof. Dey had already said at
the meeting that at some point, which ideas we choose to implement may seem
arbitrary just because there are so many, and we can't really test all of them
in this first round. But when he says arbitrary, I don't think it means
the same as layman's arbitrary, it's like scientific arbitrary, as in based on
some considerations/past research. Anyway, so first we have to get through
this two-week basic observation study.
Saturday:
Today, I plan to download the consent forms and
completed general surveys from survey monkey. I'm going to set up a
spreadsheet of information and double check who has added the bot. All of
this will be done in a privacy-protecting manner of course (I'm using
cryptographic hashes for screen names, for example).
---
Well... Raye seems to have beaten me to the
punch on starting the spreadsheet. Tomorrow I'll fill the rest in and get
some other stuff ready for the study.
Sunday:
Today I sent out a bunch of emails to the
participants as final steps before the study begins, and I did a final sanity
check on the bot. It makes me nervous that no one has wanted to review my
code. I mean, after taking the software development course where we
learned all about the importance of design and code reviews, I feel a bit
uneasy. If something goes wrong with the bot, it's all going to be on me
since I'm the one that created it. I mean sure, we're not deploying it or
anything, but at the same time, this study will take a lot of time and money, so
if something goes wrong, it will be very costly.
Today I found one issue, which is that if the
bot is talking to another bot or the AOL System Msg, they will go into this
infinite ping pong until my bot is rate limited. So, what I've done is put
in some checks to see if the other participant in the conversation is a bot, and
if so, don't automatically respond.
I also worked out a system for checking the log
to see that people are signed in at least once a day.
Week 6
July 2 - July 8
Monday:
This is the first day of the study--how
exciting! Raye is gone all this week on vacation, so I'll get to take on
this whole first half of the study myself. I'm actually looking forward to
working more independently though.
Anyway, so it turns out there is still a lot of
work to be done each day of the study. Each night I'll need to tell the
bot when to remind people about the nightly survey. I also need to email
all the participants. I'll need to download their nightly surveys.
At some point, I need to separate the log files into one for each participant.
It would also be helpful to build something to calculate idle time
automatically, but worst case this could be done even after the study. I
also need to monitor the bot log file to make sure nothing weird is happening.
I also need to field any inquiries about the study or problems people experience
with the surveys.
And at the same time as all this, I need to
work on finding a CPU monitor that logs processes and their CPU usage.
This is for the next phase of the study.
Tuesday:
I did some more research on a CPU monitor.
I've found some programs (that cost money, so forget that) and I've found some
scripts. One of them is always returning 0% CPU usage for all processes,
even a media player playing a movie. I'll either mess around with that one
to fix it or keep looking.
The second group of people started the study
today. All is going well on that front.
Wednesday:
Yes, it's Independence Day and I probably
shouldn't be working, but alas, here I am. The profs told me I need to
recruit 10 more people for the study, this time ones that use desktop computers.
As it turns out, laptops don't consume as much energy as initially thought.
I sent them an email on the progress of the
study. They responded and seemed pleased that it's going smoothly.
I did take a break later in the day, though,
and went to see License to Wed with Kristine (other DMP student in the house).
And we finally made it to Fuddruckers! It was awesome as Fuddruckers
always tends to be, but it lacked the flair of the Texas Fuddruckers I'm used
to. Oh well.
Thursday:
I had a meeting this morning with the research
group. The profs had done a lot of work on preparing for the next phase of
the study and had handouts for us. It's nice to see where we're going with
the study and everything. They also went into some detail about why using
only laptop users was a bad idea.
I showed them the script I had found online to
do the CPU stuff. I have no guarantees on it, though, as I just found it
online and it happened to work. It's in VBscript, which I don't even know.
Of course, it's pretty straightforward. But I'm not sure if it requires
software that I just happened to already have installed or something.
Heather's taking the programming part from there, so I guess she'll figure it
out.
I was assigned to develop "mockups." And
to be honest, I don't know what they are expecting. I asked what exactly I
was supposed to mockup but didn't really get a clear idea from the response.
So, I guess I'll throw some stuff together and see what happens.
I start the third and final group of the study
today. A few people have dropped out and five haven't done all of the
preliminary activities, so they probably won't be included. But this was
expected, so we started 40 and hoped for 30 to see it through.
I put up an ad today to recruit the desktop
users. I haven't gotten as great a response as with the laptop study...
not sure why.
I also downloaded the all the surveys and sent
them to Prof. Mankoff.
Friday:
One more person from the first study completed
the preliminary activities, so I guess we'll let them be a participant.
I also now have had one person for the desktop
set sign the consent form. Narrowly avoided some trouble after someone put
a limit on the consent form. Fortunately I noticed in time to remove it
before the participant attempted to sign it.
Today I mostly worked on this nebulous "mockup"
task. I'm doing some display mockups and some text mockups because it's
not clear whether we'll be doing only IM feedback or also some sort of display.
Saturday:
Today, I finished up the mockups and sent them
out the group. I had no idea what they were expecting, so I hope I wasn't
too far off. Here are a few of them:
This shows the planned position for the window:
I also examined some of the survey monkey
downloads because Prof. Mankoff was having trouble opening them.
Kristine and I went into Squirrel Hill for fun
of various sorts. We found this amazing pizza place that puts everything
*under* a thick layer of crispy cheese. My description is terrible, but
the pizza was delicious. I can't remember the name... but I know
where it is. We also found this sweet record store that looks pathetic
outside but actually has a huge upstairs area with tonnnns of records and tapes
and CDs. I found one Depeche Mode picture sleeve sans record, but it was
one I already had. No New Order...
And my cat at home had kittens today!
Can't wait to go home to see them.
Sunday:
Today, I responded to some study emails.
Prof. Mankoff emailed me to tell me I need to reformat all the survey monkey
downloads. I did all the usual study stuff tonight.
Raye came back tonight, so we're going to have
to figure out how to split things up. Also, Prof. Mankoff wants to meet
with each of us individually to discuss what she wrote and what each of us wrote
on our DMP progress reports.
Week 7
July 9 - July 15
Monday-Tuesday:
Today I guess I will work on reformatting all
of the survey monkey stuff as Prof. Mankoff requested.
Tuesday I had a meeting with Raye, where I
officially caught her up on everything she missed last week.
The study is going well overall; we still have
over 30 people for the laptop part. However, desktop recruiting is still
slow.
I did the study stuff tonight as usual.
Wednesday:
Our research group minus Prof. Dey had a
meeting today where we discussed how we're going to implement the whole feedback
system. Prof. Mankoff said everyone seemed quiet. Prof. Mankoff
reiterated the plans.
Prof. Mankoff wanted someone to code with
Heather to get the sensor going. I volunteered (finally, I get to do some
more actual coding). I spent the whole day working on the sensor. We
have it generating the URLs correctly, but opening a connection to the URL does
not log the information as it's supposed to.
Thursday:
As far as the problem we are having with the
sensor, Prof. Mankoff said in the Ruby code she wrote for the logger, it only
accepts gets not posts. This is relatively new terminology to me, so I
wasn't sure what this meant for our code. Prof Mankoff messaged me some
help later.
Prof. Dey IMed me later to ask how things were
going and to tell me they wanted to deploy by tomorrow. By then it was
around 9:30 pm. Needless to say, I felt a bit overwhelmed--so much is left
to do before we deploy this software, and also, I hadn't even seen this sensor
code until yesterday. At least he agreed to wait until Saturday.
So it looks like tonight and tomorrow will be
frantic stressful crunch time.
Friday:
I stayed up working all night. Got a lot
done last night/this morning. These two days kind of blurred together with
no sleep to separate them. First I got the URLs to open up right thanks to
Prof. Mankoff's explanation. Then I worked on getting the IP addresses.
Heather had provided some code to start with, but some formatting issues came
up. Then I made a really long list of media player processes to check for.
Wikipedia was great for compiling the list of applications (Heather had found
the list there), but finding the actual process names was a drawn out googling
affair. Then I experimented with various cutoffs for classifying CPU and
network usages.
Also had to do all the usual study emails/IMs.
Kristine suggested I ask Raye to do that. I just might. It's just
that it would involve sending her the spreadsheet and explaining to her how to
communicate with the bot (it takes special commands that are not explicitly
presented to avoid non-researchers using them), and you also have to do it in
increments or else the bot will get rate-limited. So see, it might be more
work enabling her to do it. More importantly, study 1's almost over
anyway.
Saturday:
Last night/this morning I worked on packaging
up the program for distribution to our subjects. God, these jars again...
but all that messing around before with the bot actually taught me a lot about
how to package up java apps so for the sensor it went much smoother (also
because there weren't weird extra libraries involved this time). I was
surprised that just putting a shortcut to the jar in the Startup folder actually
works for making the program run at startup even when there's an extra script
involved. Thank god... I also just finished drafting installation
instructions and putting up the file to download on googlepages. As
far as I can tell, I have to make a separate version for each user so that it
can contain their user id.
I put up like 33ish versions of the sensor on
googlepages. As it turns out, most of the subjects do *not* wish to
install this program. They're all freaked out that it's spyware. One
person asked what company I'm with. And I'm just thinking... ok did you
not read the consent form at all?
Tonight I'm going down to the Waterfront with
Kristine to see a movie. A much needed break.
Sunday:
Well for a good part of today, I've been trying
to respond diplomatically to all the participants' complaints about installing
the sensor program. I ended up telling them it was optional.
I also put together a list of things that need
to be done soon. Raye's going to work on modifying the display designs and
conduct the first two interviews.
This week, I'm going to work on finishing up
the laptop part of study 1, adding functionality to the sensor and the bot,
possibly developing a rough version of the display window, and maybe doing
interviews toward the end of the week.
Week 8
July 16 - July 22
Monday - Tuesday:
There's been a lot of study stuff to do in the
past couple of days. I had to send out special emails to different groups.
Some of them have missed more days than they're allowed. Others have
completed the study and need instructions for uninstalling the sensor. I'm
still waiting on the Amazon gift certificates to send those out. I'm also
working on scheduling interviews with three of them for later this week.
I've also been setting up things for the
desktop users and starting their portions of the study as well. This time,
Prof. Mankoff had me tell them to install the sensor right away so there would
not be the same problem we had before.
For the rest of Tuesday, I'm working on parsing
input to the sensor (this is for study 2) as well as make the IM bot send info
to the database and also parse that input. The parsing issue is that the
input comes in as HTML and has tags and everything that have to be dealt with.
So I need to either find a converter or write one. It won't be hard, but
it just needs to be done.
I also realized that the link to the daily
survey in the bot is not the same for the desktop users. I could easily
change that--making separate commands for the two groups. The problem is
that this will require incapacitating the bot, only for a minute at most, but
still, I don't like killing the bot for any amount of time because there's a
potential loss of data. The other options are just to send out reminders
manually using a separate screen name or only send email reminders and hope for
the best.
Tomorrow, Prof. Dey and Prof. Mankoff are
taking all the lab people to a baseball game! Very nice. :)
Wednesday:
This morning, we had an IM power meeting.
We discussed the preliminary analysis of the study. There is some concern
from the profs about what kind of results are going to come out of the study; I
think we're all staying optimistic but preparing to deal with unexpected
results. The profs said we should lower the standards for accepting
desktop users since we're not getting a great response to recruiting efforts.
So, we won't require that they're online as long. I need to make sure the
sensor does the right thing when someone closes their laptop and then opens it
(i.e. it shouldn't die completely). Prof. Mankoff also provided some
advice about interviews. This is good because I'm conducting 3 of those
tomorrow afternoon/evening.
Then came the baseball game (Pittsburgh Pirates
vs. Colorado Rockies) thanks to the profs! I had a blast. And a hot
dog. And cotton candy. It was my first baseball game, very exciting.
The seats were so close to the game! And the fireworks at home runs were
pretty awesome.
Ok, for the rest of the evening/tomorrow
morning, I need to prepare for the interviews I'm doing tomorrow. This is
also the last day for the laptop user study (except for one latecomer who
finishes Friday), so I have to send out some more emails and see who's actually
going to be done tonight and who might need to have their study extended.
Thursday:
Today, I continued preparing for and then
conducted two of the interviews. (the third person had to reschedule at the last
minute). Preparation for the interviews includes separating the log of
status changes into a separate file for that person (I figured it would be
faster to write a program to do this after doing it by hand for the pilot) and
reading over all their survey responses. I came up with a list of some
follow-up questions I would ask. I referred to these when the interviews
got slow, but mostly I tried to follow up on what the people said to the
open-ended questions.
Anyway, I think the participants provided some
great information. One thing I took away was that education should be part
of whatever feedback we use. It seems that some people don't really
understand what power settings their computers are in or how to change them.
Also, the thing with mentioning cost, as
someone had previously mentioned, is that some people are not paying their own
electricity bills, and so they might not care about how much they can save by
turning off their computers.
Friday:
I did a third interview today. I also
started sketching out what I'll write for my final report for the DMP. The
problem is the second phase of the study won't be complete by the time I leave,
but I think I'm supposed to get in the report pretty soon after my last day.
So I guess what I'll do is discuss the part of the study that has been completed
and mention where it's going next.
At the beginning of the summer, Jen sent us
some links about writing papers, so I'll track those down and get to work on
that. She also mentioned at our Wednesday meeting how important it is to
communicate your research effectively. She was, of course, talking about
the final paper that they are planning to submit, but I'm sure the advice holds
regardless of the exact destination of the paper. So that's why I'm trying
to start now on the final technical report I have to write.
Saturday - Sunday:
I put up some more recruiting ads and have been
responding to interested parties. I'm planning on working on the sensor
and bot code a bit more now. I think our goal was to have the technology
ready by Wednesday and have participants start using it on the 28th or the 30th.
I realized sometime before I leave I'm going to
need to transfer responsibility for the bot running on kettle to someone else.
And I'll need to make sure the code is documented and everything. I can't
believe I only have two weeks left!
Week 9
July 23 - July 29
Monday:
This morning I had a meeting with Jen to
discuss the DMP progress report. She gave me advice about grad school that
actually made me think about applying.
Today I need to fill out the human subject
forms, and for the rest of the day I plan to work on the sensor, bot, and
starting the rest of the desktop users that are coming in from the new ads.
Tuesday:
Sat in on meeting between 2 Intel research
people and Jen. They mentioned potential applications of the research and
gave us some helpful suggestions (e.g. using battery life as motivation).
Wednesday:
Today we had the IM Power meeting.
Afterwards, I worked on coding the window.
Also, we've finally started getting a good
response of desktop users. Although, some people who said a laptop was
their primary computer in the first study are now saying a desktop computer is
their primary computer. Suspicious indeed.
Thursday - Sunday:
I've been mainly working on coding additions to
the sensor, window, and IM bot. My latest problem is getting the window to
display properly during the sleep period.
I also did the study reminders for awhile; I
was going to transfer that responsibility to Raye earlier but I didn't get a
chance to explain it until Saturday, so she started doing it Sunday. It's
nice not to have to worry about that part now, though, so I can focus on the
coding.
On Sunday, Jen sent us an email about giving a
presentation on Friday. She and Anind want rough slides by Tuesday night.
Well, it's my last week, so I think I can muster up the energy to work really
hard, get the rough slides by Tuesday, get as much of the code done as I can by
Wednesday, get the presentation ready for Friday, and then call it a day.
I think I'll save writing the final version of my technical report for the DMP
until after I get home, mostly because of time. Maybe after I get home
I'll also make this website less crappy.
Sunday, I went out to Dave and Buster's for a
last supper with all the housemates. Good times.
Week 10
July 30 - August 4
Monday:
Oh man, Week 10 has arrived.
First half of day goals:
- get basic window to display properly even with sleeping part
- get info to update
- get updated info to display in window
Second half of day goals:
- start on outline for presentation
Tuesday:
Today, I got the window to display an HTML file
with info retrieved from the database, but I'm still working on figuring out how
to update the HTML and format the window.
Wednesday:
This morning I finally got the HTML to update
with data retrieved from the database. I also noticed I was accidentally
creating a new window each time, so now it's just updating the inner frame.
I found some arrow pics to use. However, they only work when I use the web
URL, not if I specify the file name. So I'm still working on figuring that
out. I'm also still struggling with adding style to the page so that the
window elements appear where we want them to.
I had my last IM Power meeting today. We
talked about who's going to do what when.
For the rest of the day, I had some things to
send out to people in the group. Then I updated the sensor code to use
this new tcp_up and tcp_down thing. Then I worked on generating 60 sensors
and the websites to support them (mindless, but necessary).
Now I'm working on the window code again.
Thursday:
I really focused today on the window code.
I also had to work on the presentation. With so little time left and so
much to do, I blocked out all distractions today, including obsessive email
checking. And of course, that meant I was missing urgent emails.
oops.
But my coding fest was fruitful, and by the end
of the day, I had a decent looking window displaying properly and a presentation
ready to go for Friday.
Friday:
Since it was my last day, I gave a final
presentation of the IM Power project with Raye at the common meeting. The
people there gave some feedback that should help Jen and Anind in moving forward
with the study. I'm still going to help out with some things after I
leave, but it's a shame that I can't see it through to the end. We've made
a lot of progress, though, and it will be interesting to see how it turns out.
At some point, I'll finish up my final report and post it on this website.
It's been a productive summer, thanks to the
CRA and of course, Jen and Anind. Now it's time to pack and then go home!