Sunday, November 27, 2011

Week #13

It was a very short week with Thanksgiving, and a much needed break. I feel like I've lost all my memory over the break, so hopefully everything snaps back into place when I get into class again (or at least by Friday).

The first presentation from Team Xtreme was very good for an audience of a less technical customer. The use of the three words they came up with was very creative and added to the presentation. It was probably more difficult for the class to step into this role when everyone has labored over the project. They had some good add on features. I'm not much of a twitter fan, so the extra Twitter feed didn't excite me that much, but the spell check on search was good. I know how many times we mistyped things when we were just testing. It's a very useful feature that I didn't even think of.

The second presentation was less impressive, mostly because of the technical failures. Since the bandwidth was out, they should have switched over to local. I really wanted to know that the image showed up. Even if I just saw that the img tag was in the html or something. It ruined the ability to see important and required functionality. The instant search was a very cool feature. It feels like using Google Instant. Pagination was also a good feature.

Looking at the other sites, some other groups did different things that we were barred from doing after asking the customer (TA and Downing). After asking about not repeating links/images based on url, we were shot down. Also, there were some questions we asked about the search and formed our search around those specifications. Honestly, it's a situation that can appear in the real workplace also. You go on and do something without asking vs asking and then being shut down. It all depends on how your customer/boss reacts.

Looking forward to other groups.

Sunday, November 20, 2011

Week #12

 Friday was the last day of normal class. So strange to be done this early, but I want to see what other people did with their projects. I wanted to wait until people presented to see what people's sites were like, but we have to look at them to finalize our "what is better/worse" part of the presentation. We will be the very last ones to present, so hopefully we make a nice finale.

As with many projects, I'm not completely satisfied with our project's final state. We had tons of ideas (especially on the visual side of things) to make it better in terms of an end user. I really appreciate user-friendly sites, which as I've learned through this project as well, not everyone really cares about. I think it's kind of a shame that more people don't care about  the all around user experience rather than just piling on more functionality. I thought by this point that people appreciated the joy that beautiful and easy to use technology brings to people. Of course, there is this whole thing about this only being a school project, and I'm bringing my full blown user oriented thoughts to a product that doesn't have many future users. :)

This week was pretty cool. I wish there were more design patterns covered in this class, but alas. I'm really amazed that it took me this long to learn that Reflection is possible. It's pretty damn awesome. On Friday, we kind of shoved some ideas into class quickly. For factories, the examples were given in Python only and not Java for lack of time. I was walking through the example, but all I could think is. OMG I WANT TO USE THE POWER OF PYTHON. The thing I reallly wished would happen from the beginning was:

def create_maze (room, door) :
    m = Maze()
    m.add_room(room())
    m.add_room(room())
    m.add_room(room())
    m.add_door(door(m.room(0), m.room(1)))
    m.add_door(door(m.room(1), m.room(2)))
    return m
-------------------------
>>> maze = create_maze(Room, EnchantedDoor)
>>> type(maze)
<class '__main__.Maze'>
>>> type(maze.room(0))
<class '__main__.Room'>
>>> type(maze.door(0))
<class '__main__.EnchantedDoor'>

But instead, we had to add lots of extra code which is necessary to do the same thing in Java, but not necessary in Python for accomplishing the end goal. It's all part of the pattern, I guess.

RANDOM! For you kids that really love your CS and just really want to take more classes next semester, here's some free online CS classes from Stanford starting in January.

Monday, November 14, 2011

Week #11

Sorry for the late blog. Slept for about 18 hours yesterday because I was sick. At least it worked pretty well at making me feel better.

The World Crisis project is coming to an end. Seems like this semester is flown by even though this isn't the end yet. There was a lot of confusion about the specs of search from the times we asked about it, and from a user perspective, I would argue that the search isn't very friendly. From the programmer's perspective, it was a lot more friendly because of the use of libraries. I'm just having fun implementing features that make our project better than other group's projects.

I'm really failing at getting through the reading of Refactoring fast enough. The first 4 chapters were easy enough to read, but to actually absorb any of the rest of the chapters, it takes a lot longer.

The Gender Differences paper seems to come up around the time of the Grace Hopper conference. I didn't have the change to go this year, which is sad because I found it really motivating last year. At least some things were posted online, like this keynote from Sheryl Sandberg, the COO of Facebook: http://www.livestream.com/fbtechtalks/

Sunday, November 6, 2011

Week #10

Most of what we did this week was look at Refactoring. When I was buying the book on Amazon, a lot of the reviews said that this is one of those "if you're working as a Software Engineer, you should read this" books. I do like the kind of "peace of mind" that refactoring gives you that you can always fix things later if you discover a better way (which in most cases you will) and you shouldn't have to feel bad about it. You don't have to sit there and think of all the future possibilities instead of sitting down and getting code written. But it isn't okay to not think of the future at all.

For the reading "New Methodologies", I really like the way that the author describes agile. Being flexible and open to change appeals to me. During one of my internships, the team I was on was making the transition to SCRUM and I think there was a complete failure in communication about the benefits of the new system. He mentions several times that if you don't have people that are willing to do the work associated with an agile methodology, things just won't be right. The software where the team had to fill out estimated times and priorities for tasks in each sprint just seemed like more bureaucratic busywork than something to help the software engineers. I didn't stay long enough for it to actually be implemented, but I have no doubt that it had less impact than on a team who understood the benefits completely. It also made me think less of the extra work these methodologies bring to the table.

Looking forward at what's scheduled, I see that we're taking it one step further with the example of the first chapter, which seems cool and gives more meaning to covering all the other refactorings in class.