Wednesday, August 26, 2009

An Interview with RTFTR Team

Here is next in a row of interview series. Are you all excited to know more about a project which got second position in Open Software Challenge Nepal 2009 (OSCN 2009)? It is RTFTR. Today i have Bibek Shrestha answering on behalf of RTFTR team. Without much delay lets start the interview. Light, Sound, Camera.......ACCCCCCCCCCCtion...........


RMT: 1) Can you please briefly give your team introduction? What are your team member currently doing?

Bibek: We are a four member team, all of us have been classmates during our four years in Pulchowk Engineering College. Now that we've all completed our under grad, I am working as a Software Engineer / Project Manager in YoungInnovations Pvt. Ltd (http://yipl.com.np)and Anjan Nepal (http://twitter.com/rockanjan) and Lakesh Kansakar are working in DeerWalk (http://www.deerwalk.com) while Abhishek Dutta is trying to pursue his further studies in Computer Vision.


RMT: 2) What is your project? Can you please briefly describe it?

Bibek: Our project is Real Time Face Tracking and Recognition (RTFTR). As the name suggest, what we tried to achieve is build a software that will do two tasks (detection and recognitions) is realtime. And to achieve this is an efficent manner possible, we've worked on multiple algorithms and studied their combined performance. Finally we build a general application that any one comfortable with source compilation can compile and run.


RMT: 3) What did motivate you to choose this particular project for the competition?

Bibek: Sixth semester minor project and Final (eighth) semester major project and mandatory for every Pulchowk Campus students. We started working on a smaller idea of implementing face detection and recognition during our minor project. We had our interest going on in Computer Vision and spent good time in research and worked a lot into it as our Major Project. RTFTR was an opensource application even before OSCN. We have the project registered on http://rtftr.sourceforge.net. Once we heard about OSCN, it was an obivious choice to submit RTFTR.


RMT: 4) What benefit will the project have to Nepalese society or whole world?

Bibek: I personally consider opensource software as a book. There is a lot of knowledge inside it. Opensource works because the people involved in it are people who want to share knowledge. During our project, as much as we researched into international papers for algorithms, we had to look into source code of other libraries and other softwares. The benefit that we can give back to the world is that anyone with interest into ComputerVision can download our code, read the documentation and understand the working principle of various algorithms, the ones we've implemented and others algorithms we couldn't implement but we've mentioned briefly.


RMT: 5) Did your team face any difficulty during the competition? If yes, can you please give some example of it.

Bibek:
We initially had to shift our svn repository from SourceForge to D2Labs. Abhishek then got the svn repo backup and communicated with D2Labs admins and thus we migrated everything. The second thing was time mamagement. We had our jobs. RTFTR was still in alpha stages and we had a lot to do to take it into stable state. We had to give a separate time to work on it.

There weren't much problem related to project management as Abhishek has been coordinating all of our effort quite efficiently.


RMT: 6) What is your development methodology for the project? Did you use any particular SDLC?

Bibek:
Now that I think of it, I dont believe we had decided to use any methodology as such. Looking back at the way we worked, our work resemble a lot to Iterative and incremental development. All of us had the final goal in mind but we hadn't pinpointed every small detail.

All of us had the freedom to work on our own field. Anjan and I had to work on the Detection and tracking portion while Abhishek and Lakesh were involved in the recognition algorithms. We sat down for smaller team meetings and had put on short term goals spanning a week. Upon completion, we set up more goals and the process continued.


RMT: 7) What benefit will your project have by choosing open source licensing than choosing closed source?

Bibek: It is the same benefit we had during our research. One of the examples is the OpenCV library which consist of good variety of routines for smaller tasks. It also has detection algorithm which we used for comparison purposes. Freedom aside, the best part of opensource software is the community of people involved in making it possible. Every small glitch is mentioned and solved in some mailing list which is just a Google away. I don't expect the same level of support to any commercial or closed source code that can help us learn and use in our own software.

