Week One (plus some): June 18 - June 26
Carleton College is on a trimester system, similar to the quarter system that Drexel uses, so I got a later start on my internship than most DREU interns. My internship had to be further shortened to just seven weeks, as I left the country in mid-August to study abroad in Rabat, Morocco. Both DREU and Dr. Solovey were flexible and understanding with my schedule, however.
My dad and I drove up to the northeast from Durham and stayed with my grandparents in Princeton on Wednesday night. The next Thursday, June 18, my dad drove me to Haverford, where I dropped my things off at the apartment where I'd be staying for the duration of the summer with my best from from high school and her friend from Haverford. All of us would be making commutes into Philadelphia to work for the summer. My dad dropped me off at the lab later that morning, where I was met by Shelby Keating and Calan Farley, two Drexel coop students who were working in Dr. Solovey's lab. They gave me a tour of the lab and the campus, helped me get started in the lab, and provided me with reading material concerning the lab's research. Over the course of the next weekend, I settled into the apartment and explored Philadelphia. I went to the art festival in Manayunk and a Phillies game with a friend from Carleton, and went to the zoo the next day with my friend from high school. |
The following Monday, we had our first lab meeting. I met Dr. Solovey in person, as well as many of the students associated with the lab. A few of the students are working part time, as they are currently enrolled in courses. There is also a graduate student involved in various projects with Dr. Solovey. Overall, there are five students regularly working in the lab: me, Shelby, Calan, and two freshmen STAR students who have full-time research positions in the lab, Craig Carr and Patrick Hislop.
While Dr. Solovey was giving a talk in London, I spent much of the next week attempting to get access to services provided by Drexel, and downloading all the software I would need to work in the lab. I installed MATLAB, and the data analysis software that the lab currently uses, Homer2. I gained access to the code that had been previously written towards the new user interface, the future data analysis service called The Dashboard, on GitHub. When I wasn't reading more academic papers and letting software install, I looked through the existing code. This week had a lot of moments of feeling confused and lost, but I had to remind myself that I was not expected to start writing the new interface my first week. I could not see the big picture of the code I had access to yet, and just did my best to familiarize myself with what I had. I also had trouble getting MATLAB installed and Homer2 running properly. By the end of the week, however, I was set up nicely to get deeper in the work in the weeks following! |
Week Two: June 29 - July 2
We started off the week with our weekly lab meeting, where we presented updates on our work and discussed places that we were stuck. At this meeting, we met two teachers from Philadelphia, who were participating in a program called REThink, which provides teachers with research experience at Drexel. We had a "State of the Lab" meeting to update all new lab members on the projects going on in the lab.
The three primary projects underway are fNIRS (functional near-infrared spectroscopy) and Driving, the Intelligent Tutoring System, and the Dashboard. The driving project looks at fNIRS brain data collected while performing tasks while operating a driving simulation. The Intelligent Tutoring System uses fNIRS brain data to supplement observations made while students take tests administered by an Intelligent Tutoring System. The tutoring system is designed to improve a student's academic performance, but it is often unclear whether a student is truly learning from the tutor, or if he/she is cheating the system, or just not learning the information deeply. The brain data will aid in understanding how the student is responding to the tutor, and help determine how to make the program more effective. The Dashboard project is the one that I will be working on. It consists of creating a user interface for intuitively analyzing and displaying the fNIRS brain data collected from the Driving and Intelligent Tutoring System projects, as well as any other projects that use fNIRS. An interface with some of these capabilities already exists, called Homer2, but the tool is confusing and difficult to use. That afternoon, we got to see demonstrations of fNIRS at work. I even got to try it on! I didn't get any photographs of myself with the equipment on, but I did get some of one of the STAR students, Craig, trying it out. |
The rest of the week I took certification courses which would allow me to participate in the Intelligent Tutoring System project (which Shelby was mainly in charge of) just in case my help was needed. Since we would be using human subjects, certification is required.
I also installed various pieces of software in preparation for beginning the Dashboard project. I installed the IDE Intellij, which was the main tool used so far to develop the Dashboard interface. I also got Source Tree, a tool for managing version control. A previous STAR student named Paritosh had begun the Dashboard project during his time in the lab. By that Wednesday, I had access to his code and had it compiled. However, I did not have the database with the necessary data up and running yet. Thursday was the last work day this week, as Friday the 3rd was the observed 4th of the July holiday vacation day. Stuck on getting access to the database, I spent the end of the week revising the documents on our Google Drive folder that directed new lab members on how to get started in the lab. I also looked over and revised the lab's website, the link for which I have provided below. We ended the week with a Show and Tell lab meeting, where we went over, as a group, the work we had done that week, and demonstrated some of our accomplishments. Patrick, Craig and I were able to show the code we had managed to compile, though there were still errors due to the lack of a working database. The miscommunication and confusion regarding the database was a frustrating setback, but we were still getting settled in the lab, figuring out what tools we would need, and what our ultimate task would be.
|
Week Three: July 6 - July 10
This week started, like all weeks start, with a lab meeting. I also met with Dr. Solovey, Craig, and Patrick, the other students working on the Dashboard. We'd been having trouble getting Postgres, the database tool we're using, to install properly. Also that Monday, my mom stopped by Philadelphia for lunch, and I got to see her. She was on a historical northeastern tour, and was just passing through on her way up from the DC area. I got to show her the lab and the surrounding area, and we ate food from food truck nearby.
The next morning, we looked at and reviewed papers and tools that were similar to what we wanted to the Dashboard to be. That afternoon, we met as a Dashboard team, and the undergraduate who had been working previously on the code helped everyone get Postgres installed and the current interface running. The next day, I got Postgres working correctly - installed with "non-fatal errors." The interface still did not run, but we began working with javafx and Scene Builder to become comfortable with the tools we would need to create the interface. |
On Thursday, I worked most of the day on a javafx tutorial, creating an Address Book application. It taught me how to create basic GUIs and to control scenes created with scene builder with fxml files in my Intellij project. That afternoon, the other students in the lab and I went on a team building rock climbing trip at the Drexel Recreation Center, right next to our lab!
That Friday I continued on the javafx tutorial. I had to work through some bugs that prevented the application from running at first, which was frustrating, but after discovering which packages were necessary to import in each file, I was back and running, with a better understanding of how all the packages were connecting in the IDE. At the Show & Tell meeting that afternoon, I was able to show a basic working Address Application. I still had to work through the CSS styling, and saving/opening current/previous projects, but I was getting a much better understanding of how it all worked, and how it could adapted to be used for the Dashboard project. We concluded the meeting with a quick Dashboard meeting, and got everyone access to the current database, which was now located on Drexel's Cloud. |
Week Four: July 13 - July 17
Once again, we began the week with a lab meeting to determine what we would accomplish throughout the week. By the time we met, I had finished the javafx tutorial. Now that we all had access to the database on the Cloud, the next order of action was to get the current Dashboard interface up and running on everyone's computers. I spent a little time updating the lab's website, and then we met as a Dashboard group and managed to get the Dashboard running! This was very exciting, because it meant that we could start working with the code, really helping to build the interface.
That afternoon, we also spent some time rearranging the lab as a kind of lab bonding. We have lots of furniture - chairs, desks, tables - and it wasn't all organized in the most efficient ways. Dr. Solovey is very adamant that we are comfortable in the lab work space; that we organize it however it best works for us, and that we even bring posters or plant in to help decorate it. The task we were assigned after finishing the javafx tutorial was to create a launcher for the Dashboard interface. This would be an application that first opened, presenting the user with options to create a new project or load an existing one. It would require the database information that contained all the data for the project, and then it would parse the database and open the Dashboard interface, with the data loaded and with options for analyzing. Craig had begun this application, creating a basic window with buttons for the different options, though none of the buttons were fully functional yet. 'Create New Project' opened a new dialog that had text field for entering the database information, but that was all. I added functionality to the "Cancel" button on this screen, creating a method for it in the "CreateNewProjectController" class, and linking it to the button in SceneBuilder. I also separated the menu bar from the main screen of the launcher application, because if we were going to have multiple windows with the same menu bar, with the same options, it would be more efficient to have a single fxml file for that menu bar, with a single controller. So I created this fxml file and controller class, and added code to the LauncherApp class to make both the RootLayout (main LauncherApp window) and MenuBar visible at once. All of this came from skills I learned from the tutorial. |
The next day, we ran into some trouble with having IDE files specific to a person's computer/project pushed directly to the master branch on GitHub. We decided to sit down and figure out an organized protocol that we would use to make having many developers working on the same project run smoothly. We cleaned up the latest push to GitHub, getting everything running smoothly again, and decided on an organized protocol. From then on, we would push to developer branches and create pull requests when we wanted our changes to be considered for the master branch. We would only include the files we had changed, and would never include IDE specific files or .class files. Most of us (including me) did not have much experience working on projects with so many others, so it took some getting used to. I had used GitHub a little, but only ever to push homework assignments to be graded. However, after reading some Help documents about creating Pull Requests, and after going through the process with the lab and Dr. Solovey. I began to feel more comfortable with it all.
The next day, I created a new styling sheet specifically for the launcher application. We had a main styling sheet that we had been using for the interface, but on the launcher application, it made the font on the buttons too large. We could not see all the writing, and the buttons were so big on the "Create New Project" dialog that they wouldn't fit. I made a revised version of the main style sheet, called the "LauncherStyleSheet", editing the size of the font, and attached it to all of the scenes of the launcher application. It required quite a bit of reformatting of the text fields and buttons, but I got it to a point where it was once again aesthetically pleasing. Using our new protocol, I created a new branch for the LauncherStyling, and committed/pushed my changes to the branch, creating a pull request. I was still anxious about creating public changes, worried I would somehow mess it up, as it had been messed up a few days previously, but I pushed the correct files successfully. It was a challenge learning to use this new technology, working so closely with so many others, many of whom had more experience with GitHub than I. By using it, however, I started learning more and becoming more confident. At the end of the week, we had our regular Show & Tell meeting, and I was able to show the lab the progress I had made. |
Week Five: July 20 - July 24
During our Show & Tell meeting at the end of the previous week, Dr. Solovey told us about a talk she was going to give in NYC the following Monday, July 20. She put out an open invitation to any of us, her students, who wanted to go. We would have to find our own transportation, but she could get us into the talk for free.
Shelby and I decided to go. We bought cheap bus tickets out on Monday, made plans with our respective friends in the city to stay the night, and got tickets back to Philadelphia on Tuesday. We had a lab meeting, earlier than usual, on Monday morning, and went over what goals of the previous week we had accomplished, and what goals we would set for the upcoming week. After planning out some more projects for the launcher application, Shelby and I left to catch our bus. In New York, I met my friend Daniel from Carleton, who lives in Brooklyn, and whom I'd be staying with that night. We went to a bagel bakery, where we also met my middle school friend Jeremy, who was working in the area for a nonprofit. After talking for a few hours, we went our separate ways. I met back up with Shelby, and we went to one of the WeWork shared work spaces downtown, where the talk would be held. The talk was run by the Natural User Interface (NUI) Community, and they brought Dr. Solovey in to talk about Brain Computer Interfaces. She spoke a lot about the research going on in her lab, specifically fNIRS and her vision of future interfaces that included brain data. As she concluded her speech, she pointed out Shelby and me, so we had the opportunity to talk to several individuals who were curious about how we helped with her work in the lab. That night I stayed with my friend Daniel. The next morning, we got bagels and coffee, and then I headed back to Philadelphia. When I returned in the early afternoon, I went straight back to the lab, where I worked a little on the task I had assigned myself for the week. I would be working on altering the format of the "Database URL" information the user had to give in order to access their database. We wanted to make it explicitly clear what the database url would look like. This includes the un-editable text that it always began with (if using postgres, which, for the time being, we assumed one always would be) "jdbc:postgresql://", followed by the "database host", a colon, the "port number", a forward slash, and then the "database name." The photo below shows how Dr. Solovey illustrated this idea on the board. Continuing the next day, I changed the format of the dialog to accommodate these changes.
|
After the format of the scene was updated, including a button to "check" the connection of the database, Patrick worked on adding functionality to the check button, and then we together created a method to prevent users from being able to enter any character except for digits 0-9 into the "port" field. Patrick and I created a pull request for our work, which was later reviewed and merged.
That night, Dr. Solovey planned a dinner for the lab. We all went out to dinner, which was really fun! From left to right (top to bottom): Me, Shelby, Gloria, Patrick, Calan, Dr. Solovey, Amelia, Karishma.
The next couple of days, we did some bug fixes, and I started my final report for DREU. I only have two weeks left with Drexel at this point! We also did some decoration in the lab - Dr. Solovey ordered several lamps and removable wall-decor stickers. The bare white walls had been keeping her from getting comfortable in the lab. Below is an album of our decorations, including Calan and Patrick.
The final day, I did some code review and merged pull requests, and continued working on my final report. We did some final touches with the decorations as well.
We ended the week with a Show & Tell meeting, where we showed the changes we had made. I showed the visual changes I made to incorporate the new Database URL layout, and Patrick and Craig showed some of the work they did to add more function to it. It was a good week of work, but it has become clear that I won't get to see the end of the project, or even that far into it. I hope that I'll be able to see the finished product one day, though! |
Week Six: July 27 - July 31
I started Monday doing some minor fixes to the LauncherApp that we had discussed during the Show & Tell meeting on Friday. This consisted of three tasks: removing the field for the user to specify the "Project Directory" where the database containing their data would be located; changing the "Check..." button that checked the database connection, enlarging it and providing a clearer message; and changing the colors of the messages indicating success/lack of success connecting to the database to make them stand out. At the lab meeting, we talked about assignments to be completed during the week. I was assigned to create a field where the user could specify the location of the stimulus file, the location of which was needed in order to run RawFileParse, and parse the specified database. I also needed to include code in the appropriate class that ensured that the location was used by RawFileParse. That afternoon, I created the field for the stimulus file, but did not yet add functionality to the button used to find the file.
The next day, I added functionality to the button, connecting my new field and button in SceneBuilder to the appropriate class. The previous buttons used to find information from the user's computer located an entire directory; this button had to locate just a single file. We also decorated the lab some more - we had ordered more green and orange tape, and wanted to continue our stripes on the last undecorated wall. Patrick suggested that, rather than continue the stripes in five parallel lines as they had been before, we converge the lines to a single point on the far side of the wall. Shelby and I were happy to take on the challenge. To figure out where each stripe should be placed, we used a long piece of dental floss and made marks against the wall. You can see that process, as well as the finished product, in the photo album below. |
To finish the day, I wrote the code that would incorporate the location of the Stimulus File into RawFileParse. Then I left the lab and went to a nearby coffee shop called Joe and worked on my final lab report.
The next day I spent some time working with our source control techniques, trying to push my work to a branch I had created, and making a pull request. I ran into a little trouble, which was frustrating. Every time I think I've gotten the hang of using this process, something goes awry! I ended up having to redo a few pieces of my work, but managed to get my pull request through successfully. I then had to spend a little time working through logistics, such as travel reimbursement. I spent the afternoon back at Joe, working on that and my final report. I love having portable work, and a local coffee shop to go to! Since my time in the lab is coming to a close (only one week left!), I spent much of the end of this week building and finalizing this website, working on my final report, and creating a "My Time in the Lab" presentation for Dr. Solovey to use in the future. I also had to fix a few bugs in the latest merge. After replacing the Project Directory Field with the Stimulus File Field, I neglected to remove the code associated with the Project Directory Field, which resulted in some errors when the RawFileParse class tried to run. I fixed those and resubmitted them to be merged. The week ended as usual with a Show & Tell Meeting. We showed Dr. Solovey (as well as the other lab members, including Gloria and Bruce, the Philadelphia teachers here for the summer through the REThink program) the changes we had made. This included the aesthetic changes I had made to the "Check Connection" button and the success message that is printed, the Stimulus File Field, the ability to select a single file location for the stimulus file, and making this location accessible to RawFileParse. In addition, Craig and Patrick were working on successfully parsing the database after you clicked "Create Project." At the end of this week, we had essentially finished the Launcher Application. It was successfully linked to RawFileParse. Parsing the data of each subject took a while, however, presenting a challenge of optimizing the parsing process. |
Week Seven: August 3 - August 7
Over the weekend, I had to move out of my apartment at Haverford College. In order to finish out my last week of the internship, I moved in with Shelby! She lives just a few blocks away from the lab, so I got to experience living in the city for a week. I also sent in a very rough draft of the final report to Dr. Solovey that weekend so I could get some more instruction on the structure of the report.
During lab meeting that Monday, we determined that the Launcher Application was essentially finished. The next step would be to incorporate the work Calan had been doing for the past few months into the Dashboard. Calan had written Matlab scripts to process the raw fNIRS data. His were specifically geared toward the old interface, Homer2. Now we needed to team up with him to use his algorithms to process the data directly from the database, and display the data in the dashboard. Since I had only a week left, and some wrap up tasks to complete, I didn't take on any large assignments for the week. Instead, I decided to focus on my report and the presentation that I would give on Friday, and help out where I was needed on the dashboard. However, I have included below an album of photos of the Launcher Application that we had spent the past few weeks working on. The first picture is the starting scene of the Launcher Application, where you can choose to load an existing project or create a new one. The next picture is what you see if you choose to create a project. The next two show examples of successfully and unsuccessfully connecting to the specified database.
|
The next day, I decided to work from Centre City. Since most of the work I had to do was independent work, it was as important that I remain in the lab. I finished a preliminary "My Time in the Lab" presentation at a Starbucks there.
I finished up the presentation the next day, and sent it to Dr. Solovey to review. Shelby was in Richmond for a day trip, but I spent most of the day working on revising my report and getting the website caught up in the lab, so I could spend some time with my coworkers in the lab during my last week. Thursday, I incorporated the revisions Dr. Solovey suggested into my presentation. Specifically, I had been unsure about what she wanted me to include for the "Outside of the Lab" slides. She told me to include information about what I had done in Philadelphia while I was here, so I spent some time putting slides together about all I had done throughout the summer. We also spent some time working on puzzles together as a lab bonding activity. After we left the lab, I spent the evening working on my final lab report. I had to add a few more sections and convert it to the proper HCI Research Paper formatting. I was hoping to finish my report before leaving the lab, but it became clear that I would have to spend some time on it during my last week at home. I was to start driving home after work on Friday, stay the night in the DC area, and get home by Saturday. The following Saturday, I was leaving to go abroad for the fall, starting by traveling around Europe, and ending in Rabat, Morocco. Friday I came into lab, did a little work finalizing my presentation and website blog, and worked on the Conclusion/Future Works sections of my lab report. At 2:00 we had our weekly (and my final!) lab Show & Tell meeting, where I gave my presentation. Afterward, my dad met me in the city, and I showed him around our lab and introduced him to my lab mates. We packed up my stuff from Shelby's apartment, explored Drexel a little, and had dinner. Then we drove back to the DC area, where my mom was waiting, and where we would spend the night before heading out to NC the next morning. My summer in Philadelphia taught me a lot about working in a lab and with a group of collaborators. While I wish I could have seen the Dashboard in later stages, and been around for Shelby's Intelligent Tutoring System pilot study, I know I can stay in touch with the lab and see its progress, and I'm very happy with all that I got done this summer. |