Sensorial’Org

OLM: Wrapping Up

Last Thursday was the feature freeze; this Thursday was the code freeze. It’s frustrating that I haven’t accomplished everything that I’ve set out to do, nor have I finished everything that I’ve started. The next best thing is to document what I’ve done so that someone else could pick up where I’ve left off.

Following the last progress report:

February

Week 2: Folded the Student and TA Controller into a User controller, and abstracted the Views to handle both types of users.

Week 3: Code sprint! Started the initial mapping of TA to groups, and played around some more JavaScript. TAs are mapped to groups, and that information is sent to the database. A count is displayed next to each TA’s name to indicate how many groups have been mapped to them. This information is not assignment specific however, because towards the end of the second day, the backend was remodeled so I didn’t want to invest a lot of time implementing something that would break with the new architecture.

Still needs to be done is the toggling of groups (e.g. groups that’s been assigned to a TA, groups that haven’t, groups that have been assigned to a certain TA, etc), automatic mapping (e.g. divide the groups evenly between all TAs), and unmapping.

March

Week 3: Since the TA mapping was at a stand-still, I spent the week polishing up the Assignment Rubric’s and Grader’s view.

Week 4 (to be done):

  1. Documentation: what’s been done, what’s still left to be done.
  2. Documentation hand-off details; where things are; which files are doing what.
  3. Documentation within the code; make sure everything makes sense.
  4. Refactor some code.
  5. File tickets when necessary.

Summary of Deliverables

Screens on the top illustrates how the system was before I implemented my changes. The after shot is on the bottom for the comparison.

Read more…

Reflection

This course has been both been challenging and fun. Challenging in that Ruby on Rails had a steep learning curve and trying to pick up a new technology along with three other different technologies in other courses was difficult. Furthermore, time management is extremely important. On one hand, you’re working on a project that you have an genuine interest in so you tend spend a lot of time trying to perfect it. On the other hand, there are no deadlines. We meet on a weekly basis to report our progress, but you aren’t given an assignment and a date that it has to be done by. So there’s a temptation to push this aside and try to make for it later because something’s due at 10 tomorrow morning.

At the same time, however, it was also really fun and rewarding:

  • I had the pleasure to work with Karen Reid, Geofrey Flores, Amanda Manarin, Mike Conley, Andrew Louis, and Severin Gehwolf. My favourite part of each meeting is that it always begin with a little off-topic discussion about how everyone is doing outside of this course. It’s extremely refreshing because it doesn’t feel like I’m in school.
  • It’s not computer science without the technological component. Aside from picking up on Ruby and Rails, and Javascript, I was also forced to use the command line a lot more. I’m much more comfortable with writing scripts, using vim, killing processes, using subversion, searching for and through files, debugging, connecting to servers and databases… all that stuff that I learned and forgot about in first and second year came into practice.
  • It’s going to be used! Deployment is in September 2009. I still remember how excited I was when I got my first paycheck as a designer. It’s awesome that you love what you do, but having other people value what you do as well is something else entirely.

Some Neat Stuff

When I first went into computer science, my view on the discipline was very narrow. I thought it was programming, and for the first two years, that’s what it was: writing trivial applications to solve some well-defined problem that I was never going to revisit. That, and a lot of theoretical analyses about algorithms and runtime and calculus. This year, I’m doing stuff that’s a lot more exciting: development processes, development practices, development teams, and writing software that have actual applications, software that’s actually being used. One of them being the OLM project I’m working on. That’s a really rewarding experience.

But the really interesting things are being developed in grad school, something that I wasn’t even thinking about considering. Until the Research in Motion showcase yesterday. The projects that I found most interesting were:

  • SketchPad, an tablet application that allows an architecture/designer to very quickly iterate through floor plans and furniture placements. They have the ability to divide up space with multiple doors, glass walls, workstations, etc. All of the renders were 3D so you’re able to see the space from virtually any perspective. What was really impressive was the walk-through feature. After the floor plan has been laid out, you can draw a trace around the floor, and a movie is generated to show the new layout based on the path that you chose; it shows you the space from the perspective of someone walking through the space.
  • This is just fucking remarkable. I have no words, because I was watching the project representative, Seok-Hyung Bae, draw for an hour. Although I’m not sure how easy it would be to draw organic matter with the system. It’s relatively simple to imagine the wireframe of a spacecraft, or a car, especially with the system’s aid in perspectives, but for something like a human being, the planes are suddenly a lot more complex. I imagine it might still be easier to paint with colours and values, and rely on the brain to subconsciously resolve how it all comes together. Regardless, I need an ILoveSketch.

