Preliminary Work: There were a couple of papers that Lori requested that I read before coming. The papers proved to beneficial to my foundation of understanding the project. One of the papers was written by a student of Lori's that my project is based off of. The list of papers that I read is located in project description under 1 of tasks involved.

I work from 9:00-5:30 Monday thru Friday and sometimes come by the lab on the weekends to finish up stuff that's on my mind and to just hang out with the people here!

Week 1 (June 16-June 20)

Orientation: I arrived at 9:00am to start work the first day. I got a chance to explore the hiper lab where I would be working for the next 10 weeks. It held about a dozen computers and was exactly how I pictured a research lab to look. Lori then came and showed me around the building, giving me supplies and introducing me around. I set up my account on the computers and put in a request for my own key for the research lab. For the next few hours, got to see the actual slicer and tried to run it. I had played around with the slicer and familiarized myself with the UNIX machines. Thank goodness I just finished Software Tools where we learned sh, csh, bourne shell, awk, and pl programming and the common Unix commands. I learned some more of the basics such as how to untar a file. There's a tradition here at the hiper that every Monday and Thursday all the people in the lab go out to eat and get to know one another. I had a blast!

Tuesday: I worked on starting and perfecting my webpage all day

Wednesday: Dixie Hisley, a Ph.D student came by on Wednesday and showed me all the features of the slicer. I will be implementing a GUI interface for it next week. I spent some time researching the programs Eclipse and Codesurf as well as refreshing my memory on java applets.

Thursday and Friday, I attended a leadership conference at Brown University in Rhode Island for the AAUW. You can hear all the details in the "Other" section.

The Great People of HIPER:

Ben Breech: Fifth year Ph.D student and an expert on Linux. Can help solve any problem in a matter of seconds


Anthony Danalis: The class clown of the lab and one of the late shift crew. Normally strolls in at 1:30 and loves coffee. Even though he's Greek, he's still cool! *wink*

Dixie Hisley (no picture): Dixie is almost done with her Ph.D and is working at the Army base. She and Matt Bridges wrote the code for which I'll be working on this summer!


Sreedevi Sampath: The other girl in the lab! =) woohoo~ She's writing software testing code and is quick to come back with sarcastic comments. Fun times~

Anteneh Anteneh: an undergrad researcher who's super nice. Him and Lewis can sit for hours and code without getting distracted by the people in the lab. Amazing~
Lewis Fishgold: another undergrad researcher and fellow ray street resident. He lives down the hall and walks me back to the dorms. What a nice guy~

Dave: On vacation but will be back next week for me to meet him (pictured with his soon to be wife, Laura)

 

 

 

Week 2 (June 23 - June 27)

Goals for the week: Try out codesurfer and take notes on what I liked and disliked about the way they sliced. Create a file with a list of capabilities that slicer should have based on the readme and codesurfer. For each capability, suggest a GUI way of providing that capability.

Monday: Dave was back from vacation in the Carolinas and I got to meet him. He was such a sweet guy and we talked about grad school for a while. I finally was able to set up my account on the Windows machine to download the latest version of Eclipse.  I had some trouble downloading the program on the Windows machine because it kept crashing. When I downloaded the new version, the computer froze. After that I moved to a Linux computer and took a while trying to download the program there. Three hours later, I was successful~ Also fixed the bugs I had running the slicer program.

Tuesday: Read up on codesurfer and starting taking down notes. Ran the program and followed some tutorials. I emailed Mike Jochen, the resident expert on Codesurfer about how to access it on my account. From that, I learned how to set up paths. It's somewhat frustrating because I'm still trying to familiarize myself with Linux and there's so much I have to learn. It's a great opportunity for me to learn it now though.

Wednesday: Read the tutorial and went through it page by page.   Went back to work on the slicer and played around with the options to see what it could do.   I took the afternoon off and left at about 2:30.  I got a chance to go to the library and studying for the GREs.  I also got to check out some great books such as the new Harry Potter book!  Woohoo~  How excited am I?  Then I went outside and relaxed in the gorgeous weather outside.  It's so nice to relax when the sun is shining bright outside. 

