Week 1: May 30 - June 5
This week was mostly about settling in at my room at the Tradition at Northgate. I arrived on Sunday and wasn’t really able to meet anyone until Tuesday when the various REU programs officially began. The different departments’ programs are housed on different floors, so one wing of the third floor is Computer Science (I think). My roommate isn’t here yet; I’ve been told she’s coming from Saudi Arabia. I’m looking forward to meeting her soon!
It was pretty difficult arriving as early as I did. Besides being a Sunday, it was also Memorial Day Weekend so nothing in town was open. I had woken up at 5 am to catch my flight from San Jose, and though I managed to eat McDonald’s at the airport I was starving. Finding somewhere to eat was a little tricky. I ended up getting cereal at one of the two gas station convenience stores right by the Tradition. There was no toilet paper in my room when I arrived, that was also something I had to get at the gas station. On Monday I wandered around and ended up at a random produce market where I stocked up on fruit.
On Tuesday, we summer REU students met each other and the people we would be working with, and got a tour of the huge campus. I found out one of the four other undergrads in the Sketch Recognition Lab, Stephanie, is also here through the DREU program and lives right across the hall. Everyone at the SRL seems nice and I think we’re going to become good friends pretty quickly. TAMU is so different from Pomona! There are as many computer science majors here as there are members of the class of 2012 at Pomona.
On Wednesday, after having asked around in the lab, Stephanie and I managed to identify route 27 as the bus route that has a stop right across the street from an HEB grocery store, and right near a Target. In the lab, us undergrads (Travis, Patrick, Chris, Stephanie and me) with kind help from Marty (a grad student), got our accounts and everything set up with Git and Eclipse and started reading and doing little tasks to familiarize ourselves with the code - especially the CivilSketchGUI class, the StupidRecognizer class, and the various constraints. I fussed with the size of the "beautified images" displayed once a sketch has been recognized and tweaked the recognition of fixed pinned rotate only support.
Week 2: June 6 - June 12
On Sunday, the Tradition threw a pool party for everyone to meet each other. A lot more people showed up than I expected. It seems like all the non-Texas A&M, College Station students are staying here. I think roughly 50% of my meals have been tacos, 25% mac & cheese, 25% oatmeal. I need to get to HEB soon. My roommate hasn’t arrived yet.
I’ve been working on getting user-defined text labels to appear when shapes are highlighted. Currently, the labels appear but are awkward and ugly. I think I’ll be done with the look-and-feel of it by the end of the week, and have started work on playing with what exactly is labeled - for example, in a truss the user might want to label both individual beams and the entire truss. Currently, only the truss could be labeled.
On Wednesday, Paul showed us some truly horrifying movies of user tests that revealed how real civil engineering students draw trusses. We may have to teach them to draw them differently. Stephanie has created bottom-up (triangle + triangle + triangle) recognition of trusses (B) but the students drew the overall shape first, and then filled in the triangles (A).
On Friday, the whole lab is going out to lunch at Sodolak’s Beefmasters and then to the Karate Kid. The matinee tickets here are $3.50. I’m not sure if you could even buy a bottle of water for that price at the theaters back home.
Week 3: June 13 - June 19
My roommate, Jessica, arrived on Sunday. She is from Hong Kong, but is going to graduate school at the King Abdullah University of Science and Technology (KAUST) in Saudi Arabia. Unfortunately, since the buses don’t run on weekends, she had to wait until Monday before buying groceries. We and two other KAUST students (Mustafa and Mac) went to dinner together at Dixie Chicken. I hadn’t heard of chicken fried chicken/steak/bacon before, but I think I’ll be very familiar with it by the end of the summer.
Wednesday: I got labels up and running, but they still need work - there’s some stuff going on in the onMouseMoved method that really shouldn’t be there and there’s still the labeling component parts (beams of trusses, for example) issue. I also think labels should highlight along with their shape, and you should be able to click on existing labels and edit them in place.
Below is a screenshot of what the workbook looks like right now, with some recognized shapes. The mini roller supports inside the hand-drawn ones are "beautified images" - no one is really fond of them, but they provide instant feedback on whether or not the shape was recognized, which saves a lot of time that had been spent reading messages in the console. Patrick and Chris set up space at the bottom of the screen for the students to enter in equations and other answers. They have it set up so that if the student adds a label of the format "R _ _" to a force, a box appears in this space waiting to be given a value.
Thursday and Friday: As I was trying to get labels to delete properly when the user undoes, deletes a highlighted shape, or clears all, I found the first two of these were not working properly even without labels. While it will clear the strokes from the screen, as soon as you draw new strokes the supposedly erased ones reappear. I’m working on fixing that now. There have been some issues with Git that are making it hard to work with at all. I hope we can get that resolved soon.
This week I finished the online ethics training required because of funding from the NSF (I think). On Thursday I saw some guys in the lobby of the Traditions practicing with a lasso, I should’ve gone up to them and asked them about horseback riding in the area - the two are kind of related, right? I haven’t found anyone who knows anything about the barns around here, although even if I did, transportation might turn out to be impossible. I’m going to be so out of practice in the fall! (I’m on Pomona’s equestrian team.) On Friday I went to see Jonah Hex with Mustafa and Mac. We had wanted to see Karate Kid, since they haven’t seen it, but there were no more showings of it by the time we decided to go. On Saturday, Jessica invited me to come with the Math REU students living at the Tradition to Jin’s Asian Cafe for dinner and to a few rounds of Mafia later in the evening.
The workbook is supposed to be in a classroom-useable state by July 1st. We have a lot done ... but we still have a lot to do!
Week 4: June 20 - June 26
Well, undo/redo are pretty functional right now. I thought it was going to take Chris and me at least all week to figure out how to do it, but when I got to the lab on Tuesday there was a 6 am push from Marty that did everything. Instead, I’m going to work on some kind of answer-checking system that can spit out specific problems with the final diagram and maybe highlight problem areas. Right now the answers are hard coded in.
Later in the week: The AnswerChecker I wrote has a list of Wrongnesses. A Wrongness has a message to print/display, and an area to highlight that is either a bounding box (an imaginary rectangle somewhere in the sketch with its own coordinates and dimensions), a JPanel, or a JText field. So when you check your answer, AnswerChecker iterates through its list and displays messages and performs appropriate highlights. The bounding box highlighting is iffy right now, and I still need to write the various timers so that things un-highlight appropriately and prettily.
We had some engineering students come in on Friday to test. It was kind of a disaster. We’ve all become experts at drawing so that it recognizes, and when we test we draw as sloppily as possible. The engineers all drew super precisely, and were unused to using the tablets. Nothing was being recognized ... oh well. After the user testing, the whole lab went out to lunch at Fuzzy’s Taco Shop. Their motto is something like: "If it looks like a taco and smells like a fish, it must be a Fuzzy’s taco!" That’s the second time I’ve been there this summer. Then we saw Toy Story 3 in 3D. It was so good! I definitely cried at the end. On the way to Fuzzy’s I saw huge pastures filled with horses, but it turned out they were attached to the Dept. of Animal Science’s Horse Center, as I had expected. I’ll have to visit, maybe they’ll have some summer workshops or something that I can sneak in to.
I spent a lot of time with the math REU students over the weekend. Kenny, Junsong, Jessica, and I finished a 1,000-piece puzzle together on Saturday. The whole math REU group went to Rudy’s Bar-B-Q for dinner, then Grand Station for mini golf, and Spoons ("Come Spoon With Us!") for dessert. I’ve been to Spoons twice now -- can’t say it’s better than Yogurtland or 21 Choices, but it was refreshing to eat something that didn’t contain chicken or beef. We finished the night playing the most awesome board game of all time: Settlers of Catan. Kenny and I won.
Week 5: June 27 - July 3
I shuffled ShapeLabels around again; they’re now an attribute of shape rather than their own class. This is so that they’re included in the saved sketch. Hopefully this is the last I’ll ever have to change them. I changed Wrongnesses too, though I was never able to think of a better name. "Error" sounds too serious; "Problem" could be mistaken for a question. I guess "Mistake" would’ve worked - but that seemed like a subset of things that were wrong. Oh well, no one has complained yet. Anyway, that’s now an abstract class - there are JComponentWrongnesses, StringWrongnesses, and NodeWrongnesses. I thought I might have to do that since the difference between highlighting a JComponent and highlighting a node seemed significant enough. I’m still not sure though. The timing of highlighting is all through the timers Marty wrote in FeedbackPanel. It’s so convenient how you can add multiple Action Listeners to one swing Timer. The equation and force panel highlighting is pretty now, but I’m not sure if node highlighting is working since FreeBodyDiagram’s checking of nodes is still a little iffy.
On Tuesday, after getting our Tuesday tacos at Rosa’s Cafe, Kenny, John (a former math REU student, now Texas A&M grad student), Arnold (former math REU student, now a grad student at Purdue) and I went to see Knight and Day. It was really pretty terrible. We played Monopoly with Jessica late into the night, Arnold won with probably 9-ish hotels in play. We played again later in the week and I won with hotels on Boardwalk and Oriental Avenue. John, Kenny, and I also went to see Karate Kid since they hadn’t seen it yet and because The Last Airbender has been getting such bad reviews. The three of us also went bowling at that same Grand Station place. John forgot to mention he’d taken a bowling class, we had to find that out later from Arnold.
Although the program was supposed to be done on the 1st, our meeting with Dr. Lindsey (the mechanical engineering professor who will be using our software) wasn’t until the 2nd. We were pretty much as done as we would be by Wednesday. Truss recognition still has the same issues it had in week 2. Stephanie has put a lot of work into getting line segmentation working and Travis has been working on a mysterious recognizer, but he wasn’t quite finished by Friday. Dr. Lindsey seemed content with it anyway. The obvious missing element at the moment is some kind of teacher interface for teachers to enter in the correct answer.
Week 6: July 4 - July 10
For the 4th of July, I went to see the fireworks at the George Bush Presidential Library and Museum. It was a fun outing, and since it was after sunset and there was a breeze, the walk there and back was actually pleasant. I guess the heat has been so omnipresent that I haven’t mentioned it. It’s been around 95 every day, and when you factor in the humidity it pretty much feels like over 100 degrees. We didn’t get Monday off, but Travis was at the dentist and Patrick was back in the hospital (he had his appendix out and hasn’t been in the lab for a week or so, though he was in on Friday). Chris and I did some small bug fixes while Stephanie started working on a cursive "y" recognizer so the axis is easier to draw.
On Tuesday I walked to the Horse Center. There was just one girl there - a graduate student doing some research with a whole bunch of young horses. I asked, but she didn’t know of anywhere that gave lessons or anyone taking them. She thought most of the activity must happen at the Freeman Arena. I stuck my head into the Pearce Pavilion, which is right next to the Horse Center and is air-conditioned. On the way back I saw a bus and managed to find its stop. For future reference, route 36 had a stop relatively nearby. Chris asked a friend of his in the Parsons Mounted Cavalry where they ride. It turns out they practice near the Freeman Arena - both are too far away to walk to in this weather. The A&M Equestrian Team is one of the best in the nation, but they’re pretty much disbanded in the summer it seems; they’re based out of the Brazos County Expo Complex. As curious as I am about their facilities, a two-hour walk is just a little too much to manage. Plus I think there’s a flash flood watch for today.
The rest of this week was pretty slow, both in and out of the lab. Node highlighting was working, but the association of forces with nodes was actually a rather large unresolved/un-tackled issue. Chris is working on that now (I think). I was working on improving the shape popup menu - more on that later.
On Friday, Kenny, John, Arnold and I went to see Despicable Me. Unfortunately, it was sold out so we went to see Predators instead. I haven’t seen Predator or any of those Alien/Alien v. Predator movies, so I wasn’t sure what to expect. From the previews it hadn’t looked like the sort of movie I usually go to, and it wasn’t, but it was still entertaining. After Knight and Day I was ready to be offended, but even though the obligatory woman had to be rescued at least she had a giant sniper rifle. Fun fact: the audience was predominantly male.
Our lab was supposed to go to a $1 orchestra performance in Houston on Saturday, but it was sold out.
Week 7: July 11 - July 17
Jessica went to New York to sightsee and visit KAUST friends working there so it was pretty lonely all weekend. I finished a second 1,000-piece puzzle while she was gone.
There has always been a menu that pops up when you hover the cursor over a shape you’ve drawn. It’s a class called RoundMenu that Dreu (a grad student) wrote which extends JPopupMenu. It has four icons - a check mark, a question mark, a red ‘x’, and a ‘T’ - only one of which (the ‘x’ that removes the shape) was working at the start of this summer. Way back when, I made the text box that the ‘T’ opens save its text. Right before last Friday’s meeting, Marty implemented the question mark. Its job is to give a list of alternate shapes so if a shape is mis-recognized the user can force it to be recognized as something else.
The alternate shapes originally opened a second RoundMenu with buttons for each alternate shapes and closed the first RoundMenu since you can’t have two popup menus open at once. I tried out various ways to get it do display both menus at the same time. At first I tried changing RoundMenu to extend JPanel and wrote a wrapper class, DoubleRoundMenu, that exteded JPopupMenu in its place. DoubleRoundMenu had two RoundMenus and passing all the real work off to them. I had way too many issues with transparency using this approach, so finally rewrote DoubleRoundMenu to be pretty much exactly the same as RoundMenu, but with two sets of button lists instead of one. It’s probably not as elegant as it could be, so Marty or Dreu might swoop in and re-do it entirely, but at least for now you can toggle the outer menu on and off without losing access to the inner menu and it looks a lot nicer. (Below: top, the popup menu with only the inner menu open; bottom, the popup menu with the alternate shape menu open.)
Friday: Stephanie had the excellent idea of taking the morning off. She and I went puzzle shopping at Target. I was hoping they would have some paint by numbers, but they didn’t so we went across the street to Hobby Lobby where they had a pretty good selection. I got myself two paint by numbers and a pack of embroidery floss; Stephanie got a counted cross-stitch kit. We finished off the morning at HEB. I took the embroidery floss to the lab and soon Stephanie and I were teaching everyone how to make friendship bracelets (except Marty who wasn’t "interested in friendship"). I made a bunch of bracelets over the weekend in addition to finishing a third 1,000-piece puzzle.
Week 8: July 18 - July 24
Tuesday: The color selection menu is working. Users can now (more or less) pick what color to draw in. Implementing it broke the DoubleRoundMenu. There are still issues with getting an outer menu to close. I’ve set the buttons’ visibility to false, removed them from everything I could think of, set the buttons to null, and repainted and revalidated a billion times and they still remain on the screen ... mocking me.
Wednesday: It was a long a vicious battle that I had with the DoubleRoundMenu, but I have emerged victorious. For reasons still unbeknownst to me, simply calling panel.remove(button) was not enough. I had to call panel.removeAll() and then re-add the buttons of the inner menu. This seems pretty clumsy, but it’s working. There seems to be something strange going on with how the stroke color is actually changing though. I just took the same line of code that the pre-existing JColorChooser used (it is kind of crazy Java has a color chooser class already built in) so I think this was happening before too, but when you change colors, previously drawn strokes take on a very faint border of the new color. I think this is probably just the strokes getting re-drawn in the new color underneath themselves, but I will look into it.
Thursday & Friday: I began implementing stroke/shape dragging which helped me to understand the issue with the color changing. For some reason when you move a stroke, a ghost copy of it remains in the original location. The ghost never changes color and does not seem to be acknowledged by any of the recognition. Shapes that have been moved change color as expected. Since there is only one draw color variable being changed, all strokes take on the new color. That’s my project for next week -- that and making a poster.
On Thursday night, Dr. Hammond checked in with the lab via email. She asked for status updates from all the REU students and told us she expected each of us to do our own poster and paper. It was a bit of a surprise since we had expected to make just one poster/paper as a lab. When Stephanie, Patrick, and I read the email Friday morning we were a little panicked, especially since poster titles were due at 1pm that day. Marty managed to calm us down and we divided our material into three parts. Stephanie is writing about symbol recognition, Travis about his magical grouping algorithm, and Patrick and I about the user interface.
Week 9: July 25 - July 31
Over the weekend I finished off an entire box of animal cookies. I seriously considered going to Target on Monday morning to get more. Those things are delicious. I also finished one of my paint by numbers and made good progress on the second. I’ve made 13 friendship bracelets now and only have pink thread left.
This week was mostly spent creating a poster. We spent most of Monday working on the abstract for the user interface poster, figuring that the three posters were so similar that if we perfected one abstract the others would follow quickly. The abstracts were in a Google Doc, so we edited overnight and turned them in on Tuesday. On Monday a whole bushel of transfer students was touring the department and dropped by our lab. We were only expecting about ten students, but there were more like thirty that packed into the lab. We gave a demo on our big SMARTBoard. Hopefully we didn’t bore them too badly.
Tuesday the 27th happened to be my birthday. After sending in the abstract, I left early and relaxed in my room. Stephanie and I went to dinner at Jin’s to celebrate. The big party is going to have to wait until I return to California. It was great getting birthday wishes from my friends back home. They’re all off on their own adventures in everywhere from Bryce Canyon to Hawai’i to Mombasa. I’m looking forward to exchanging stories when we all return to Claremont.
The posters were due 8am on Friday. Our three are pretty snazzy. They all use the same header and background that look almost exactly like our program’s user interface.
Week 10: August 1 - August 7 ... plus August 8th and 9th
This last week went by incredibly fast. Except for an emergency trip to Target to replenish my animal cookie supply, it was paper-writing and poster-presenting every day. None of us REU students got much work done at all on the project. Chris and Laura have been doing a ton of work to get it ready for its big debut on Monday. We’re going to be demo-ing "Mekanix" for a bunch of engineers. Yikes!
We (Patrick, Travis, Stephanie, and I) did a practice presentation Tuesday morning in front of the other CS REU students. That afternoon there was a public poster conference of all the TAMU Summer REU programs. It was not judged, and was much more casual than I had expected. Not many people stopped by our posters, which were all in a row. The big day was Friday. On Friday the conference was a competition and only CS and engineering students and professors attended. Everyone was divided into two sessions. Session A of presentations began at 8:30 Friday morning. I was the only one from the Sketch Recognition Lab presenting in Session A, which was too bad since our posters make the most sense together. I thought it went really well. About 8 people stopped by and only 3 of them were assigned to judge me. Only 2 of those people were CS, the rest were engineers and they seemed really interested/excited about our program. They were definitely familiar with the problem we were trying to solve. ... I was going to try and write a short explanation of it here, but I think I’ll put that here instead.
My mom flew in on Saturday to visit. She was really curious about the lab and College Station after all she’s heard about my experience here. I gave her a tour and on Sunday we drove to Galveston, which was really fun. I’ve never been to the Gulf of Mexico before and was amazed at how warm the water was, how gentle the waves were, and how far out into the water it stayed shallow. It seemed as gentle as a swimming pool compared to the Pacific. The city and its history were interesting too -- stilt houses and weather-beaten apartments right next to Victorian mansions! Since it is 2.5-3 hours away from College Station (we got a little lost on the way there) we didn’t have much time at all to wander around.
I am returning on Tuesday morning. That same day my TAMU CS account is going to expire, so I won’t be able to edit this website anymore. I also won’t be able to edit the version that goes up on the DREU website (I’m hoping my links last, and that there aren’t too many typos in here). Thanks for reading, I hope you’ve enjoyed my journal! Bye!