Monday, May 12, 2008

It seems like I'm the main (if not only) blogger here, so I'll utilize this little piece of Internet to report about my Summer of Code experiences.

Well, I'll do that when I have them. For now, I'm still hard at work for school and that's likely to remain for the next 1.5 months. However, since SoC starts in a few weeks, I'll have to start the careful balancing act of combining two stressful attention-craving things. Yikes!

So, what HAVE I done until now?

We (my mentor nash and I) have decided on a name for the project. It's going to be "daneel-ai", named after the famous robotic rule-based decision maker. I don't foresee my AI saving mankind, but it would be a nice side-effect.

I've been reading about Git, managed to make a local repository and made my first push to the central server, then forgot everything about it. It just doesn't stick around in my brain. I suppose this will be better when I have to use Git daily, for now, I still like SVN more. The power of a familiar environment.

Finally, I've started Python study, working my way through Dive Into Python. Currently around page 100. I'm still a bit unconvinced. I swear by object-oriented principles for any project that is bigger than a few hundred lines of code, and Python doesn't seem very elegant for OOP. Handling self all the time, no protected methods, ... On the other hand, lambdas and list comprehensions are lovely, but (as minor nitpick) I don't like the "for ... in" syntax. In Haskell, you can clearly make the separation between variables (which are alphanumerics) and syntax (which is basically | and <-). In Python, it's all words, often all lowercase. I don't find that to be promoting readability. But all in all, I suppose it's one of the least bad languages we have...

Anyone know a decent Linux IDE for Python? I couldn't get PyDev for Eclipse to install - it freezes when I input the environment info. Any others?

1 comment:

Tan said...

Hi, I also recently learned git. Hope you won't mind my sharing of a few commands that I've found useful for a newbie like me:

git checkout [file] - resets changes to a file, similar to svn revert. I'm not sure why they call it checkout...

git status - Shows you a list of which files have been committed, which files have changed and which files are completely new (not in repo). It is useful in conjunction with:

git add [file] - before making a commit, you have to select which changes you want to actually commit. You can individually select changes using this command. Useful when you've made a few changes here and there which you don't want to commit.

git diff [file] - diff of changes

git commit - some useful flags are "-a" to commit every possible change (instead of adding individually) and "-m [message]" to specify the commit message without opening the editor.

git rm [file] - Removes file both physically and from the repo

git clone - I've found it useful to keep two copies of my repository: one in "pristine" condition and another for working on. It gives me peace of mind.

If you're using gui-based git, kindly disregard all my comments above :)