Thursday:  Played around more on Codesurfer and finished listing what I liked and disliked.  Here is my analysis of it:

What exactly is codesurfer?  Codesurfer is a code browser produced by GammaTech that understands pointers, and indirect function calls. It does powerful source code analysis and is a navigation tool. It is useful for software understanding inspection, restructuring, maintenance, debugging, testing, feature extraction, impact analysis, specialization, reuse, anomaly detection, and security and safety assurance tasks. Interprocedural program slicing is a technique that reveals deep structure within source code. Two options are forward slice and backward slice. Forward slices are slices impacted by point of interest while backward slices are slices that impacts point of interest. There is also predecessor and successor.  A program point's predecessor are the points where variables used at the point have gotten their values.  The successor are the points where the variables that were modified at that point are used. Backwards slice includes transitive influences back to beginning of program, while predecessors query show immediate influences.  The chop option is a subset of intersection of forward slice from sources and backward slice from target.  There are different slicing ranges you can chose: across and out (slice may traverse calling functions but may not traverse called functions), full (traverse both called and calling functions) and across and in (slice may traverse called functions but may not traverse calling functions).  With Codesurfer, one also has the option to see CDGs and DDGs independently.  The browser displays information about your program at an unprecedented level of detail. It is for the language C and can be run on Windows NT, Windows 2000, Windows XP, Linux, and Solaris (2.5.1 or later). In this lab I'm using version 1.8.

When I tried out codesurfer there were many aspects of it that I thought were wonderful.  The program and documentation appear solidly crafted and explained everything in an easy to understand manner.  There's also a bibliography of research behind codesurfer to help those not familiar with the terminology.  One can use it to look at PDGs and their component graphs.  Codesurfer does slicing and debugging.  After talking with Mike Jochen, I found out that the PDG was an add-on script, proprietary code and not for public access.  After setting up my personal codesurfer account by changing my paths and fixing minor details, I imported hello.c to try running it.  What I liked after my first impression of the program was that it was very clear where everything downloaded, the color coded designs helped me see the slice I was looking for very easily. lists global and local variables, and there was a hierarchical summary format.  When a program built, a log showed up displaying a the number of summary edges and program points. A user can view graphs to see the dependencies of how things in a project connect to a program point.  After becoming familiar with it I liked that it automates busywork of analyzing the program to prevent and trace bugs, it's great for finding unused variables and dead code, and there was a means to navigate the underlying graph (surfing).  Codesurfer is great because a user can customize and tailor it to fit his/her needs.

Now, here are some of the frustrations and parts of the program I disliked.  One frustration I came across was that in Codesurfer was building with libraries.  If you wanted to import something or include a library, you manually have to go to your root directory and add the file.  I found that in order to execute the program, you have to run it elsewhere.  When working with slicing, I sometimes had trouble just thinking about what program points and dependency graphs I wanted.  When the query complexity increased, I often got frustrated.  It seemed that Codesurfer was made from the minds of computer scientists and not by computer engineers.  Sometimes slice contained too much info and it was two hard to understand.  A smaller more focused program slice would be more informative.  Slicing is imprecise and most times bigger than expected, too big to big useful.  What I didn't like about slicing was that it only gave binary information, it didn't state the degree of influence something was or under what circumstance it happens.  Codesurfer is only limited to ANSI.C, which means no GNU extentions, no C++, and no Java.  One more thing I would like to see would be to view CDGs and PDGs independently.  Codesurfer also doesn't allow a user to manipulate the PDG graphs and relocate nodes.  When reading the GammaTech site, they were very upfront about some of the limitations this program had.  First, it would be hard to integrate with an editor or development environment although they do have versions available using scheme language.  Codesurfer is limited to a certain amount of ; anything past 100K lines of code is pushing it (I won't have a problem with ).  Another complication they had was that the user had to learn new jargon to use the tools in the program.

Overall, the program is very powerful and useful only if the user knows how to use it correctly, otherwise, it may cause more confusion.

Options for Slicer: 

