Monday, November 26, 2012

Week 13 - Thanksgiving Break (Nov 19 to Nov 25)

This past week was Thanksgiving week and that means that we only had one day of class. Unfortunately I couldn't leave campus before Wednesday evening, due to a computer graphics project which for some reason I was unable to get to compile on either my Windows or Linux machines.

Anyway, during the break, I was able to find some time between eating and socializing with my family and friends to try to digest the project. I got a good start on the ConwayCell and FredkinCell classes but I'm not sure I really have a sound strategy for the Cell container class. I think I'll be able to figure it out but I'm hoping for a bit of a class discussion to recap the intended function of Cell, since that's obviously the core challenge in this project, and I want to make sure I understand it before I spend a lot of time trying to implement it and later finding out that I did it totally wrong.

---

This class has won me over as a convert from Mercurial to Git (in certain situations). I still feel the same way about Mercurial, though: it is much easier to learn, it is much simpler to accomplish basic tasks, and it works infinitely better on Windows for much less effort. However, I was working on a project in the Linux computer lab and since my Windows dev box crashed this week, I knew I would only be working in Linux. So, even though all my other graphics projects used Mercurial, I used Git for this one, and found that the power and flexibility it gave me was worth the extra complexity in the commands.

The use case for Git in this situation was more like insurance that I would always have a recently saved, working version of the project, which incrementally implemented more features. Essentially, in this case, there would be no branching and merging, and it was unlikely I would want to revert, so I was using it for its most basic features. Once you start getting into the more complex stuff, I think that the analogy

Mercurial : Git :: Python : C++

You give up a bit of power for expressiveness, but when you need to execute complex tasks quickly, the expressiveness is what you are going to care the most about.

Having gotten comfortable with both systems, I feel like there is actually very little difference in the actual functionality, and my preference for which one to use is going to depend mostly on the project's platform. If I'm on Windows, I will still hands-down prefer Mercurial. On Linux, it will depend on what I need my VCS to do for me, and how I plan to use it.

No comments:

Post a Comment