Besides, we want people to use our software for research as well as hack their way into making it better. Closed source just doesn't fit into our motive. Opensource makes RTFTR free.


RMT: 8) What are the factors do you think as main reason for your teams' success?

Bibek: When you know what you want to achieve, you are already half way into it. The remaining half was achieved by a mix of the amount of interest everyone had in computer vision, the dedication and effort of everyone in the team.


RMT: 9) What is your teams' future development plan for the project?

Bibek: As of now, we haven't decided as to how to take it further. You can expect us to fix any bugs when reported but no concrete plans to add new features. That does not mean it will be an end to it. The good part is most of the team members want to pursue Artificial Intelligence and Computer Vision for further studies. So you can expect a lot of new additions to it in near future.


RMT: 10) Do you have any suggestion for anyone thinking to take part in such competition in future?

Bibek:
In opensource everyone is a winner. Try to bring the spirit of open collaboration to your software. Once the software is free, it has its own existence. Every line of code that the developers write will can help others in the open source ecosystem. So by releasing your software as opensource, you are making it easier the lives of a lot of people in the world. This also means that even if you do not have the best of the ideas, you can get involved into contributing your share of knowledge to any other opensource projects. In the end what matters is that you contribute. And just in case you might get lucky and win the grand prize. :)


RMT: 11) Do you or your team have any blog, tweet or website where you or team actively contribute to development of open source project?

Bibek: I have a blog at http://bibekshrestha.com.np where i write down my ramblings about my work.

Our project website is at http://rtftr.sourceforge.net and http://collaborate.d2labs.org/projects/rtftr/ .

Anyone can reach all the developers through our mailing list at http://sourceforge.net/mailarchive/forum.php?forum_name=rtftr-devel&style=threaded.

I would like to thank Bibek for his wonderful insight on his wining project and some knowledge of benefit of Open source development. I would like to wish RTFTR team all the best for their future work in Open source arena.

* picture source: http://picasaweb.google.com/adutta.np/OpenSourceChallengeNepalOSCN2009GrandFinale#

Sunday, August 16, 2009

An Interview with Sumit Shrestha

I am very happy to conduct email interview with Sumit Shrestha. He stood first in recently organized Open Software Challenge Nepal 2009 (OSCN 2009) by D2HawkeyeServices Pvt. Ltd. If you want to learn more about Sumit and his project keep reading.


RMT: 1) Can you please briefly give your introduction? What are you currently doing?


Sumit: Well to begin with; my home is Pokhara. It has been my home place since 6 years since I shifted to Nepal from India (Mumbai) where I was born and studied till 10. I did my ISc under Math Group in Prithvi Narayan Campus (PNC), Pokhara.

I am currently a Student of Gandaki College of Engineering and Science (GCES), Lamachaur, Pokhara studying BE in Software Engineering under the affiliation of Pokhara University. Currently, I am in Final Semester that ends by November (including Final Year Project). As final year student, I am currently doing major project on Chameleon, an Adaptive E-Mall in a Team of four. It is basically an adaptive online shopping system just like Amazon but in Nepalese context. Besides Live Event Broadcast Using P2P, My major past projects include Pokhara University Exam Routine Generator (June, 2008- December 2008 and to be submitted as research paper in NaSCoIT, 2009), Front End for MySQL (July, 2007-March, 2008 and open sourced in Source Forge), Gandaki Store Keeping System (February, 2009-June, 2009 which was my minor project done in a team of 2) and Nepali Text to Speech (TTS) (December, 2006-March, 2007).

I would describe myself as Java Programmer who likes evolutionary Software engineering techniques like Agile, Unified Process and believes in Open source Philosophy.


RMT: 2) What is your project? Can you please briefly describe it?