-h -help: Display help menu (out of date)                slice -h

-split: Places each function in a separate file

-num: Number of nodes of the graph

-so: Show only nodes which appear in the slice in the output file

-edges [edges] [,edges]*: Sets of edges to display in output graph, defaults to ALL.  Options include CF(control flow), CD (control dependence), DD (Data Dependence, ID (interference), CA (call), PA (parameter-both in and out), and TR (transitive).  Edge list should be comma delineated.

I got to talk to Dave and Ben for about 1.5 hours about their thoughts on Graduate School.  They were immensely helpful and gave me a plethora of valuable advice.  Dave even printed out a paper for me on how to apply.  I signed up for the US News rankings and ordered some business cards~ *big smile*  Not during work time of course

Friday:  Worked on Eclipse and did some practice GUIs.  Designed what it should look like and reviewed it with Dave.  Made the necessary changes and begin thinking about how to implement it.

Week 3 (June 30 - July 4)

Goals for the week: Create GUI and get a working prototype by Friday

What exactly is Eclipse? In the lab, I'm running the latest version 2.1. When running Eclipse, a 1.3 level Java runtime is needed. Eclipse is an open platform for tool integration built by an open platform for tool integration. Developers can use it as a common platform for integrating multiple tools they use for functions such as code compiling and debugging. The features that Eclipse comes with is:
*Eclipse Platform               *Java Editor             *Java Debugger                 *Java Re-facturing
*Java Development Tools    *JUnit Integration    *Plug-in Development Environment

Monday: Started coding the GUI and thought up an innovative way to also run the data.  I wanted to make it accessible through the internet so I took the initiative to design an HTML page for the slicer.  After our weekly Monday lunch (we went to Ali Babas this week which is a great Moroccan restaurant), I had a meeting with Lori to go over my progress.  Cursorily went over my notes on codesurfer and recapped on the advantages/disadvantages of using it.  Showed Lori my two designs of the GUI and the options of the slicer.  I then expressed my new idea, which she loved and showed her my page.  So now I will be implementing a user interface for the slicer two different ways, java applets and html.   I will first finish the GUI method.

Tuesday: Tried running the commands through a file.  It worked out perfectly.  Executing the file has been troublesome because ghostview sometimes is unable to display and I'd have to change my paths. For now, I need to learn how to read input from GUI to a file.  Worked more with the GUI and get it to compile and run.  Looked over the ISSI stuff and seeing how it can be applied to this project.

Wednesday: Got GUI compiled inside Eclipse and functional.  Did some small programs to test my knowledge of how to write perl and csh.  I worked with getting user input to ask them for the file they wish to execute.  I did the perl examples quickly and effortlessly but it took me a while to figure out the shell command to prompt the user for input (read).  Graphs draw beautifully. 

Thursday:  Looked over CGI books and tutorials to begin working on middle and backend of the html.  Started coding Java files.  Have successfully written two of them.  I'll try next week to get them to work.  On the side, I'll download a flash program to begin learning that for my website.  Need to find a way to connect GUI with the Unix prompt. 

Friday:  HAPPY FOURTH OF JULY!

Week 4 (July 7 - July 11)

Goals of the week:  Working GUI and html

Monday: Didn't get the back end of the GUI done yet, must have been the distractions of the fourth of July.   Still trying to figure out how to get the GUI to execute a file in UNIX. Spent a while also implementing the file in using swing instead of an applet.   Looked over examples of CGI files and went through a tutorial. 

Tuesday: Read read read!  Finished designing my Jpanel using swing so that now I have an applet and a Jpanel one.  There's so much I want to learn and wish I could just play around on the computers for a while designing applets.  It's so much fun! 

Wednesday: Worked on my html file.  I know, I know, I had wanted to finish the GUI one first, but it was so frustrating looking on the internet for a way to implement it that I needed a break.  I finally implemented the file so that it reads the input and stores the output into a text file.   see work I feel so proud of myself. It's so nice to see results of your work. This summer has taught me so much to be independent and to figure things out on your own.  

Thursday: Now that I have a file in Unix that executes the graph when the user inputs the file name, and I that I also have a webpage that displays the file I put into the text box after I hit submit, my next step is to connect the two.  I've been trying to find a command that could put the two together and my goal is to finish that by the end of the day. 

Friday:  After a twelve hour day and coming in Saturday to work on this, I finally got the file to work!  =)  I had wanted the GUI to be web based so everyone can view it from anywhere, however there were so many problems.  It was simple to implement the script where you could type standard Unix commands in an html window.   The problem came with trying to run the Odyssey commands.  Since Odyssey is a program itself, it is a privacy issue to install it on the computer of each person accessing the site.  So I had to make global the program which was only on the local computer here.  Every time it is compiled, it creates a new ps file but needs user intervention to have the graph display.  I then ask the user to click on a hyperlink which opens up ghostview for all to view.

