Friday, July 4, 2008

Section One Roughly Done

So far so good - I have finished the signaling section for the pymsn library. It is very rough, only handles one case etc, but it will allow me to move onto the next section of work. It shouldn't be too hard to polish up this code and allow it to handle the other cases, but I am really keen to get a prototype of the whole project working (pymsn signalling and the gstreamer plugin with the corresponding webcam data flowing correctly) so I have moved onto the gstreamer plugin work.

I am busy trying to look at the old msn plugin to determine what I can reuse from it, as well as looking at the new farsight elements to see the correct structure that I need to implement. I think I know what I have to do with regards to subclassing the various elements and the functions I need, but its the "how" of going about it that I am pondering at the moment.

I actually went and printed out the plugin-writers guide which I have read bits of before, but never read the whole thing from start to finish. I must say it is making more sense now that I am rereading it for the second time now.

Wednesday, June 25, 2008

Hopefully back on track

It's been a while since my last post, but some progress has been made. At the moment, I am still working on the python code for receiving a web cam. I have a WebcamSession class which is still very rough, but at least it seems like its the correct way to go (perhaps not the best name for the class, but I'll worry about that later). Rough hacking has the project at the first stages of the correct signaling being passed between the two clients, but at the moment I am trying to refine how I do this as it was a just a temporary measure to get some momentum going.

At least I have finally gotten some code written, that actually does something and allows me to start working on the problem at hand, rather than trying to understand previous code - although I still need to understand how to work with individual messages after the first session invite has been sent.

Last week was a fairly frustrating week, as life kept jumping up and demanding attention. I did get some routine medical checkups out the way which took up more time than they should have due to travel time etc but glad to say I passed all the tests (apparently staring at a computer screen for the majority of my life so far hasn't damaged my eyes :) ).

It was also my birthday which involved spending time with my parents out on the farm (my father is the ceo of a wine estate and we stay on a "retired" farm nearby). I am happy to say that finally after about 4 months of living without a couch I am now the proud owner of two couches :)
Once I get my projector, I hope to have many xbox/movie nights with my friends.

Anyway, now that more of life's admin has been taken care of, I predict that the coding will go more smoothly.

Thursday, June 5, 2008

Some code at last

I was a bit fuzzy on some of the details of my project, but feel that things are at last coming together in my head now. One of my misconceptions was that I was just coding a farsight2 plugin, rather than separating the signaling out into a pymsn component and a farsight 2 part.

This distinction gave me a much needed place to start coding, which I have enjoyed so far - mostly due to the excellent work done by the pymsn team. It does however mean that I need to improve my python - I have never written a program in python before, so I have a fair amount of things to learn. Enforced indention ? A bit different to my C syntax :). That said, I think I will have to be careful, I might get converted to python :)

It was a pleasure to read the API and get a simple program running. At the moment I have a client that logs into MSN and sets it's presence to "online" which means my other account can see this testing account.

Onward to the subclassing!

Thursday, May 29, 2008

Oooh - another package :)

I got another package from Google today. Its a credit/debit card which is how we will receive payment for our work - they load the appropriate amount onto it from their side, and then we get to use it in shops that take master card etc. I think it looks quite snazzy :)

The name on the bottom of the card is GSOC 2008 STUDENT - I wonder if I will have any problem when trying to use it.

Still going through code, looking at how things have been done, trying to identify the best place to actually get started - I think probably implementing the MSN codec stuff would be a good place to start -> Just get the video "recording" and "playing" from / to files, and then across the network. I think there has been a fair amount of code done relating to this, so hopefully it will be a good place to get some progress going.

Thursday, May 22, 2008

Beautiful Code

The awesome people at Google have decided to send a gift (a book entitled Beautiful Code) to the students of the GSoc 2008 program.

I'm currently out of non work related reading material, so it was very well timed. I have only read around 50 pages, but am enjoying it so far. It is comprised of many different chapters written by different authors, each discussing what he feels is a piece of beautiful code. The back of the book says "...today's leading programmers walk through elegant solutions to hard problems, and explain what makes those solutions so appealing."

One of the reasons it is appealing to me is that this year I have been doing a lot of coding under time constrains, and pushing for some sort of visual signs of progress that I can demonstrate - hence hacking together a lot of code that is not very beautiful, but just works. Hopefully I'll be able to learn a couple of new tricks from this book.

Here are a couple of quotes from the end of a chapter on reducing code - Entitled "The Most Beautiful Code I Never Wrote"

  • If I had more time, I would have written you a shorter letter. (Pascal)
  • Simplicity does not preced complexity, but follows it. (Perlis)
  • Less is more. (Browning)
  • Make everything as simple as possible, but no simpler. (Einstein)
  • The cheapest, fastest, and most reliable components of a computer system are those that aren't there. (Bell)

Inaugural Post

Whew - things have been hectic this year so far. I have just finished co-lecturing a course at my university, so hopefully things will calm down - just the exam on the third of June to invigilate and mark.

I have created this blog in order to share my progress made in my Google Summer of Code project, but first I will give my readers a bit of background information.

I'm currently studying a Masters of Science Engineering at the University of Cape Town (in the beautiful land of South Africa :). I finished my B.Sc. Electrical and Computer Engineering last year, and decided to carry on studying.

I'm currently conducting research in the IP Multimedia Subsystem (IMS) for Next Generation Networks. It is a telecommunications framework designed to allow rapid development and deployment of new services. For my undergraduate thesis I worked on a simple IPTV broadcasting system over the IMS framework, and currently I am researching different ways of conducting video conferencing utilising the specific control signalling that the IMS supports (an extended version of SIP).

These two projects lead me to becoming involved with the GStreamer community as I used the GStreamer Multimedia framework to handle all my audio / visual needs for my IPTV system. More recently, I have begun to incorporate the Farsight 2 work into my research, and have been using it extensively to create a video conferencing system.

This collaboration (or rather, me asking questions and getting answers) has lead me try and contribute to the GStreamer/Farsight cause, which has resulted in my acceptance to the Google Summer of Code Project.

My GSoc 2008 project aims to take the old unmaintained plugin for the MSN webcam protocol and recode it for the Farsight2 API, as well as integrating it with a Telepathy connection manager. The end result of this project will consist of a plugin developed for Farsight2 (written in C) together with the necessary documentation and several examples in order to enable other developers to utilise it easily and successfully.

Well, thats the goal - I hope I can complete it successfully. I'll try to update this blog with my progress - we will have to see how that works out :)