Sumit: My OSCN project is ‘Live Event Broadcast Using Peer to Peer’. In one line, this project aims at broadcasting Live Event over internet using IP based tools using Peer to Peer infrastructure. This project can be considered as coalition of two different aims. The first is replacing past broadcasting technologies in internet (Client server) by point to point connection so that network bandwidth requirements gets distributed among peer users and server bottleneck is removed. The second is to analyze new generation of peer to peer system for sharing streaming files (which is used as they are obtained and has strict timing limits) over traditional static (offline and fixed sized files like video or document) file sharing (eg. Torrent, Napster). The first aim is industrial while second aim is research.

My System is as follows. The whole system is divided into two parts; Broadcaster and peer. Broadcaster is basically a computer with broadcaster program and Video Lan (VLC) publicly visible to others (it must not be confused with Server or distributing channel). VLC is used to stream live media from device or file into UDP packets into the broadcaster program. The program basically displays the stream locally for monitoring and creates an Advertisement File (Adv) which is an xml file equivalent to Torrent File containing human readable description of broadcasting company and IP address of broadcaster and port where it runs. This Adv file can be uploaded into broadcasting company’s public site where people surf and download it. The P2P network is implemented over Free Pastry. The peers are managed through it. Each peer basically is just client which uses Adv file to connect to p2p network. The Adv file gives it the broadcaster location to which it first sends requests. The broadcaster uses underlying pastry node to forward the request to the free peer in the network. Thus, the system can support any number of peers and thus is massively scalable.


RMT: 3) What did motivate you to choose this particular project for the competition?


Sumit: Basically, working on peer to peer systems had been my dream since 2006 when I first read about them in Digit Magazine. Many articles in Digit that followed continuously discussed its power and need over client server architecture. I viewed it as new technology that could soon overcome existing client server applications (absolutely everything today is client server; Web server as just one example). It was challenged earlier with forcible ban of Napster. As a geek, there was always temptation over it and its working. This only increased with time and knowledge. By third year, I had known most of client server systems. But, with end of third year, I began on journey of quenching thirst of Peer to Peer that was still new in context of Nepal. My first aim was haphazard- just work on peer to peer system. But with continued research and understanding of p2p working I settled on new version of p2p system i.e. streaming file sharing. Broadcasting was one of such example where streaming file sharing was necessary. Thus, the project concept was born and this motivated throughout the project development period.


RMT: 4) What benefit will the project have to Nepalese society or whole world?

Sumit: This project has many uses at Nepalese and world scenario. The first affect of this system is distributing the bandwidth among peer users. This means small level broadcasting companies like local FM can broadcast in internet. Broadcasting companies do not need to buy large bandwidth or pay to distribution channels for distributing as in current internet radios. Instead, they can invest in making good programs to attract large customers. For good programs, customers has just to pay some value just to get streaming media from one peer and stream same to another peer in the network. This would not be high especially with newer internet technologies like ADSL which have given customers higher bandwidth for lower cost. Since, each peer has to sustain only another peer; this would not be heavy burden because it gets same from another peer. The broadcaster can be anyone and not just entertainment company like FM, Television or like. It can be used for Tele teaching where broadcaster can be school with teacher and peers can be distant schools with students but no teacher all learning simultaneously under same teacher. In this aspect, it can be used for Mahavir Pun’s Dream project of implementing Tele teaching in Myagdi district where wireless network has been established but distant villages still do not have teachers to teach. Though this project does not support bidirectional communication but by the spirit of Open source I urge people to please collaborate into it and modify it to allow bidirectional communication. Besides Tele teaching, there are so many broadcasting applications like Company presentation or political campaigns. The fields of broadcasting are immense. One has just to implement them as necessary.


RMT: 5) Did you face any difficulty during the competition? If yes, can you please give some example of it.