Week 5 (July 14 - July 18)

Goal for the week: Get project done.  By Thursday should have slicerAll working where it asks for file name and graphs it.  Figure out what's wrong with original files (path must have gotten changed)

Monday:  So exhausted today, I worked on cleaning up some of my work and documenting what I've done.  I created a readme and prepared for my meeting with Lori tomorrow.  Filled out my CRAW progress report.  I'm almost halfway through the program, I can't believe how fast time has flown by.  Mostly worked on grad school applications and stuff for the afternoon.  Since the slicer is working on html, there seems no need for it in a applet/swing form.  Although, we are not using it, my time and energy were not wasted.  Learning to implement my project in different ways is all part of the design and review process.

Tuesday:  After my 1.5 hr meeting with Lori this morning (thank goodness for Starbucks cuz I was up to 3am helping my friend with guy troubles), I am confident that I will finish my project in time.  My goal is to finish it by next Friday.  Downloaded flash and began playing around with that.  I wanted to spice up this webpage and will hopefully get around to doing that.  One problem:  why doesn't the slicer compile correctly in my new folder when it contains the same files as the other folder.  I must be missing something.  Will go back and double check tomorrow.  Here's my status report:
Web-based interface working now, using html for form input and perl script for the backend. The perl script calls the slicer and allows viewing of the krinke graph. The perl script is based on cgi technology and uses cgi-bin on sun's. The web address to try it is:      http://128.4.133.79/slicer
To do:
- add options to a form
- to allow any file to be used for input
- test

Wednesday: From my cgi-bin folder, I imported the krinke.ps file so that there were no more error messages in the compilation of the project and ghost view automatically opened once executing the file.  Managed to incorporate my original design html page to display with the tester file.  After submitting the information requested, a page includes what you have selected and what file you wish to slice.  The time and date is also shown.  Things to figure out how to solve: 1) you could not have two standard inputs on a page for it will only work for one input and ignore the other one.  Maybe figure out a different way to implement/design it or write code to get around it.  2) how to take in the input for file name so that the graph will display that file.

Thursday:  What a productive day.  I thought of a new way to design my page after several hours testing different methods.  Instead of having two inputs, I hard-coded the perl script to execute.  I cleaned up extraneous files to make my folders neater.  I also redesigned my webpage for a more stylish look.  After testing my product, I found several errors.  I fixed most of the bugs and added more features.  Instead of automatically graphing the ps file with different options, I figured that I would have all the different graphs available and links to them on the page.  Doing a bunch of if statements, the user will be told which graph to click, in order to get the graph he/she wishes.  It's funny how many things have been modified the further along the project I've gotten.  I've learned that the things that seem simplest turn out to be more complex than you imagined.  This summer, I've learned how to thoroughly think through "the process" of how things work and explore all possibilities instead of just any one that works. 

