Summer of Code Weekly #1

During this summer, I will post each week a short summary of what I did, the challenges I encountered and what I learned during my Summer of Code project. I am doing this for helping me to keep track of my progresses.

So how was my first week? It was great. I don’t know why but I love programming in C. It is just plain fun. I thought learning Python C API was going to be hard, but it is quite easy after all. I just read the code in Python itself and check the reference manual for the things I don’t know. My biggest surprise, this week, was really learning how to do subclassable types. It is strikingly easy, however it’s quite verbose. You can look at my scratch extension module, if you want a minimal working example.

Other than learning the C API, I started working on the cStringIO/StringIO merge. My current plan is to separate the cStringIO module into two private submodules, _bytes_io and _string_io. One will be for bytes literals (ASCII), and the other for Unicode. This will reflect the changes made to the I/O subsystem in Python 3000. These two submodules will provide optional implementations for the speed-critical methods, like .read() and .write().

One the best things, of this week, was the great feedback I got from other Python developers, and particularly from my mentor Brett Cannon, who cheerfully answers all my questions. Now, I just hope the following week will be as fun, or even more, as this one.

· RSS feed for comments on this post

2 Comments

  1. Senthil said,

    May 28, 2007 @ 12:04 am

    Good luck dude. was following the python-dev posts and was surprised you noticed the for line the type of modifications in more than one module. Was waiting for comments from others on that. Yes, /me too with SOC and started slowly with python-dev. Answering questions and comments at sf.net bug reports. I am working on cleanup of urllib.

  2. Alexandre said,

    May 28, 2007 @ 10:54 am

    Thanks, Senthil. Good luck too with your Summer of Code project. It certainly looks promising.