Sumit:
I think the only thing that kept me throughout the project was difficulty. This project was in my opinion one with most difficulty. The first main difficulty was that the project was network project. Every test made had to be done in network with two or more computers at hand. This is clearly not possible at home. So, unlike other project mentioned earlier, entire coding of project was done at College LAN only (during lab hours)!! Since 11th January, 16hrs load shedding began. This even reduced development hours. Though fortunately my college had generator, there was still politics over its use and I honestly had to struggle lot for its use. Sometimes generator would overheat and even burn away keeping me days away from development!! The second problem was finding adequate P2P middleware. There were about a dozens of them with JXTA, pastry, Tapestry, Chord just few to mention. As Sun Microsystems development, my default choice was JXTA. But JXTA was not what I needed. After a month of working I realized it was not useful mainly due to its low performance of streaming using propagation pipes. After hopelessly trying out alternatives, I got to Pastry. It was not as good as JXTA but efficient for use atleast at LAN level (lets not talk what happens over firewall, I have not tested them at all!!). The third problem was breaking live media into UDP packets in real time and then caching them for displaying at client side. JMF provided many helps but still it was not completely useful. So, I used open source VLC. It did all things automatically. I just had to interface with it. These were my elaboration problems where I was finding hard to stabilize project baseline. The competition was to start by March as planned. I had registered for it with that purpose. But, somehow it shifted away. Now problem was my semester exams. They were to start in april. Since, exams ends by first week of May all would be okay – just 10 days leave of project work and then all clear to work fine. But, my nightmare began when exams too shifted to mid of May. Since the exam duration was one month, clearly I won’t get any time because two days after exams and final submission (i.e. 1 June). Competition is impossible now. My dream of getting to top ten is impossible now!! I used the time before exam as much as possible to code things up and my activity rose higher. i prepared stuffs for first submission of documents. After that my exams started and had to leave the work for it. It was the worst time for me. Being away from competition really hurts a lot. During exams my visit was very limited. Finally, the exam finished and I hurriedly prepared final report in two days. But, to my surprise the final submission date shifted by a month. It was my happiest moment. I was free now and focus onto my work. Initially I used singleton pattern in my project so that all the control classes created only single instance of each other through get function. This was done in hurry. But, later I realized its problem when I wanted to view more than one broadcaster simultaneously at peer side. This was not possible with singleton classes because their only instance dealt with one channel only. For multiple channels, multiple instances were required. So, I had to change about 5 singleton control classes into non-singleton ones. The problem with this task was that they all were linked with each other in network. In Addition, the flow was hard to analyze and especially the sequence of initialization!! All this hampered this work which took lot of time to fix. The final problem was me being a pokhara participant. I had no clue what was going on D2Labs. I had not attended any seminars organized by D2Labs regarding OSCN. Till end, I communicated through emails. Though 190KM was not great distance, but many problems in way and also in valley prevented my visit. Finally, at my grand finale visit, I had to test demo prior to finale just for confidence. This could have been done easily in D2 Hawkeye lab. But, D2 too had just shifted into new building and lab was just being set up and testing was impossible there. I had nowhere to test. Finally, at grand finale, the laptops provided for demo were all Ubuntu systems. But, I needed XP systems and aleast two of them!! Also, the demo time must have started from morning i.e. from 7. With only less hours of preparation for demo caused me completely focus on it and miss earlier presentations.


RMT: 6) What is your development methodology for the project? Did you use any particular SDLC?


Sumit: I used Rational Unified Process for developing this project as in my earlier past projects. The main reason for it was the research nature of project and ever changing nature of network so that no single fixed requirements work. The whole project development evolves over time refining ideas with implementation and feedback. May be my course subject of UP was reason for its use. My SDLC according to UP be iterative and incremental. Every iteration focused on one aim (may be fixing bugs in bug list or adding features or restructuring codes) and released new versions (increments).


RMT: 7) What benefit will your project have by choosing open source licensing than choosing closed source?


Sumit: Open source projects all shares same benefit as Eric Raymond observed “Given more eye balls, all bugs are shallow”. The project is research in nature with many technologies to work with. More ever, these technologies change with time. So, the project needs to adapt and update with time. This cannot be supported by single developer. All we need is a collaboration of open source developer community who devote their extra time for cause. The project needs them not only for future development but for support to customers who trust this system so as to apply it to marketing aspects. Currently, this project is just small level testing with no great real time use features. So, with open source there is hope that it continues to expand into really great system to be used over internet. This is clearly impossible with closed license which will limit it to a hobby project only.