The video browsing by direct manipulation project was also really fun. Given a video clip, you’d click on an object, and the system will show it’s movement over time so by dragging the mouse, you move it back to where it was before or where it will be after. Then there was a video tracking system that studies various characteristics about people entering and leaving the space. E.g. demographics, how people are responding to an ad, etc. Tag clouds meet reviews. Using an adjective-noun extraction technique, you’re able to generate a visualization of all user-submitted reviews. In the end, you’re given a cloud of 20-30 keywords, and the context in which they were used. Remote control cars and airplanes were cool when you’re a kid, but a remote control robots are in another league entirely. It’s a whole new level of animation when control is transferred from a library of motion algorithms to the animator himself.

The breadth of this discipline is just amazing. It does’t matter what you’re interested in, there’s a place for it in computer science.

Other things that I’ve stumbled across that is worth sharing:

Art vs. Design

I don’t find the arguments particularly interesting, but the question has been cropping up a lot. I was first engaged in the debate while I was in the AWC, and then in the WPR community (partly because they overlapped). The topic came up again while I was CUSEC in a talk that compared software design/engineering/coding to art. Most recently, I was asked where rationality fit in as a designer because a lot of it is irrational, right?

Two years ago, I argued that “web design isn’t art and shouldn’t be”. That was a poor choice of words. I see design as a subset of art, that is, all design is art, but not all art is design. All apples are fruits, but not all fruits are apple. All students are people, but not all people are students. For simplicity’s sake, I’m going to treat art and design as mutually exclusive concepts, i.e. when I say “art” hereafter, I mean {art}-{design}.

What bothers me about the comparison is that a lot of new designers would chalk their poor decisions up to artistic freedom. Art is not a scapegoat for the lack of usability. That’s no excuse for illegible text, misleading navigations, loss of user control, incomprehensible content, etc.

When I think of design, interaction is the first word that comes to mind. (It used to be function and intention, but I realize now that they are criteria of the bigger concept.) Early in the creative process, there should be no limits because it’s all in the name of exploration. However, at the end of the day, everything should come together in some cohesive manner. The product must accomplish what it was commissioned to do (goal) and perform it in the way that the user (actor) expects. Making the connection between that crazy idea (design) and the given business objective (goal) is very much a logical process. The creation of it might be irrational, but the end result is organized chaos; it’s okay as long as the user is aware of the goal and the path to it is clear. (Read: actor <=> design <=> goal)

On the other hand, you don’t interact with art. Instead, art is intended for reactions; glamorously, it’s seeking a emotional response. (I suppose another reason why people like mingle art and design is that there’s a prestigious aspect in that.) Beyond that, there isn’t any function or purpose. Not in the sense that its existence was created to accomplish a user-centric goal. Think paintings, photography vs. posters, postcards, i.e. graphic design. Think sculptures vs. furniture, i.e. industrial design. Then think about how music, drama, theater, architecture, software, and fashion fit into the picture.

Design, inherently interactive, poses certain constraints that can’t be ignored because they threaten the goal. They deal with people. If the user makes a mistake and doesn’t know how to recover from it then you have failed. Maybe failure is a little harsh, but it’s certainly an indication that the solution falls short. You can always blame the user for trying to do something that the system is not intended for, but as the designer, you should have expected it. You’re designing for people, after all. That sounds crazy because we hear stories about people trying to do crazy things all the time, yet that’s the reality of it. Your users are not like you! It’s frustrating. It pisses me off. It has me at my wits end(–damn you, why can’t you just use Firefox?!), but I love it.

But getting back to reality, it is feasible because you’re not trying to cater to everyone. You have a target audience. You have stakeholders. You have a domain, a market in which you operate. Then you have everyone else. You only need to satisfy the people who matter.

To be continued. Everything is just coming together from hobbies, from school, from work, from everything around me, really.