Friday:  I talked to Lori in the morning about my idea and she thought it was too tedious. Since the user has already selected options, it is pointless to have him choose the correct graph again. Plus it would be difficult and time consuming to save a picture of graphs with every possible combination of options.  I spent several hours to try to figure out how to take in any file name and graph it and also calling the slicer script file to take in arguments based on the options chosen.  Saved from hours of lethargic surfing of the web, my breakthrough came in figuring out how to take in a variable instead of hard-coding the name krinke everywhere.  I replaced all the krinke with FORM{fileName} and it ran beautifully.  Now it automatically replaces FORM{fileName} with whatever the user types into the text box.  I also redesigned my html page (yes again!) to make all the different edge options into a radio button selection.  It used to be a checkbox for a user to select whatever edges they wanted until I noticed that the slicer can only take in one argument for the edge.  So now a user can choose: 1) one of eight edge options or No. 2)Yes/No to display only nodes 3) Yes/No to number of nodes. 4) Yes/No to split (Must be careful with this one, only applicable on certain algorithms)

Week 6 (July 21 - June 25)

Monday: There was some difficulty in taking in the arguments.  Everytime a user runs the slicer script, a dot file is processed and a postscript file is generated.  I had a print statement that told me what it was supposed to be printing in the slicer script but when I looked at the PS file, it was the same generic graph.  This is so frustrating!  I don't understand why it doesn't work.  Another frustrating thing is my editor.  I'm currently using pico, a simple non-color editor which is great for small programs, but I've really got to learn to use vi.  With pico, I've wasted so much time just trying to figure out where I've misplaced a bracket or forgotten a semicolon.  Apparently anyone who's anyone needs to know Vi since it's such a powerful time-efficient editor.  Too bad I need a cheat sheet to remember how to do anything.  A user has to remember all these weird keys to do anything.  Like to delete a character, I need to press x; to insert anything I need to hit i.  Here's a page that will definitely help out anyone using Vi.   VI editor commands
        I'm almost done, I just have two little things to solve.  1) Working on taking in the correct arguments and 2) finding where that krinke.ps graph is located so it can call that.  

Tuesday:  14 hours in the lab, count em people, fourteen! =)  But guess what?  I finished all the coding.  I now have a fully functional state of the art interface for the whole world to enjoy the slicer.  There were some issues with putting the variable in the quotes in order for it to work, but I was ecstatic once I figured it out.  After fixing some of my code, I saw that the krinke.ps file generated correctly.  Now the only missing piece was to get the perl file to call the krinke.ps file.  After talking with Anthony,  we figured out that we had to change the location of the file in slice.csh.  Then there were the permission errors since reiley is the user instead of the general public.  I let Anthony handle all that administrative stuff and voila, I was officially done.  I spent the next hour relaxing and chatting in a state of elated exhaustion.  I was on a roll and the night was still young.  I worked on flash (the intro for this webpage) for the first time and it's a pain in the butt.  I never realized how much time goes into building a tiny program.  I spent a good three hours just reading the tutorial, creating a background, and inserting pictures and sounds.  I always thought it was a simple click and drag deal.  Either way, I've felt I've learned alot so far.  After getting bored with my flash program, I went back to look at my beautiful code.  Here it is:

#!/usr/bin/perl
   print "Content-type: text/html\n\n"; 

# Executes input from text box in html and displays output
#   if ( $ENV{'CONTENT_LENGTH'} ) {
#      read(STDIN,$_,$ENV{'CONTENT_LENGTH'});
#      s/(.)*=//; s/\+/ /g; s/%(..)/pack("c",hex($1))/ge;
#      $out=`$_ 2>&1`; 
 
print "\n\n";
print "<HTML><HEAD><TITLE>Slicer grapher</TITLE></HEAD>";
print "<BODY BGCOLOR=#99CCFF><BR>"; 
 