RMT: 8) What are the factors do you think as main reason for your success?


Sumit: There were many factors behind getting first in OSCN. Firstly, there was no great change in project. I did not waste any time learning new language or tool. Since, it was java program using Netbeans which has all integrated support for the project including SVN support, I found no big change. Secondly, I started my project quite early from January. This allowed me time to save research on important parts during formal project time. All was already done much ahead. So, inspite of the above mentioned problems, I was just as cool as other project throughout. Thirdly, my attempt to take part in GSOC last year was one important factor behind success. Though I was not selected, I had learnt global open source competition and way of expressing. Fourthly, I would mention my college (especially Prasanna David Sir) for developing open source culture in me. My presentation was never commercial like others. I presented from the perspective of open source. I never feared saying that my project had bug because that is the spirit of open source to freely accept fault to allow people to correct it through collaborative practice as different to cathedral style where you hide your bugs behind bars and only show your project merits. This was not normal project presentation where people try to amuse venture capitalists and fool them with features while hiding them the main bugs which are later uncovered by user while using (just think of windows XP!!). I focused on explaining my system model because that was what my system was. People could look at it and easily pin point errors in it so that they could later fix it (well immediately I got many suggestions from audience, judges and other participants of how to change architecture to make it more robust). Even one of the judges i.e. Prof Timila Yami Ma’am agreed on it. Fifth, my project concept was unique and parallel with open source philosophy. As explain later by D2 representative judge Mr. Hitesh Karki, open source development is also a peer to peer collaboration between developers which was what my projects all about. This was missing with others though my implementation was not as perfect as others.


RMT: 9) What is your future development plan for the project?


Sumit: As mentioned earlier, there are many domains in which this project can be forwarded. After my demo experience, I have realized that interfacing with VLC is pretty problem. Instead JMF will be a better solution. The JMF must be used to capture and stream online at broadcasting side. Also, at peer side it must receive packets and play. Also, JXTA is much better than Pastry because it can cross Firewall boundaries much easier. Work has begun in newer versions of JXTA to include streaming file sharing. So, it is quite possible to do same using JXTA. Third important thing to do is to expand the project to make it run on other OS besides XP. My college PC was XP. So, I had only single option to develop it in XP only especially in such a short time. But, I realized the problem during demo where most of available PC was ubuntu. My system is Java and can run in any system. The problem is VLC and especially version 0.8.6c with which my system has to interface at both broadcasting and peer side. Once VLC is removed then this job will be default done. Besides, I would mention some that I got as feedback after presentation. One was dealing with peer failures and more specifically with fraud peers that try to cheat the system. If any peer stops in middle then immediate peer stop getting packets too. My current effort helps in detecting it and automatically informing user about it. For future, system must automatically allow the stopped peer to be removed and the immediate peer to receive stream from peer streaming to the stopped peer. For this many decisions has to be taken as how it could be achieved i.e. locally by peers or it involve broadcaster also. About fraud peer who do not serve new peer, the system model requires to be more fault tolerant. In such cases, decisions like allowing broadcaster to intervene or local removal has to be taken. Thus, there are many dimensions for developing this project. It is only help from developers that will make it possible in the future.


RMT: 10) Do you have any suggestion for anyone thinking to take part in such competition in future?

Sumit: My very suggestions from my own experience are; this is open source competition. Your main aim is to bring about the open source spirit in project to win. Open source spirit means not only using open source tools in your project. It means much more. Open source spirit is projecting the need for open collaboration. This can be done by being ready to provide anyone interested in the project with the necessary documents for contributing into it. D2Labs provided such a wonderful platform for open source that I really appreciate it. Each new activity can be listed in To Do list and each new bug can be listed in bug list. The presentation should be to attract DEVELOPERS and not just CUSTOMERS or USERS. With commercial project, customers would be every thing but for open source the power to attract developers into it is what important. Your system need not be perfectly correct because in this imperfect world nothing is perfect. So, just accept it and do not hide it or feel shame for it. If your system was perfect why would you open source it – just for money sake or competition sake. No, because your imperfect system has to become perfect through collaborative works that open source can only provide. You must present in this sense without fear and never ever think of winning. Taking part itself is big thing because you are providing rest a path to follow. If your project gets developers working onto it, even if you don’t win it does not matters. You have won actual war – war against very PROPRIETARY concept in developer’s mind that killed software engineering for decades. After my presentation, when I got feedback for judges, participants and audience (D2 volunteers) alike I felt like real winner because feedbacks were what I would be taking with me for future development of my project and refinement of my concept.


RMT: 11) Do you have any blog, tweet or website where you actively contribute to development of open source project?


Sumit: My blog is http://sumitshresblog.blogspot.com/ though it is not regular but I will try discussing new ideas on open source as they come.

My tweeter is http://www.twitter.com/sumitshresth


My D2Labs Live event Broadcast using P2P project site is http://collaborate.d2labs.org/projects/p2plivebdcast/


My First ever open source project Frontend for MySQL where I still regularly work is http://sourceforge.net/projects/frontend4mysql/


My Email id is sumitshresth@rocketmail.com or rhs4shr@gmail.com


I would like to thank Sumit for answering my questions in good depth. I wish him every success like in OSCN 2009 in all his future open source adventure. If anyone has any suggestions or questions then they can put it as comments to this blog.

Sunday, August 9, 2009

Wrong assumption can cost high

Aug 8th, 2009, I had good experience of wrong assumption. I made one assumption till yesterday that external projector will work easily when connected to VGA port of a Laptop. Yesterday's event proved me wrong.

Yesterday was last and grand final presentation of Open Software Challenge Nepal 2009 (OSCN 2009). saralScrum, my project, was one of top 10 selected for grand final. I prepared all my demo and presentation by customizing a live CD distribution called Puppy Linux. I was very happy thinking wow i don't need to configure any thing at presentation site. I thought i will put my live CD and bang i will be rolling in no time.

At presentation site, I got one Dell laptop to configure my demo and presentation. I booted the laptop with my live CD. I transferred my presentation file to hard disk of the laptop so that my presentation gets faster. I was ready in flash and very confident to give impressive presentation.

After long wait, I got my turn. I took the laptop to the stage. It was connected to a projector and tried to switch the display from laptop to the projector. Fn + F6. NO SIGNAL. Projected screen is BLANK blue screen. My heart sank. I could not believe my eyes. Desperately I pressed F6 and all other function keys few more time but no luck. It is not working. Some one told there may not be driver for that laptop. I had no idea.

I had to say sorry to audience and took laptop back to my desk. In my slot other projects are filled in. Mean time I quickly setup vnc server. Some another guy help me to find another laptop and connected to my laptop with vnc client. It worked but there was still one problem. vnc client showed just a part of my remote desktop screen. It was looking odd. But i had no choice as it was the only option left if i am going to present.

I went back to stage thinking something is better than nothing. I gave my presentation with vnc client showing remote screen by scrolling the screen. Organizer told me to make it short as Chief guest is about to arrive and i don't have much time left. I did my presentation on great hurry. I could not connect to the audience well. After presentation i was supposed to show the demo and face Q/A session but stage anchor told me to stop. Many thanks to audience who supported me and asked anchor to give some time. Then i showed the demo of my project. It is also in very great hurry and I was able to show just a few screens. Final times up and i don't have time left for Q/A session.

Finally results is announced and I lost the competition. In my thinking one of the reason for my failure is my poor presentation. Reason of it is, yes you know it, my wrong assumption.