#takes the input from the text box in html and stores value
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs=split(/&/,$buffer);
foreach $pair(@pairs)
{($name,$value)=split(/=/,$pair);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
  $FORM{$name} = $value;

 
#displays user input and options chosen
print "<h2>You have submitted...</h2>\n";
print "<BR>"; 
 
print "Graph file: $FORM{fileName}<br> ";
$Int = "Graph with the follow option(s): "; 
 
$option=1; #variable to keep track of which options a user chooses, 1= option chosen, 0=option not chosen 
 
if($FORM{edges}>1 && $FORM{Pref} =~ m/[eE]edges/)
{
$Int = "$Int Edges";
$option=0;

 
if($FORM{nodes}>1)
{
$Int = "$Int Nodes";
$option=0;
}
if($FORM{numNodes}>1)
{
$Int = "$Int NumNodes ";
$option=0;
}
if($FORM{split}>1)
{
$Int = "$Int Split ";
$option=0;
}
#if option is chosen, will display name of option and store a string into var arg
if($option==1)
{
if($FORM{edges}==1)
{
$Int = "$Int <i>Control Flow Edge,</i>";
$option=0;
$Int = "$Int <i>Control Dependence Edge,</i>";
$option=0;
$arg1 = "-edges CD";
          }
if($FORM{edges}==3)
{
$Int = "$Int <i>Data Dependence Edge,</i>";
$option=0;
$arg1 = "-edges DD";
          }
if($FORM{edges}==4)
{
  $Int = "$Int <i>Interference Edge,</i>";
  $option=0;
  $arg1 = "-edges ID";
          }
if($FORM{edges}==5)
{
$Int = "$Int <i>Call Edge,</i>";
$option=0;
$arg1 = "-edges CA";
          }
if($FORM{edges}==6)
{
$Int = "$Int <i>Parameter Edge,</i>";
$option=0;
$arg1 = "-edges PA";
          }
if($FORM{edges}==7)
{
$Int = "$Int <i>Transitive Edge,</i>";
$option=0;
$arg1 = "-edges TR";
          }
if($FORM{edges}==8)
{
$Int = "$Int <i>All Edges,</i>";
   $option=0;
$arg1 = "-edges ALL";
          }
if($FORM{nodes}==1)
{
$Int = "$Int <i>Nodes,</i>";
$option=0;
$arg2=-so;
}
if($FORM{numNodes}==1)
  {
  $Int = "$Int <i>NumNodes,</i>";
  $option=0; 
  $arg3 = "-num";
}
if($FORM{split}==1)
{
$Int = "$Int <i>Split</i>";
$option=0;
$arg4 = "-split";
}
}
print "$Int";
print "<br>"; 
 
#if no options selected, this page will display
if($option==1)
{
print "<BR>You have not chosen to graph with any options<p>";
print "<A HREF=/slicer/$FORM{fileName}.ps>CLICK TO VIEW BASIC GRAPH<A><BR>";

 
#if at least one option chosen, this page will display
else 
{
print "<A HREF=/slicer/$FORM{fileName}.ps>CLICK TO VIEW GRAPH WITH SELECTED OPTIONS</A><BR>";

 
#displays current date
$date=`/bin/date`;
print "<BR><BR>$date"; 
 
print"**************************************************************************************************************************************************</p>"; 
 
#prints out what the slicing script is running with the correct arguments
print "\%: ./slicer  $_<PRE>$out</PRE>";
print"$FORM{fileName} 28:z,i $arg1 $arg2 $arg3 $arg4<br>"; 
 
print "<PRE>"; 
 
#prints the display of occ and scc and slicing script
print `./slicer $FORM{fileName} "28:z,i $arg1 $arg2 $arg3 $arg4"`; 
 
print "</PRE>";
print "<p></B></BODY></HTML>"; 
 
#inputs all the data into a file called files.dat
`echo "$date" >> ./files.dat`;
`echo "$Name" >> ./files.dat`;
`echo "$Number" >> ./files.dat`;
`echo "$Int" >> ./files.dat`;
`echo >> ./files.dat`;
`echo >> ./files.dat`;

Isn't it beautiful?  *Smile*  Since I finished early, Lori said I should be able to get a new project to work on.  How exciting.  I still have the readme and cleaning up to do, so I should be able to get a new project by next Monday.

Wednesday: Spent some time testing and cleaning up code.  One of my biggest pet peeves is grammatical mistakes, so I went and fixed the spelling on Matt Bridges' ReadMe file and cleaned up some of the extraneous code he had in his files.  I also plan to write my own readme file after lunch today and send lori an update on what I've done.  If there's time (which I doubt), I'll work more on flash.

        My final project is here: SLICER ; then click slicer.html For the file name use the default krinke.

Thursday&Friday:  Put together a portfolio for Lori and got ready for my meeting with her next week.  Sent emails to Dixie and Mike on the current status of the slicer.

Week 7 (July 28 - August 1)
Monday:  Treated myself to a day off while Lori tried to put together a new project for me.  I worked on Grad school applications and my statement of purpose.

Tuesday: Finally received my second project.  It was altered some since I'd been away.  Dave took a new direction with it, and I have to admit I like it alot better.  I need to create the option for a project to analyze any project on the Eclipse platform.  We could implement this two ways: 1) Having it as an option in the right click menu or by highlighting the project hand selecting "my action" on the menu bar. 2) Highlight the project and have an option on the menu bar on top to execute "My action" which is Dave's tool.

Wednesday:  Met with Lori and showed her my final project.  She was very excited with the work I had done and everything demoed perfectly. We went through the code and I explained the frustrations I had had and the different approaches I had taken in designing the slicer.  She concluded the meeting by giving me some pointers on how to make the site more aesthetically pleasing and to add certain links.  I perfected my website and was introduced to my project with Dave Shepard.  It will be working on new perspectives for the program Eclipse.  He wanted me to create an interface for his tool.  Went over a tutorial to test how to create plugins for Eclipse.  Since I was on a windows machine there were SO MANY times where I banged my head against the wall in frustration.  There also seemed to be a problem with getting the most updated version.  Since Eclipse is a fairly new product, I had problems getting the same version as Daves so I could use the capabilities and options he had.  After downloading several versions there were still many options that needed to be changed.  After fixing all that, I wrote the code for the plugin, and surprise surprise...I was met with many more difficulties.  The original output for the plugin disappeared and when I tried to restore it back to the original condition it was still gone.  That meant I had to delete the project and reinstall everything.  I'm NEVER going to finish this. 

Thursday&Friday:  A spontaneous trip to Hawaii ~aloha~ Be back Monday

Week 8 (August 4 - August 8)
Monday:  Everything went so smoothly today and I got alot accomplished today.  Must have been the vacation that inspired me and let my creative juices flow.  I rewrote the code, debugged, and tested the code and it worked wonderful.  I demo-ed the project to Dave and he was ecstatic.  We're having a meeting with Lori tomorrow to show her what we've done so far.

Tuesday:  Met with Lori for about an hour after lunch and she was very happy with what she saw.  Dave's project is coming along very nicely and he will be done by the end of august so he can write a small five page paper to submit to a conference.  Dave's trying to think of a new option for me to implement.  I worked on polishing my resume and statement of purpose today

Wednesday:  I thought it would be great to implement the option to have the tool display if you the right click the project name.  I surfed through the Eclipse website and looked through the help section.  I wrote a small function and it didn't work.  I'll try to fix it tomorrow.

Thursday:  After fruitless hours of attempting to test, Eclipse just wasn't working.  I decided to send the code over to Dave so he could add it to his code and test.  It worked and ran.  So I'm all finished.

Friday:  Went to visit Johns Hopkins University

Week 9 (August 11 - August 15)

Goal of the week:  On Thursday morning, I have to give a presentation to the people in the lab and in the afternoon I have to do my first poster session.  

Monday: Did more background reading so I can talk about my project in detail.  Started brief outline of my presentation.

Tuesday:  Started designing my poster and making a powerpoint presentation.  I'm so excited, it's my first poster!

Wednesday:   Finalized my poster and organized my talk.  

Thursday:  SHOWTIME!  I gave a presentation in the morning to the lab and Lori took us out to lunch.  She's so nice and wonderful.  Then I rushed back to stick up my poster at the undergraduate summer research symposium.  Here's a picture of my and my poster.

Week 10 (August 18 - August 22)

Flew home to work for the last week.  Finished working on the webpage and finalized all work done on the slicer.  What a great experience, I couldn't have asked for a better summer!  For any undergraduate female, I HIGHLY recommend the Craw Distributed Mentor Program!